JWT符合[RFC 7519]規範,它的優點在於可以取代Session和Cookie驗證的方式。屬於Token-Based的範疇。html
header(頭部).payload(載荷).signature(簽名)
注:三個部分之間用英文句號.來分隔。web
{ "typ": "JWT", #類型,代表是一個JWT字符串 "alg": "HS256" #加密算法 }
編碼後:算法
ewogICAgInR5cCI6ICJKV1QiLAogICAgImFsZyI6ICJIUzI1NiIKfQ==
通常Header只須要這兩個字段便可。數據庫
{ "user_id":pzdn2009, #用戶Id, "name":"pzdn", #名稱 "exp":1556999524 #token過期時間 }
編碼後:json
ewogICAgInVzZXJfaWQiOnB6ZG4yMDA5LCAKICAgICJuYW1lIjoicHpkbiIsIAogICAgImV4cCI6MTU1Njk5OTUyNCAKfQ==
payload用來承載要傳遞的數據,它的json結構其實是對JWT要傳遞的數據的一組聲明,這些聲明被JWT標準稱爲claims,它的一個「屬性值對」其實就是一個claim,每個claim的都表明特定的含義和做用。服務器
計算signature:編碼
HMACSHA256(base64(header)+"."+base64(payload),secret="mypasswordsdfasdfsddfjjcud")
最終header.payload.signature連成一串,就是JWT。加密
官方:https://jwt.io/#libraries-iocode
[基於Token的身份驗證——JWT]http://www.cnblogs.com/zjutzz/p/5790180.html
[~3種web會話管理的方式]http://www.cnblogs.com/lyzg/p/6067766.html#_label2jwt