Token Lifecycle
Token 的生命週期(Lifecycle)描述了一個 Token 從誕生(發放)、使用、更新到最後失效的完整過程。
Issue phase
當用戶通過身份驗證(例如輸入帳密或透過 IAM Role 認證)後,授權伺服器會執行以下動作:
- 生成數據:確認用戶的 ID , Role , Scope 等屬性,並注入 issuer , subject , expiry 等訊息
- 進行簽章
- 透過偽隨機亂數生成一個 Refresh Token
- 同時回傳 Access Token 與 Refresh Token
Verify phase
當用戶端將 Token 放在 HTTP Header 中發送給伺服器時:
- 使用金鑰驗證簽章,或是查詢 Opaque Token 的訊息
- 若金鑰格式合法,檢查內容是否合法(是否過期、aud、issuer 等資訊)
- 檢查其餘授權政策是否通過
Refresh phase (Optional)
Access Token 到期,但用戶的 Session 尚未結束時:
- 用戶端收到
401 Unauthorized錯誤。 - 使用 Refresh Token 去授權伺服器換取新的 Access Token
- 作廢舊的 Refresh Token,並給予一個新的 Refresh Token
Revocation phase
Token 失去效力的情境大概可以分成:
- Expiration:時間到就過期
- Revocation:用戶點擊登出,刪除前端的 AccessToken,並把 Access Token 加入黑名單,同時資料庫移除 Refresh Token
- Rotation:如果發生了一些安全性事件,例如授權中心撤銷原本的KeyPair,舊私鑰簽發的所有 Token 會集體失效;或是用戶更換了密碼後,被要求重新登入,原本的 Token 也會失效。