Spring Security 설정시 아래 처럼 "WebSecurityConfigurerAdapter"를 상속받은 Security Config Class를 만들고 그 안에서 인증을 담당하는 AuthenticationManager를 생성하기 위해 authenticationManagerBean()을 상속받아 사용하였다.
이 때, 해당 Bean을 외부에서 사용하기 위하여 @Bean 어노테이션을 사용하였다.
@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(securedEnabled = true, prePostEnabled = true)
public class SecurityConfig extends WebSecurityConfigurerAdapter {
//Bean을 AUTHENTICATION_MANAGER에 매칭
@Bean(name = BeanIds.AUTHENTICATION_MANAGER)
@Override
public AuthenticationManager authenticationManagerBean() throws Exception {
return super.authenticationManagerBean();
}
}
하지만 다음과 같은 에러를 뱉어냈다.
해당 에러를 디버깅 해보니, AuthenticationManager를 사용하기 위해 Spring Security에서 제공하는 인증 수단인 UserDetailService를 구현한 클래스가 필요로 한것이였다.
UserDetailService를 구현한 UserService 클래스를 만들어보니 에러가 사라졌다!