java - CustomClientDetailsService 在我的 AuthorizationServer 上运行 6 次
问题描述
我让我的授权服务器使用 spring-oauth2 @EnableAuthorizationServer 的自动配置,其中我有自己的自定义 ClientDetailService 服务,我做得很好但我有一个问题,事实证明,在调用端点时,所述服务运行了 6 次 [ oauth / token],我不确定这是正常行为,但我希望它只执行一次,因为我在其中调用我的数据库。请您的支持。
我的配置:
@Configuration
@EnableAuthorizationServer
@Slf4j
public class AuthorizationServerConfigurer extends AuthorizationServerConfigurerAdapter {
@Autowired
private ApplicationJwtAccessTokenConverter applicationJwtAccessTokenConverter;
@Autowired
private ApplicationOauth2Service applicationOauth2Service;
@Override
public void configure(ClientDetailsServiceConfigurer clients) throws Exception {
clients.withClientDetails(applicationOauth2Service);
}
@Override
public void configure(AuthorizationServerEndpointsConfigurer endpoints) {
endpoints
.tokenEnhancer(applicationJwtAccessTokenConverter)
.tokenStore(jwtTokenStore());
}
@Bean
public JwtTokenStore jwtTokenStore() {
return new JwtTokenStore(applicationJwtAccessTokenConverter);
}
}
我的客户详细信息服务:
@Service
@Slf4j
public class ApplicationOauth2Service implements ClientDetailsService {
@Autowired
UserRepository userRepository;
User user;
public ClientDetails loadClientByClientId(String clientId) throws ClientRegistrationException {
BaseClientDetails details = new BaseClientDetails();
details.setAuthorizedGrantTypes(Collections.singletonList("client_credentials"));
user = userRepository.findByEmail(clientId);
if (null == user) {
throw new NoSuchClientException("No client with requested id: " + clientId);
}
details.setClientId(user.getAuth().getEmail());
details.setClientSecret(user.getAuth().getPassword());
return details;
}
}
我的控制台输出:
解决方案
推荐阅读
- php - 回声
- ios - 如何在应用启动时获取活动通知列表
- java - 如何从不同的类中增加实例变量?
- visual-studio-code - 是否可以为键盘序列设置键盘快捷键?
- powerbi - 获取矩阵中每个月的上个月预测
- javascript - 如何在 react-intl 中使用数组字符串?
- testing - 如何使N个样本分布在jmeter中N> = M的M个线程上
- azure - Azure DevOps - 自定义任务 - 带有 Azure 身份验证的 PowerShell
- javascript - 使用 cPanel 中的新节点应用程序功能将文件同步到 S3
- java - ElasticSearch withJava API - 从一个类或现有对象映射一个复杂的类