봄 보안 AuthenticationManager 대 AuthenticationProvider?
누군가 가 Spring Security에서 an AuthenticationManager
과 an 의 차이점을 말할 수 있습니까 AuthenticationProvider
?
그들은 어떻게 사용되며 어떻게 호출됩니다. 객체 를 인증하기 위해을 SecurityFilter
호출 한다는 것이 내 이해 입니까? 그런데 그게 어디로 나오나요?AuthenticationManager
Authentication
AuthenticationProvider
감사!
나는 AuthenticationManager
영구 사용자 정보를 하나 이상의 AuthenticationProvider
s 에게 가져 오는 것을 위임 한다고 생각합니다 . 인증 공급자 ( DaoAuthenticationProvider, JaasAuthenticationProvider, LdapAuthenticationProvider, OpenIDAuthenticationProvider
예 :)는 특정 사용자 정보 저장소에 액세스하는 데 특화되어 있습니다. 참조 설명서 의이 부분 에서 다른 내용이 언급됩니다 . 그것은 말한다 :
ProviderManager에 추가 AuthenticationProvider Bean을 등록 할 수 있으며 ref 속성이있는 요소를 사용하여이를 수행 할 수 있습니다. 여기서 속성 값은 추가하려는 제공자 Bean의 이름입니다.
즉, LDAP 데이터베이스에서 사용자를 찾는 것과 SQL 데이터베이스에서 찾는 것과 같이 여러 AuthenticationProvider를 지정할 수 있습니다.
봄 참조에서
AuthenticationManager는 인터페이스 일 뿐이므로 구현은 우리가 선택한 모든 것이 될 수 있습니다.
Spring Security의 기본 구현은 ProviderManager라고하며 인증 요청 자체를 처리하는 대신 구성된 AuthenticationProvider 목록에 위임하며, 각 목록은 인증을 수행 할 수 있는지 확인하기 위해 차례로 쿼리됩니다. 각 공급자는 예외를 발생 시키거나 완전히 채워진 인증 개체를 반환합니다.
또한 AuthenticationManager, ProviderManager 및 AuthenticationProvider의 소스 코드를 확인하면 명확하게 볼 수 있습니다.
ProviderManager는 AuthenticationManager 인터페이스를 구현하며 AuthenticationProviders 목록을 가지고 있습니다. 따라서 사용자 지정 인증 메커니즘을 사용하려면 새 AuthenticationProvider를 구현해야합니다.
'development' 카테고리의 다른 글
git merge : 보관하고 싶은 파일 제거! (0) | 2021.01.08 |
---|---|
여러 javascript / css 파일 : 모범 사례? (0) | 2021.01.08 |
원시 포인터에서 shared_ptr 만들기 (0) | 2021.01.08 |
UISearchBar CGContext 오류 (0) | 2021.01.08 |
Visual Studio 2013 프로젝트의 새로운 Startup.cs 파일은 무엇입니까? (0) | 2021.01.08 |