簡體   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