development

봄 보안 AuthenticationManager 대 AuthenticationProvider?

big-blog 2021. 1. 8. 22:46
반응형

봄 보안 AuthenticationManager 대 AuthenticationProvider?


누군가 가 Spring Security에서 an AuthenticationManager과 an 의 차이점을 말할 수 있습니까 AuthenticationProvider?

그들은 어떻게 사용되며 어떻게 호출됩니다. 객체 를 인증하기 위해을 SecurityFilter호출 한다는 것이 내 이해 입니까? 그런데 그게 어디로 나오나요?AuthenticationManagerAuthenticationAuthenticationProvider

감사!


나는 AuthenticationManager영구 사용자 정보를 하나 이상의 AuthenticationProviders 에게 가져 오는 것을 위임 한다고 생각합니다 . 인증 공급자 ( DaoAuthenticationProvider, JaasAuthenticationProvider, LdapAuthenticationProvider, OpenIDAuthenticationProvider예 :)는 특정 사용자 정보 저장소에 액세스하는 데 특화되어 있습니다. 참조 설명서 의이 부분 에서 다른 내용이 언급됩니다 . 그것은 말한다 :

ProviderManager에 추가 AuthenticationProvider Bean을 등록 할 수 있으며 ref 속성이있는 요소를 사용하여이를 수행 할 수 있습니다. 여기서 속성 값은 추가하려는 제공자 Bean의 이름입니다.

즉, LDAP 데이터베이스에서 사용자를 찾는 것과 SQL 데이터베이스에서 찾는 것과 같이 여러 AuthenticationProvider를 지정할 수 있습니다.


참조에서

AuthenticationManager는 인터페이스 일 뿐이므로 구현은 우리가 선택한 모든 것이 될 수 있습니다.

Spring Security의 기본 구현은 ProviderManager라고하며 인증 요청 자체를 처리하는 대신 구성된 AuthenticationProvider 목록에 위임하며, 각 목록은 인증을 수행 할 수 있는지 확인하기 위해 차례로 쿼리됩니다. 각 공급자는 예외를 발생 시키거나 완전히 채워진 인증 개체를 반환합니다.

또한 AuthenticationManager, ProviderManager 및 AuthenticationProvider의 소스 코드를 확인하면 명확하게 볼 수 있습니다.

ProviderManager는 AuthenticationManager 인터페이스를 구현하며 AuthenticationProviders 목록을 가지고 있습니다. 따라서 사용자 지정 인증 메커니즘을 사용하려면 새 AuthenticationProvider를 구현해야합니다.

참조 URL : https://stackoverflow.com/questions/2323377/spring-security-authenticationmanager-vs-authenticationprovider

반응형