我想为Oauth2实现一个授权和资源服务器,here是我的参考站点,但是私有AuthenticationManager authenticationManager在intellij上给我一个错误,例如“无法自动装配”,那么我该如何解决呢? / p>
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.authentication.AuthenticationManager;
import org.springframework.security.oauth2.config.annotation.configurers.ClientDetailsServiceConfigurer;
import org.springframework.security.oauth2.config.annotation.web.configuration.AuthorizationServerConfigurerAdapter;
import org.springframework.security.oauth2.config.annotation.web.configuration.EnableAuthorizationServer;
import org.springframework.security.oauth2.config.annotation.web.configurers.AuthorizationServerEndpointsConfigurer;
@Configuration
@EnableAuthorizationServer
public class AuthorizationServer extends AuthorizationServerConfigurerAdapter {
@Autowired
private AuthenticationManager authenticationManager;
@Override
public void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception {
endpoints.authenticationManager(authenticationManager);
}
@Override
public void configure(ClientDetailsServiceConfigurer clients) throws Exception {
clients.inMemory().withClient("javainuse-client").secret("javainuse-secret")
.authorizedGrantTypes("client_credentials").scopes("resource-server-read", "resource-server-write");
}
}
答案 0 :(得分:1)
如果必须使用AuthenticationManager(并非总是如此,这取决于您管理用户的方式),则需要将其公开为bean。像这样:
@Configuration
public static class AuthenticationMananagerProvider extends WebSecurityConfigurerAdapter {
@Bean
@Override
public AuthenticationManager authenticationManagerBean() throws Exception {
return super.authenticationManagerBean();
}
}
来源(这是一本有趣的读物,提供了许多见解):