인프런/스프링 시큐리티 완전 정복 [6.x 개정판]

8) 인증 관리자 - AuthenticationManager

backend dev 2024. 10. 15.

 

AuthenticationManager

 

• 인증 필터로부터 Authentication 객체를 전달 받아 인증을 시도하며 인증에 성공할 경우

사용자 정보, 권한 등을 포함한 완전히 채워진 Authentication 객체를 반환한다

 

AuthenticationManager 는 여러 AuthenticationProvider 들을 관리하며

AuthenticationProvider 목록을 순차적으로 순회하며 인증 요청을 처리한다

 

AuthenticationProvider 목록 중에서 인증 처리 요건에 맞는 적절한 AuthenticationProvider 를 찾아 인증처리를 위임한다

 

AuthenticationManagerBuilder 에 의해 객체가 생성되며 주로 사용하는 구현체로 ProviderManager 가 제공된다

 

 

AuthenticationManagerBuilder

AuthenticationManager 객체를 생성하며 UserDetailsServiceAuthenticationProvider 를 추가할 수 있다

• 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 사용 방법­ 직접 생성

 

 

 

댓글