為何要使用 refresh Token

為什么需要refresh token

refreshToken就是用來在accessToken過期以后來重新獲取accessToken的

0.使用流程

-> 1.登錄成功獲得 refresh token 并持久化
-> 2.通過 refresh token 請求刷新得到 access token 并臨時儲存
-> 3.請求業(yè)務接口使用 access token
-> 4.access token 過期或者快過期再次回到「 2 」
-> 5.refresh token 也過期則生命周期結束,需重新登錄

1.使用場景來看

  1. 如果是一個前后端分離的項目,使用springsecurity+jwt這種,前端用戶在登錄以后,后端返回給前端一個accessToken,如果沒有refresh token,又因為因為安全原因accessToken過期時間會設置的比較短,在accessToken過期以后,用戶將會被強制重新登錄,影響用戶體驗
    而如果使用refresh Token,如果用戶持續(xù)地訪問這個網站,他們可以一直保持登錄狀態(tài),而不需要定期重新登錄
  2. 如果是業(yè)務服務器之間的相互調用,那么此時只用一個Access Token即可,強制重新登錄影響不大,只不過是如果使用 Refresh Token 在獲取新的 Access Token 的時候比直接重新登錄會方便一小丟丟

2.從是否需要讀取額外的狀態(tài)來看

token 的過期時間一般會比 refeshToken 的過期時間短很多,保證 token 被盜取后無法持久的做壞事,通過 AccessToken 訪問,只要通過簽名校驗合法即可通行,無需讀取額外的狀態(tài)來進一步確認是否撤銷,當 AccessToken 過期以后再通過 RefreshToken 讀取額外的狀態(tài)(數據庫 /緩存)確認是否繼續(xù)簽發(fā)

3.從安全程度來看

access token 有效期短 被盜損失更小 安全性更高
如果refresh token被盜了 想刷新access token的話 也需要提供過期的refresh token 盜取難度增加

同時refresh token只有在第一次獲取和刷新access token時才會在網絡中傳輸,因此被盜的風險遠小于access token 從而在一定程度上 更安全了一點
所謂的更安全就是讓盜取信息者更不容易獲得而已

關于 token 過期的疑惑,為什么需要 refresh token? - 糯米PHP (nuomiphp.com)
沒有理解refresh token的必要性或者說其為何比access token安全
Web API與OAuth:既生access token,何生refresh token
RFC 6819: OAuth 2.0 Threat Model and Security Considerations (rfc-editor.org)

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容