一、簡介
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 協議》,轉載必須註明作者和本文連結