인프런 커뮤니티 질문&답변
빈 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);
}
}
메소드 인자로 AuthenticationManagerBuilder랑 Authenticationconfiguration을 주입 받아서 수동으로 parent Manager가 가진 Provider를 삭제하고 추가하는 작업을 하지 말고,
그냥 안전하게, 대체되었던 DaoAuthenticationProvider를 authenticationProvider()로 다시 추가하면 안 되나요?
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
매콤한각설탕님께서 질문 주셨네요.
SecurityFilterChain 구성 시, 별도로 AuthenticationManagerBuilder나 AuthenticationConfiguration을 사용하여 parent Manager의 Provider를 삭제하고 추가하는 방식을 피하고자 하신다면, DaoAuthenticationProvider를 직접 추가하는 방법 역시 가능합니다.
사실상 코드 상에서도 DaoAuthenticationProvider를 authenticationProvider()에 다시 추가해 놓으셨습니다. 이렇게 구현하시면 CustomAuthenticationProvider와 DaoAuthenticationProvider가 모두 사용됩니다.
이처럼 SecurityFilterChain 내에서 authenticationProvider()를 통해 필요한 AuthenticationProvider들을 지정하고 사용하시면 Spring Security에서 여러 가지 인증 경로를 관리하는 데 문제가 없습니다.
계속해서 학습하시면서 문제가 생기시면 언제든지 질문해 주세요!
도움이 되셨기를 바랍니다. 관련된 문서를 참고하시려면 아래의 링크를 사용하세요:
Spring Boot Reference Documentation - Security
감사합니다.





