source

Spring-Security의 기본 Authentication Manager는 무엇입니까?인증 방법은 무엇입니까?

ittop 2023. 9. 9. 10:14
반응형

Spring-Security의 기본 Authentication Manager는 무엇입니까?인증 방법은 무엇입니까?

나는 다음과 같은 콩을 정의합니다.

<sec:authentication-manager alias="authenticationManager">
    <sec:authentication-provider
        user-service-ref="userDetailsService" />
</sec:authentication-manager>

여기 스프링은 기본 구현을 사용합니다.AuthenticationManager.

자바 코드에는 다음과 같은 것들이 있습니다.

@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스프링은 기본적으로 사용되며, 무엇이authenticate(...)인증하기 위해 (즉, 사용자 이름이 암호와 일치하는지 확인합니다).

이것에 대해 설명해 주시겠습니까?

AuthenticationManager인증 제공자를 위한 컨테이너일 뿐이며 모든 사용자에게 일관된 인터페이스를 제공합니다.대부분의 경우 기본값은AuthenticationManager충분합니다.

전화할때

.authenticate(new UsernamePasswordAuthenticationToken(username, password))`

그것은 지나갑니다.UsernamePasswordAuthenticationToken채무 불이행 상태로AuthenticationProvider, 이를 이용할 것입니다.userDetailsService사용자 이름을 기반으로 사용자를 가져오고 해당 사용자의 비밀번호를 인증 토큰의 비밀번호와 비교합니다.

일반적으로.AuthenticationManager어느 정도 지나갑니다AuthenticationToken그것의 전부에AuthenticationProviders그리고 각자 검사를 하고 인증에 사용할 수 있는 경우 "Authenticated(인증됨)", "Unauthenticated(인증되지 않음)" 또는 "Can't authenticated(인증할 수 없음)"(제공자가 토큰을 처리하는 방법을 몰랐기 때문에 해당 토큰을 처리할 수 없음을 나타냄) 표시와 함께 반환됩니다.

LDAP 또는 Active Directory 서버에 대한 인증이나 Open과 같은 다른 인증 체계를 연결할 수 있는 메커니즘입니다.ID, 및 는 Spring Security 프레임워크 내의 주요 확장 지점 중 하나입니다.

스프링 시큐리티는 단 하나의 리얼을 배송합니다.AuthenticationManager구현:

org.springframework.security.authentication.ProviderManager

사용법이 다릅니다.AuthenticationProvider인증 태스크의 경우

AuthenticationManagerBeanDefinitionParser파싱할 책임이 있습니다<sec:authentication-manager>자바 문서 상태:

네임스페이스 구성에서 사용하는 central ProviderManager를 등록하고 별칭을 구성할 수 있도록 하여 사용자가 해당 별칭을 자신의 빈에서 참조하고 이름의 출처를 명확하게 볼 수 있습니다.

그것은 창조합니다.ProviderManager지정된 제공을 추가합니다.xml에 제공하는 것이 지정되지 않으면 다음을 추가합니다.NullAuthenticationProvider. 이는 적어도 구성 예외를 방지하는 것보다는 주목하는 제공자입니다.

Spring Security 문서에서:

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

Provider Manager에 대한 정보는 Topic Guide - Spring Security Architecture에서 확인할 수 있습니다.

Authentication Manager에서 가장 일반적으로 사용되는 구현은 AuthenticationProvider 인스턴스 체인을 위임하는 Provider Manager입니다.Authentication Provider는 Authentication Manager와 약간 비슷하지만 호출자가 지정된 Authentication type을 지원하는지 쿼리할 수 있는 추가 메서드가 있습니다.

언급URL : https://stackoverflow.com/questions/9787409/what-is-the-default-authenticationmanager-in-spring-security-how-does-it-authen

반응형