Spring-Security의 기본 AuthenticationManager는 무엇입니까? 어떻게 인증합니까?
다음 빈이 정의되어 있습니다.
<sec:authentication-manager alias="authenticationManager">
<sec:authentication-provider
user-service-ref="userDetailsService" />
</sec:authentication-manager>
여기서 Spring은 AuthenticationManager
.
내 Java 코드에는 다음이 있습니다.
@Resource(name = "authenticationManager")
private AuthenticationManager authenticationManager; // specific for Spring Security
public boolean login(String username, String password) {
try {
Authentication authenticate = authenticationManager.authenticate(new UsernamePasswordAuthenticationToken(username, password));
if (authenticate.isAuthenticated()) {
SecurityContextHolder.getContext().setAuthentication(authenticate);
return true;
}
}
catch (AuthenticationException e) {
}
return false;
}
여기 AuthenticationManager.authenticate(...)
가 호출됩니다. 그러나 AuthenticationManager
기본적 으로 Spring의 어떤 구현이 사용되는지, 그리고 authenticate(...)
인증을 위해 무엇 을하는지 알고 싶습니다 (즉, 사용자 이름이 암호와 일치하는지 확인).
설명해 주시겠습니까?
이는 AuthenticationManager
인증 공급자를위한 컨테이너 일 뿐이며 모두에게 일관된 인터페이스를 제공합니다. 에서는 대부분의 경우, 기본은 AuthenticationManager
충분한 이상입니다.
전화 할 때
.authenticate(new UsernamePasswordAuthenticationToken(username, password))`
을 UsernamePasswordAuthenticationToken
default 로 전달합니다. 을 AuthenticationProvider
사용하여 userDetailsService
사용자 이름을 기반으로 사용자를 가져오고 해당 사용자의 비밀번호를 인증 토큰의 비밀번호와 비교합니다.
일반적으로 각각에 대해 AuthenticationManager
일종의 패스 AuthenticationToken
를 수행하고 각각 AuthenticationProviders
검사하고 인증에 사용할 수있는 경우 "Authenticated", "Unauthenticated"또는 "Could not authenticate"(이 공급자가 토큰을 처리하는 방법을 몰랐으므로 처리시 전달되었음을 나타냅니다.)
이것은 LDAP 또는 Active Directory 서버 또는 OpenID에 대한 인증과 같은 다른 인증 체계를 연결할 수 있도록하는 메커니즘이며 Spring Security 프레임 워크 내의 주요 확장 점 중 하나입니다.
Spring Security는 하나의 실제 AuthenticationManager
구현 만 제공합니다 .
org.springframework.security.authentication.ProviderManager
이것은 AuthenticationProvider
인증 작업에 다른 것을 사용 합니다.
는 AuthenticationManagerBeanDefinitionParser
구문 분석 할 책임이 <sec:authentication-manager>
자사의 자바 문서 상태를 :
네임 스페이스 구성에서 사용하는 중앙 ProviderManager를 등록하고 별칭 구성을 허용하여 사용자가 자신의 Bean에서 참조하고 이름의 출처를 명확하게 볼 수 있도록합니다.
ProviderManager
지정된 제공을 작성 하고 추가합니다. xml에 제공이 지정되지 않은 경우 NullAuthenticationProvider
. 이것은 최소한 구성 예외를 방지하는 것보다 주목하는 공급자입니다.
에서 봄 보안 문서 도구 :
Spring Security의 기본 구현은 ProviderManager 라고 하며 인증 요청 자체를 처리하는 대신 구성된 AuthenticationProvider 목록에 위임하며 , 각 목록은 인증 을 수행 할 수 있는지 확인하기 위해 차례로 쿼리됩니다. 각 공급자는 예외를 발생 시키거나 완전히 채워진 인증 개체를 반환 합니다.
ProviderManager 에 대한 정보 는 Topical Guide-Spring Security Architecture 에서도 찾을 수 있습니다 .
가장 일반적으로 사용되는 구현 의 AuthenticationManager는 이다 의 ProviderManager 의 쇄에있는 델리게이트 의 AuthenticationProvider의 인스턴스. 의 AuthenticationProvider는 같은 비트입니다 AuthenticationManager에 있지만, 그것은 주어진 지원하는 경우 쿼리에 대한 호출을 허용하는 별도의 방법이 인증 유형을 ...
'programing' 카테고리의 다른 글
Mac OS X에서 마우스 가속 비활성화 (0) | 2020.12.31 |
---|---|
통화 기호없이 통화 서식 지정 (0) | 2020.12.30 |
자바 스크립트 함수, 메소드 등에 세미콜론을 자동으로 추가하도록 webstorm을 설정하려면 어떻게해야합니까? (0) | 2020.12.30 |
SCSS는 인라인 주석을 지원합니까? (0) | 2020.12.30 |
캔버스를 사용하지 않고 JavaScript에서 Base-64 이미지 크기 조정 (0) | 2020.12.30 |