為何要使用 refresh Token

為什么需要refresh token

refreshToken就是用來(lái)在accessToken過(guò)期以后來(lái)重新獲取accessToken的

0.使用流程

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

1.使用場(chǎng)景來(lái)看

  1. 如果是一個(gè)前后端分離的項(xiàng)目,使用springsecurity+jwt這種,前端用戶(hù)在登錄以后,后端返回給前端一個(gè)accessToken,如果沒(méi)有refresh token,又因?yàn)橐驗(yàn)榘踩騛ccessToken過(guò)期時(shí)間會(huì)設(shè)置的比較短,在accessToken過(guò)期以后,用戶(hù)將會(huì)被強(qiáng)制重新登錄,影響用戶(hù)體驗(yàn)
    而如果使用refresh Token,如果用戶(hù)持續(xù)地訪問(wèn)這個(gè)網(wǎng)站,他們可以一直保持登錄狀態(tài),而不需要定期重新登錄
  2. 如果是業(yè)務(wù)服務(wù)器之間的相互調(diào)用,那么此時(shí)只用一個(gè)Access Token即可,強(qiáng)制重新登錄影響不大,只不過(guò)是如果使用 Refresh Token 在獲取新的 Access Token 的時(shí)候比直接重新登錄會(huì)方便一小丟丟

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

token 的過(guò)期時(shí)間一般會(huì)比 refeshToken 的過(guò)期時(shí)間短很多,保證 token 被盜取后無(wú)法持久的做壞事,通過(guò) AccessToken 訪問(wèn),只要通過(guò)簽名校驗(yàn)合法即可通行,無(wú)需讀取額外的狀態(tài)來(lái)進(jìn)一步確認(rèn)是否撤銷(xiāo),當(dāng) AccessToken 過(guò)期以后再通過(guò) RefreshToken 讀取額外的狀態(tài)(數(shù)據(jù)庫(kù) /緩存)確認(rèn)是否繼續(xù)簽發(fā)

3.從安全程度來(lái)看

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

同時(shí)refresh token只有在第一次獲取和刷新access token時(shí)才會(huì)在網(wǎng)絡(luò)中傳輸,因此被盜的風(fēng)險(xiǎn)遠(yuǎn)小于access token 從而在一定程度上 更安全了一點(diǎn)
所謂的更安全就是讓盜取信息者更不容易獲得而已

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

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

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容