
1. http로 로그인 요청
2. 로그인 인증 요청이라면 UsernamePasswordAuthenticationFilter(이하 AuthencicationFilter)가 요청을 가로채 전달된
username, password 파라미터를 이용해 UsernamePasswordAuthenticationToken 인증 객체를 만든다.
3. 인증 객체를 인증하기 위한 AuthenticationManager 에 넘기고 인증을 위임한다.
4. AuthenticationManager 를 구현한 ProviderManager는 스프링 시큐리티가 기본적으로 제공하는 AuthenticationProviders에 인증 객체를 전달한다.
5. 인증에 사용되기 적합한 AuthenticationProvider 가 존재하면(여기는 DaoAuthenticationProvider) UserDatailsService 에 인증 객체를 전달한다.
6. UserDetailsService 에서 인증 객체의 정보를 통해 DB에서 일치하는 사용자 정보를 찾고 UserDetails객체를 만든다.
7. AuthenticationProvider는 UserDetails와 UsernamePasswordAuthenticationToken를 비교해 인증에 성공하면 ProviderManager에 권한을 담은 새 UsernamePasswordAuthenticationToken을 만들어 전달한다.
8. ProviderManager는 검증된 인증 객체를 AuthenticationFilter에게 전달한다.
9. AuthenticationFilter는 검증된 인증 객체를 SecurityContextHolder의 SecurityContext에 저장하고 나머지 SecurityFilterChain은 무시하고 SercurityFilterChain을 종료한다.
'java > spring' 카테고리의 다른 글
| ResponseDto 사용이유 (0) | 2022.12.05 |
|---|---|
| Spring Sockets (0) | 2022.11.05 |
| 스프링 부트 동작 원리 (0) | 2022.10.09 |
| Spring IoC (0) | 2022.10.09 |
| DI(Dependency Injection) (0) | 2022.10.09 |
댓글