1、JWT描述算法
Jwt token由Header、Payload、Signature三部分組成,這三部分之間以小數點」.」鏈接,JWT token長這樣:安全
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.keH6T3x1z7mmhKL1T3r9sQdAxxdzB6siemGMr_6ZOwU加密
token解析後長這樣:spa
header部分,有令牌的類型(JWT)和簽名算法名稱(HS256):code
{jwt
"alg": "HS256",token
"typ": "JWT"ci
}資源
Payload部分,有效負載,這部分能夠聽任何你想放的數據:路由
{
"sub": "1234567890",
"name": "John Doe",
"iat": 1516239022
}
Signature簽名部分,因爲這部分是使用header和payload部分計算的,因此還能夠以此來驗證payload部分有沒有被篡改:
HMACSHA256(
base64UrlEncode(header) + "." +
base64UrlEncode(payload),
123456 //這裏是密鑰,只要夠複雜,通常不會被破解
)
2、JWT適用場景描述
JWT最多見的使用場景爲受權。一旦用戶登陸,隨後的每一個請求都將包含jwt的token令牌,纔可容許用戶訪問路由API、服務、資源。好比單點登陸場景,由於它的開銷很小,並且能夠很容易地跨不一樣領域使用。因此jwt也適用於客戶端存儲用戶狀態信息。
三、安全漏洞方面
雖然在安全漏洞方面,JWT官網給出了警告:JSON Web令牌庫中具備非對稱密鑰的關鍵漏洞。可是官網給出的對稱型加密算法解決方案已經足夠知足於一般狀況下的客戶端用戶狀態的存儲。