我手边有一个最奇怪的问题。通过spring-seucrity-oauth(2)保护应用程序,身份验证突然停止工作,我们无法找到问题所在。
实际上我们可以。注入太晚的身份验证管理器。配置AuthorizationServerEndpointsConfigurer
时,尚未注入authenticationManager
。因此,AuthorizationServerEndpointsConfigurer创建了一个没有ResourceOwnerPasswordTokenGranter的tokenGranters列表。
我们不知道可能导致此行为的原因或我们如何解决或解决此问题。
感谢任何建议或帮助!
AuthorizationServerConfiguration.class :
@EnableAuthorizationServer
@Configuration
protected static class AuthorizationServerConfiguration extends AuthorizationServerConfigurerAdapter {
@Inject
private AuthenticationManager authenticationManager;
@Override
public void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception {
endpoints
.tokenStore(tokenStore)
.prefix("/api")
.authenticationManager(authenticationManager); // when this method is called authenticationManager is null
}
@Override
public void configure(ClientDetailsServiceConfigurer clients) throws Exception {
// when I check authentionManager here, it is injected
}
这是身份验证管理器bean的公开和创建方式。
SecurityConfigurer.class:
@Configuration
@EnableWebSecurity
public class SecurityConfigurer extends WebSecurityConfigurerAdapter {
@Override
@Bean
public AuthenticationManager authenticationManagerBean() throws Exception {
return super.authenticationManagerBean();
}