AuthenticationManager
• 인증 필터로부터 Authentication 객체를 전달 받아 인증을 시도하며 인증에 성공할 경우
사용자 정보, 권한 등을 포함한 완전히 채워진 Authentication 객체를 반환한다
• AuthenticationManager 는 여러 AuthenticationProvider 들을 관리하며
AuthenticationProvider 목록을 순차적으로 순회하며 인증 요청을 처리한다
• AuthenticationProvider 목록 중에서 인증 처리 요건에 맞는 적절한 AuthenticationProvider 를 찾아 인증처리를 위임한다
• AuthenticationManagerBuilder 에 의해 객체가 생성되며 주로 사용하는 구현체로 ProviderManager 가 제공된다
AuthenticationManagerBuilder
• AuthenticationManager 객체를 생성하며 UserDetailsService 및 AuthenticationProvider 를 추가할 수 있다
• HttpSecurity.getSharedObject(AuthenticationManagerBuilder.class) 를 통해 객체를 참조할 수 있다
AuthenticationManager 흐름도
form인증으로 인증 요청이 온다면 ProviderManager는 해당 인증을 해결할수있는 Provider를 선택해야한다
[form인증의 경우 -> DaoAuthenticationProvider]
[인증필터에서 Authentication 객체를 생성하고 ProviderManager에게 인증요청을 하면 ProviderManager가 해당 인증을 처리할 수 있는 Provider에게 Authentication 객체를 위임한다. 인증 후 Provider는 Authenticaiton을 새로만든다.]
• 선택적으로 부모 AuthenticationManager 를 구성할 수 있으며 이 부모는 AuthenticationProvider 가 인증을 수행할 수 없는 경우에 추가적으로 탐색할 수 있다
• 일반적으로 AuthenticationProvider 로 부터 null 이 아닌 응답을 받을 때 까지 차례대로 시도하며 응답을 받지 못하면 ProviderNotFoundException과 함께 인증이 실패한다
AuthenticationManager 사용 방법 HttpSecurity 사용
AuthenticationManager 사용 방법 직접 생성
'인프런 > 스프링 시큐리티 완전 정복 [6.x 개정판]' 카테고리의 다른 글
10) 사용자 상세 서비스 - UserDetailsService , 사용자 상세 -UserDetails (1) | 2024.10.17 |
---|---|
9) 인증 제공자 - AuthenticationProvider (1) | 2024.10.16 |
7) 인증 아키텍처 - Authentication , SecurityContext / SecurityContextHolder (1) | 2024.10.14 |
6) 인증 프로세스 - logout() ,RequestCache / SavedRequest (0) | 2024.10.11 |
5) 인증프로세스 - BasicAuthenticationFilter , rememberMe() , RememberMeAuthenticationFilter, anonymous() (3) | 2024.10.10 |
댓글