Spring boot OAuth2RestTemplate在令牌过期后不会刷新该令牌
我使用的是Spring OAuth2RestTemplate,令牌在过期后不会刷新。下面是我的令牌提供者。我错过了什么?任何指点都会很有帮助Spring boot OAuth2RestTemplate在令牌过期后不会刷新该令牌,spring-boot,oauth-2.0,Spring Boot,Oauth 2.0,我使用的是Spring OAuth2RestTemplate,令牌在过期后不会刷新。下面是我的令牌提供者。我错过了什么?任何指点都会很有帮助 @Bean public AccessTokenProvider clientAccessTokenProvider() { ClientCredentialsAccessTokenProvider accessTokenProvider = new ClientCredentialsAccessTokenProvi
@Bean
public AccessTokenProvider clientAccessTokenProvider() {
ClientCredentialsAccessTokenProvider accessTokenProvider = new ClientCredentialsAccessTokenProvider();
accessTokenProvider.setRequestFactory(getClientHttpRequestFactory());
return accessTokenProvider;
}
根据spring boot oAuth实现,ClientCredentialsAccessTokenProvider不支持“刷新令牌” 我通过检查到期时间并在进行rest调用之前将oAuthContext中的令牌设置为null,解决了这个问题
private void checkTokenExpiry() {
OAuth2ClientContext oAuth2ClientContext = oAuth2RestOperations.getOAuth2ClientContext();
if (oAuth2ClientContext == null) {
return;
}
OAuth2AccessToken accessToken = oAuth2ClientContext.getAccessToken();
if (accessToken != null && (accessToken.getExpiresIn() > 5000 || accessToken
.isExpired())) { //5 seconds
log.info("Token expired");
oAuth2RestOperations.getOAuth2ClientContext()
.setAccessToken(null); //to re-fetch the token
}
}
我遵循这个repo来设置配置:如果令牌响应(特别是expires_in)不是默认格式,则可能会发生这种情况。您验证了吗?您使用的是哪个版本的Spring Boot?org.springframework.security.oauth:Spring-security-oauth2是OAuthClient,sprinboot版本:2.1.8。RELEASE@Abbin它是默认格式