天天看點

使用者登入權限校驗 JWT【詳解】

JWT (json web token)是目前最流行的使用者登入權限校驗(使用者認證鑒權)方案。

官網 ​​​https://jwt.io/​​

JWT 的工作流程

使用者登入權限校驗 JWT【詳解】
  1. 用戶端填寫賬号密碼通路登入接口 login,将賬号密碼傳給服務端
  2. 服務端驗證賬号密碼是否正确,若正确,則生成 token ,并将其傳回給用戶端
  3. 用戶端将登入接口 login 傳回的 token 存儲在用戶端本地
  4. 用戶端通路業務接口(如擷取目前登入使用者資訊 user/current)時,将 token 放入 header 中傳給服務端,鍵名為 Authorization ,值為 Bearer 後加空格再加 token。
  5. 服務端驗證 token 是否正确,若正确,則将資料(如目前登入使用者資訊)傳回給用戶端。

JWT 的 token 加密原理

JWT 的 token 由三部分組成

  1. Header:JSON對象,描述 JWT 的中繼資料,加密算法以及類型
  2. Payload:JSON對象,存放資料需要傳遞的資料
  3. Signature:對前兩部分的簽名,防止資料篡改。需要指定一個密鑰(secret)。這個密鑰隻有伺服器才知道,不能洩露給使用者。
使用者登入權限校驗 JWT【詳解】

JWT 的優點

  • token 是無狀态的(stateless),伺服器不需要記錄任何資訊,不占用記憶體
  • 多程序,多伺服器叢集沒有影響,易于擴充
  • 假如不記錄在 cookie 中,沒有跨域的影響
  • 和伺服器端解耦,任何裝置都可以生成token。

JWT 的缺點

  • 無法廢棄,沒有辦法對快速對已經登入的使用者做處理。
  • 空間更大,所有資料是通過 base64進行編碼的,會随着資料量的增大而變大。

繼續閱讀