JWT - The first sight

JWT 是JSON web Token的縮寫,format輕巧又易於跨domain間傳輸,適合restful API這種stateless原則。

JWT 是一個字串,透過.切分成三個 base 64編碼
  1. Header: Token總類與演算法,include token type, hash algorithm,
  2. payload: 使用者相關資訊user information,可以設定expired time, 簽發token時間
  3. Signature: 簽章calculate from header, payload and self generated key

驗證流程如下
  1. Client 經由任何一種方式跟Auth Service做驗證
  2. Auth service 回傳JWT token給Client
  3. Client 能用該JWT 去call 其他有授權給該token的service
加密的細節在於,Auth service會用自己的private key對user 傳來的header, payload做加密。因此即便使用者解開jwt token並修改payload內容,除了沒有auth service上的private key可以重新encrypt, 加密出來的結果不會ㄓvalidate。不過Token一但被竊取就會被盜用,因此需要搭配expired time來減少風險,並且使用情境減少與安全議題相關的授權操作。

留言

這個網誌中的熱門文章

[專案] 銀行端末系統

如何在MacOS 中自由切換不同Python版本 - pyenv + virtualenv

用 C# 控制 Win7 輸入法