인프런 커뮤니티 질문&답변

개발중님의 프로필 이미지

작성한 질문수

스프링 시큐리티

7) 인증 관리자 : AuthenticationManager

Provider 선택 문의

작성

·

158

0

안녕하세요. 강사님

AbstractJaasAuthenticationProvider class도 AbstractUserDetailsAuthenticationProvider class도 

UsernamePasswordAuthenticationToken 을 처리할 수 있는데, 어떻게 DaoAuthenticationProvider 만 선택되어 처리되는 건가요? 

감사합니다

답변 1

0

정수원님의 프로필 이미지
정수원
지식공유자

스프링 시큐리티가 초기화 되면서 기본적으로 등록하는 AuthenticationProvider 가 있는데 그 중 하나가 DaoAuthenticationProvider 입니다.

그리고 이것은 Form 인증 때 사용되어 집니다.

말씀하신 AbstractJaasAuthenticationProvider 를 사용하도록 인증방식을 설정해야 스프링 시큐리티가 AbstractJaasAuthenticationProvider 를 등록할 것입니다.

즉 JAAS(Java Authentication and Authorization Service) 인증방식을 설정클래스에 지정해야 함을 의미합니다

그렇게 되면 스프링 시큐리티가 AbstractJaasAuthenticationProvider 의 구현체인 JaasAuthenticationProvider 를 등록해서 JAAS 인증을 처리하게 됩니다.

그리고 만약 Form 인증과 JAAS 인증을 동시에 설정했다면 스프링 시큐리티가 인증방식의 여러 조건을 검사한 후에 가장 적합한 인증방식 하나를 결정해서 처리하게 됩니다.

참고로 AbstractUserDetailsAuthenticationProvider 는 DaoAuthenticationProvider 의 부모 클래스입니다.