- 클라이언트가 로그인 요청
- Form 인증 방식 요청이면 UsernamePasswordAuthenticationFilter가 로그인 요청을 받아서 Authentication 인증 객체를 생성한다.
- Authentication : username + password 담은 인증 전 토큰 객체 생성
- UsernamePasswordAuthenticationFilter는 AuthenticationManager에 인증 객체를 전달하며 인증 처리를 맡긴다.
- AuthenticationManager는 AuthenticationProvider에게 실제 인증을 위임한다.
- AuthenticationProvider가 여러개 있는데 그 중 하나에 실제 인증을 위임하는 것이 manager의 역할
- AuthenticationProvier는 UserDetailsService에 있는 loadUserByUsername(username)을 호출하면서 username을 전달하면서 User객체를 요구한다.
- UserDetailsService는 Repository에 findById()를 통해서 User객체를 조회하고 UserDetails 타입으로 반환한다.
- UserDetailsService는 Repository로부터 받은 UserDetails 객체와 AuthenticationProvider에게 받은 Authentication 인증 객체의 password를 비교해서 인증 성공, 실패를 판단한다
- 성공하면 AuthenticationProvider는 UserDetails + authorities를 담은 Authentication 인증 객체를 생성해서 AuthenticationManager에게 반환한다.
- AuthenticationManager는 인증 객체를 UsernamePasswordAuthenticationFilter에게 반환한다.
- UsernamePasswordAuthenticationFilter는 SecurityContext에 인증 객체를 저장한다.
'개발 관련 지식 > Spring Framework Basic' 카테고리의 다른 글
Security - Authorization 인가 개념 (0) | 2022.04.03 |
---|---|
Security - Authentication(인증) 개념 (0) | 2022.04.03 |
Security 인가 API 표현식 (0) | 2022.03.31 |
Security - RememberMeAuthenticationFilter (0) | 2022.03.29 |
Security - LogoutFilter (0) | 2022.03.29 |