ProviderManager
AuthenticationProvider
를 구현한 구현 클래스가 Spring Bean으로 등록되어 있을 때 해당 AuthenticationProvider
를 이용해서 인증을 진행하는 과정 정리을 정리했다.
- Spring Security가 UsernamePasswordAuthenticationToken 또는 다른 인증 토큰을 받는다.
- AuthenticationManager가 인증 토큰을 받아 ProviderManager를 호출한다.
- ProviderManager는 등록된 AuthenticationProvider 목록을 반복하면서, supports() 메서드를 호출하여 해당 AuthenticationProvider가 인증 토큰을 처리할 수 있는지 확인한다.
- 인증 토큰을 처리할 수 있는 AuthenticationProvider를 찾으면, 해당 Provider의 authenticate() 메서드를 호출하여 인증을 진행한다.
- AuthenticationProvider는 인증에 필요한 사용자 정보를 가져와 인증을 수행
- 인증이 성공하면, AuthenticationProvider는 UserDetails 객체를 생성하여 Authentication 객체에 저장
- 인증에 성공한 Authentication 객체는 SecurityContextHolder를 통해 현재 스레드와 관련된 SecurityContext에 저장