이 글은 정수원님의 Infrean 강의를 학습한 내용을 정리하여 작성합니다.
인증 관리자: AuthenticationManager
- AuthenticatonProvider 목록 중에서 인증 처리 요건에 맞는 AuthenticationProvicer를 찾아 인증처리를 위임한다.
- 만약 사용자가 Form 인증 방식으로 로그인 했을 경우 ProviderManager가 Authentication 객체를 받은 뒤
Form 인증 방식을 처리 할 수 있는 Dao AuthenticationProvider에게 전달해 인증 처리를 위임한다. - Form 인증이 아닌 RememberMe 인증 방식으로 로그인 한 경우 RememberMe AuthenticationProvider에게 인증 처리를 위임한다.
- 만약 사용자가 Oauth 인증을 통해 로그인을 했는데 Oauth 인증을 할 수 있는 ProviderManager가 존재하지 않는 경우, ProviderManager는 parent 속성에 저장되어 있는 ProviderManager를 따라 Oauth 인증을 처리할 수 있는 Provider를 찾기 위해 탐색을 시작한다.
- 만약 사용자가 Form 인증 방식으로 로그인 했을 경우 ProviderManager가 Authentication 객체를 받은 뒤
- 부모 ProviderManager를 설정해 AuthenticationProvider를 계속 탐색 할 수 있다.
- Linked 형태로 부모와 자식간의 관계를 형성할 수 있다.
- 자식에게 적절한 AuthenticationProvider를 찾지 못할 경우 계속 부모로 탐색하여 찾는 과정을 반복한다.
- AuthenticationManagerBuilder를 사용해 스프링 시큐리티의 초기화 과정에서 설정한 기본 Parent 관계를 변경해야 권한 필터에서 재 인증 시 모든 AuthenticationProvider를 탐색할 수 있다.
'스프링 시큐리티 > 스프링 시큐리티 주요 아키텍처 이해' 카테고리의 다른 글
인가 개념 및 필터 이해: Authorization, FilterSecurityInterceptor (0) | 2023.02.10 |
---|---|
인증 처리자 - AuthenticationProvider (0) | 2023.02.08 |
인증 흐름 이해 - AuthenticationFlow (0) | 2023.01.31 |
인증 저장소 필터 - SecurityContextPersistenceFilter (0) | 2023.01.31 |
인증 저장소 - SecurityContextHolder, SecurityContext (0) | 2023.01.31 |