我正在使用Spring Boot 2.0(利用Spring Security 5.0)。我正在尝试将自定义AuthenticationProvider添加到我的WebSecurityConfigurerAdapter子类中的AuthenticationManager。如果我覆盖configure(AuthenticationManagerBuilder)
方法来提供我的新提供程序,那么我不知道如何将AuthenticationManager作为bean检索。
例如:
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception
{
auth.authenticationProvider(customAuthenticationProvider);
}
}
其中customAuthenticationProvider
实现AuthenticationProvider
。
在Spring docs中,似乎指出两者不兼容:
5.8.4 AuthenticationProvider您可以通过将自定义AuthenticationProvider公开为bean来定义自定义身份验证。例如, 以下将自定义身份验证假设 SpringAuthenticationProvider实现AuthenticationProvider:
[注意]仅在AuthenticationManagerBuilder没有时使用 已填充
实际上,如果我尝试使用:
检索AuthenticationManager bean@Bean
public AuthenticationManager authenticationManager() throws Exception {
return super.authenticationManagerBean();
}
然后永远不会调用configure()
方法。
那么如何将我自己的自定义提供程序添加到默认的提供程序列表中,并且仍然能够检索AuthenticationManager?
答案 0 :(得分:2)
您可以覆盖WebSecurityConfigurerAdapter.authenticationManagerBean()
方法并使用@Bean
注释对其进行注释
@Bean
@Override
public AuthenticationManager authenticationManagerBean() throws Exception {
return super.authenticationManagerBean();
}
没有Spring Boot 5.0,最新版本是Spring Boot 2.0。我相信你在谈论Spring Security 5.0。