728x90
반응형

1. 로그인 요청
- 사용자가 Form을 통해 로그인 정보가 담긴 요청을 보냄
2. Authentication 생성
- AuthenticationFilter가 요청을 받아서 UsernamePasswordAuthenticationToken(Authentication 구현 객체) 생성
3. Authentication 전달
- AuthenticationManager가 Authentication을 전달받음
- AuthenticationManager는 실제 인증 역할을 하는 AuthenticationProvider를 관리함
4. 인증을 위한 Authentication 전달
- AuthenticationFilter로 부터 Authentication 객체를 받아 인증 처리를 할 수 있는 AuthenticationProvider에게 인증 역할을 위임함
5. UserDetails 조회
- UserDetailsService를 구현한 클래스에서 loadUserByUsername 메서드를 오버라이딩해서 사용자 정보를 조회함
6. Credential 조회
- 저장소에서 사용자의 Credential을 포함한 정보를 조회함
7. UserDetails 생성
- loadUserByUsername 메서드에서 조회한 정보를 기반으로 UserDetails 객체 생성
8. AuthenticationProvider로 UserDetails 전달
- AuthenticationProvider가 자격 증명을 수행할 수 있도록 UserDetails 객체를 생성해서 전달함
9. 인증된 Authentication 생성 및 전달
- AuthenticationProvider로 UserDetails를 전달하고 PasswordEncoder를 이용해 UserDetail에 포함된 비밀번호와 전달받은 Authentication(인증 되지 않음) 안에 포함된 비밀번호가 일치하는지 검증함
이때, (a) 과정을 거쳐 Authentication 검증을 수행함 (Lock 상태 여부/비밀번호 일치/회원가입 승인 여부)

- [9] 검증에 성공하면 UserDetails를 이용해 인증된 Authentication을 생성함
- [10 - 11] AuthenticationManager를 거쳐 UsernamePasswordAuthenticationFilter로 인증된 Authentication을 전달함
10. 인증된 Authentication을 SecurityContext에 저장
- [12] SecurityContextHolder를 이용해 SecurityContext에 인증된 Authentication을 저장함
728x90
반응형
댓글