OAuth2RestTemplate-客户端缓存

时间:2018-11-21 19:02:19

标签: java spring spring-boot

我看到下面的restTemplate用于获取OAuth令牌。我没有看到任何显式调用将令牌存储在应用程序中。但是,我看到此模板返回相同的令牌值。 OAuth2RestTemplate是否固有地实现客户端缓存?如果是这样,令牌到期后是否会显式调用OAuth2端点?

@Qualifier("oauth")
@Bean
public OAuth2RestTemplate restTemplate(@Qualifier("resourceDetails") ClientCredentialsResourceDetails resourceDetails) {
    return new OAuth2RestTemplate(resourceDetails);
}

我在文档中看到了以下内容-

  

getAccessToken公共OAuth2AccessToken getAccessToken()                                    引发UserRedirectRequiredException

     

如有必要,获取或更新当前上下文的访问令牌。   执行请求时将自动调用此方法   (结果被缓存),但也可以称为独立实例   预先填充令牌的方法。

1 个答案:

答案 0 :(得分:3)

很明显,令牌是在定义资源时创建的上下文(DefaultOAuth2ClientContext对象)中缓存的。但是,通过调用getAccessToken()来管理令牌。这是医生对getAccessToken()的评价:

  

如有必要,获取或更新当前上下文的访问令牌。   当有请求时,此方法将自动*   执行(结果被缓存),但也可以称为   *预先填充令牌的独立方法。

令牌将一直缓存到过期为止,然后它将自动更新。 getAccessToken()中的以下代码段对此进行了描述:

if (accessToken == null || accessToken.isExpired()) {
            try {
                accessToken = acquireAccessToken(context);
            }

关于缓存机制,默认情况下,spring提供内存中缓存

  

DefaultOAuth2ClientContext

但是您可以提供自己的

实现。
  

OAuth2ClientContext