java - 为身份验证管理器自动装配
问题描述
我想为 Oauth2 实现授权和资源服务器,这是我的参考站点,但是私有 AuthenticationManager authenticationManager 在 intellij 上给了我一个错误,例如“无法自动装配”,那么我该如何解决?
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");
}
}
解决方案
如果您必须使用 AuthenticationManager(并非总是如此,这取决于您管理用户的方式),则需要将其公开为 bean。像这样:
@Configuration
public static class AuthenticationMananagerProvider extends WebSecurityConfigurerAdapter {
@Bean
@Override
public AuthenticationManager authenticationManagerBean() throws Exception {
return super.authenticationManagerBean();
}
}
来源(这是一本有趣的读物,提供了许多见解):
推荐阅读
- java - 通过 SSL 在同一个应用程序中连接多个 WMQ QuMgrs
- php - Laravel:使用 Passport Oauth Token 注册和登录(ReflectionException:控制器不存在)
- php - 原子部署期间的 Doctrine 元数据缓存
- dart - 错误:使用 ScopedModel.of 时找不到正确的 ScopedModel
(语境) - ruby - 获取用户输入x次并输出所有狗数据集
- angular - 如何从复选框中获取价值?
- regex - 在 Nginx 中用字符串替换字符
- python - 修改 datetime.now() 标准输出
- python - Python:根据实时传感器输入创建暂停持续时间的蜂鸣声反馈
- vhdl - HDL中的默认分配是否可靠?