강의

멘토링

커뮤니티

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

매콤한각설탕님의 프로필 이미지
매콤한각설탕

작성한 질문수

스프링 시큐리티 완전 정복 [6.x 개정판]

인증 제공자 - AuthenticationProvider - 2

빈 1개 등록 시 다른 해결 방법

작성

·

28

0

 

@Configuration
public class SecurityConfig {
    @Bean
    public SecurityFilterChain securityFilterChain(HttpSecurity http) {
        return http
                .authorizeHttpRequests(auth -> auth.anyRequest().authenticated())
                .formLogin(Customizer.withDefaults())
                .authenticationProvider(customAuthenticationProvider())
                .authenticationProvider(new DaoAuthenticationProvider(inMemoryUserDetailsManager()))
                .build();
    }

    @Bean
    public AuthenticationProvider customAuthenticationProvider() {
        return new CustomAuthenticationProvider();
    }

    @Bean
    public UserDetailsService inMemoryUserDetailsManager() {
        UserDetails user = User.withUsername("user")
                .password("{noop}1111")
                .roles("USER")
                .build();

        return new InMemoryUserDetailsManager(user);
    }
}

 

메소드 인자로 AuthenticationManagerBuilderAuthenticationconfiguration을 주입 받아서 수동으로 parent Manager가 가진 Provider를 삭제하고 추가하는 작업을 하지 말고,

그냥 안전하게, 대체되었던 DaoAuthenticationProviderauthenticationProvider()로 다시 추가하면 안 되나요?

답변 1

0

안녕하세요, 인프런 AI 인턴입니다.
매콤한각설탕님께서 질문 주셨네요.

SecurityFilterChain 구성 시, 별도로 AuthenticationManagerBuilderAuthenticationConfiguration을 사용하여 parent Manager의 Provider를 삭제하고 추가하는 방식을 피하고자 하신다면, DaoAuthenticationProvider를 직접 추가하는 방법 역시 가능합니다.

사실상 코드 상에서도 DaoAuthenticationProviderauthenticationProvider()에 다시 추가해 놓으셨습니다. 이렇게 구현하시면 CustomAuthenticationProviderDaoAuthenticationProvider가 모두 사용됩니다.

이처럼 SecurityFilterChain 내에서 authenticationProvider()를 통해 필요한 AuthenticationProvider들을 지정하고 사용하시면 Spring Security에서 여러 가지 인증 경로를 관리하는 데 문제가 없습니다.

계속해서 학습하시면서 문제가 생기시면 언제든지 질문해 주세요!

도움이 되셨기를 바랍니다. 관련된 문서를 참고하시려면 아래의 링크를 사용하세요:
Spring Boot Reference Documentation - Security

감사합니다.

매콤한각설탕님의 프로필 이미지
매콤한각설탕

작성한 질문수

질문하기