목차
- Spring Security 권한 계층 사용하기 - @RoleHierarcy
- Spring Security - DelegateFilterProxy
- Spring Security - Remember Me와 관련된 인증 API - RememberMeConfigurer
- Spring Security - RembmerMeAuthenticationFilter
- Spring Security - SessionManagementFilter & ConcurrentSessionFilter
- Spring Security - 인가 API ExpressionUrlAuthorizationConfigurer
- Spring Security - Security 설정을 위한 WebSecurityConfigurerAdatper
- Spring Security - AuthenticationProvider
- Spring Security - AuthenticationManager
- Spring Security - UsernamePasswordAuthenticationFilter & AbstractAuthenticationProcessingFilter
- Spring Security - SecurityContextHolder 와 SecurityContext
- Spring Security - Authentication 객체
참고
Spring Security - AuthenticationManager
AuthenticationManager 는 인증을 진행하는 AuthenticationProvider 객체들을 관리하는 객체다. AuthenticationManager 는 AuthenticationProvider 에 인증을 위임하는 형태로 인증을 진행한다.
public interface AuthenticationManager { |
ProviderManager
AuthenticationManager의 가장 대표적인 구현체
ProviderManager hierarchy
각 ProviderManager 에는 여러개의 AuthenticationProvider 객체들이 있다. 만약 현재의 ProviderManager에 인증을 처리할 AuthenticationProvider 객체가 없을 경우 Parent ProviderManager로 이동하게 된다. Parent ProviderManager 역시 AuthenticationProvider 객체들이 존재한다. 여기서의 Parent는 상속 개념이 아니라 field값으로 parent를 가지고 있다.
ProviderManager를 통한 인증 진행
ProviderManager 객체는 인증을 직접 진행하는 하지 않는다. 대신, 인증을 위한 다양한 AuthenticationProvider 객체들을 가지고 있고 AuthenticationProvider 객체에게 인증을 위임하는 형태로 인증을 진행한다.
- ProviderManager에서 인증을 처리할 AuthenticationProvider 객체를 가져온다.
- 가져온 AuthenticationProvider를 이용해 Authentication객체 인증을 진행
- 인증이 완료 되면 새로운 Authentication 객체가 생성된다.
- 현재 적절한 AuthenticationProvider 객체가 없다면 부모 ProviderManager로 이동해 인증을 시도한다.
- 인증에 실패한 경우에는 ProviderNotFoundException 예외를 던진다.
- Authentication 객체로 부터 Credentials 정보를 지우고 생성된 Authentication 객체를 반환한다.
ProviderManager.java
|