OAuth2RestTemplate在令牌过期后不刷新令牌

disho6za  于 5个月前  发布在  其他
关注(0)|答案(1)|浏览(109)

我正在使用Spring OAuth2RestTemplate,并且令牌在过期后没有刷新。下面是我的令牌提供程序。我缺少什么?任何指针都会有帮助。

@Bean
        public AccessTokenProvider clientAccessTokenProvider() {
            ClientCredentialsAccessTokenProvider accessTokenProvider = new ClientCredentialsAccessTokenProvider();
            accessTokenProvider.setRequestFactory(getClientHttpRequestFactory());
            return accessTokenProvider;
        }

字符串

hjzp0vay

hjzp0vay1#

根据spring Boot oAuth实现,ClientCredentialsToken TokenProvider不支持“Refresh Token”。
我通过检查过期并在进行rest调用之前将oAuthContext中的token设置为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
        }
    }

字符串

相关问题