JWT Token

ConnorK發表於2021-03-08

一、簡介

JSON Web Token(縮寫 JWT),是目前最流行的跨域認證解決方案。

session登入認證方案:使用者從客戶端傳遞使用者名稱、密碼等資訊,服務端認證後將資訊儲存在session中,將session_id放到cookie中。以後訪問其他頁面,自動從cookie中取到session_id,再從session中取認證資訊。

另一類解決方案,將認證資訊,返回給客戶端,儲存到客戶端。下次訪問其他頁面,需要從客戶端傳遞認證資訊回服務端。JWT就是這類方案的代表,將認證資訊儲存在客戶端。

二、JWT Token 組成

header 頭部

存放加密使用的演算法,如下資訊

{
    "type": "jwt",
    "alg": "HS256"
}

載荷 payload

存放傳輸給前端的資料,比如使用者ID等資訊

    {
        "使用者ID": 1,
        "使用者名稱": "admin",
        "角色": "超級管理員",
        "到期時間": "2019-07-13 00:00:00"
    }

簽名 signature

  • 先分別對 header 和 payload 進行 Base64 編碼後,將編碼後的字串以 . 連線起來使用header中的演算法和服務的的 secret 進行加密得到signature。

最終將 header 、payload、signature 三部分以 . 連線起來組成一個字串即為token返回給前端。

三、注意點

  • JWT 的設計並不在於加密保護資料,只是為了認證來源
  • JWT Token 一旦簽發,在過期之前是永久有效的

四、如何防止JWT Token被冒充

HTTPS 雙向認證,雙向加密等。還有就是將每次簽發的token儲存下來,請求來時從儲存的token列表中查詢是否有該token。

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章