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

조우현님의 프로필 이미지
조우현

작성한 질문수

스프링 시큐리티

4) DB 연동 인증 처리(1) : CustomUserDetailsService

GrantedAuthority의 역할 + 추가 질문

작성

·

970

·

수정됨

0

GrantedAuthority를 AccountContext 생성자 매개변수로 넘기게 되는데 이 클래스의 역할이 정확이 무엇인가요? 그냥 권한정보를 넘기기 위한 규격(?) 같은거라고 생각해도 될까요?

+

SecurityFilterChain으로 실습 진행중입니다.

궁금한점은 영상에서는 CustomUserDetailsService를 명시적으로 등록해주던데

최신버전에선 이렇게만 구현하면

@Bean
AuthenticationManager authenticationManager(AuthenticationConfiguration authConfiguration) throws Exception {
    return authConfiguration.getAuthenticationManager();
}

어떤 방식으로 CustomUserDetailsService가 자동으로 등록되는 건가요?

스프링시큐리티가 UserDetailsService를 구현한 클래스를 자동으로 찾아서 등록해주는 걸까요?

답변 1

0

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

  1. GrantedAuthority 는 사용자의 권한을 의미하기 때문에 AccountContext 의 부모격인 User 클래스에 GrantedAuthority 값을 전달해 주어야 합니다. 그리고 AccountContext 는 UserDetails 타입의 클래스로 정의가 되어야 하므로 생성할 때 생성자로 전달하고 있습니다.

     

  2. AuthenticationManager 는 필터로부터 인증 처리를 위임받는 클래스로서 내부적으로 AuthenticationProvider 를 가지고 있고 AuthenticationProvider 는 UserDetailsService 를 사용해서 사용자의 정보를 참조하는 식으로 관계를 맺고 있습니다. 이 때 직접 CustomDetailsService 를 등록하게 되면 시큐리티가 사용자가 등록한 CustomDetailsSerivce 를 우선적으로 사용해서 인증처리를 하도록 되어 있습니다.

조우현님의 프로필 이미지
조우현
질문자

감사합니다

조우현님의 프로필 이미지
조우현

작성한 질문수

질문하기