繁体   English   中英

如何在Spring Boot Rest模板客户端中处理过期的刷新令牌

[英]How to handle expiring refresh tokens in spring boot rest template client

我正在将第三方API集成到我的Spring Boot应用程序中。

第三方API身份验证的工作方式:

  1. 初始授权后,会提供刷新令牌和访问令牌,这些令牌将在给定时间后过期
  2. 访问令牌过期后,我使用刷新令牌来获取新的访问令牌和新的刷新令牌

使用当前的访问令牌,我可以调用API。

有没有办法使用RestTemplate无缝处理这种情况?

我尝试手动处理这种情况,因此,如果我从API取回401,则发送了刷新令牌请求,重写了我取回的密钥并重试了该请求,不确定是否需要处理如何存储api密钥重新启动服务器。

这可以通过ClientHttpRequestInterceptor轻松完成,如果发生例如401 ,您可以在其中替换请求标头:

@Override
public ClientHttpResponse intercept(
  HttpRequest request, 
  byte[] body, 
  ClientHttpRequestExecution execution) throws IOException {

    ClientHttpResponse response = execution.execute(request, body);
    if(response.getStatusCode() == HttpStatus.UNAUTHORIZED) {
       request.getHeaders().replace("Auth-Header", getNewToken());
       return execution.execute(request, body);
    }
    return response;
}

有关更多指导,请参见此处

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM