OAuth2RestTemplate过期后不刷新令牌

时间:2020-02-10 13:43:19

标签: spring-boot oauth-2.0

我正在使用Spring OAuth2RestTemplate,令牌过期后不会刷新。以下是我的令牌提供商。我想念什么?任何指针都将真正有帮助。

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

1 个答案:

答案 0 :(得分:0)

根据Spring Boot oAuth的实施,ClientCredentialsAccessTokenProvider不支持“刷新令牌”。

我通过检查到期时间并在进行其余调用之前将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
        }
    }
相关问题