eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsImF1ZCI6IuWkqeihjOWBpeeuoeeQhueUqOaItyIsImF1ZGllbmNlIjoid2ViIiwibmJmIjoxNTA3Njg0OTQyLCJpc3MiOiJ3d3cuMW9uZS5jbiIsImV4cCI6MTUwNzY4Njc0MiwiaWF0IjoxNTA3Njg0OTQyLCJqdGkiOjEwMDB9.GGF0kFbxNk2ezzuXEJVBZyyL4e4BYMdpse73cSDrUut7cbVyYuLG1CNr8RI7eI3VHz9sdCB14Kesi8rP-v3VJA
{ "body":{ "sub":"admin", "aud":"用戶", "audience":"web", "nbf":1507684942, "iss":"www.z201.cn", "exp":1507686742, "iat":1507684942, "jti":1000 }, "header":{ "typ":"JWT", "alg":"HS512" }, "signature":"GGF0kFbxNk2ezzuXEJVBZyyL4e4BYMdpse73cSDrUut7cbVyYuLG1CNr8RI7eI3VHz9sdCB14Kesi8rP-v3VJA" }
{ 'typ': 'JWT', // 'alg': 'HS512' }
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9
載荷就是存放有效信息的地方。這個名字像是特指飛機上承載的貨品,這些有效信息包含三個部分git
標準中註冊的聲明github
公共的聲明web
私有的聲明算法
標準中註冊的聲明 (建議但不強制使用) :json
iss: jwt簽發者安全
sub: jwt所面向的用戶服務器
aud: 接收jwt的一方網絡
exp: jwt的過時時間,這個過時時間必需要大於簽發時間分佈式
nbf: 定義在什麼時間以前,該jwt都是不可用的.編碼
iat: jwt的簽發時間
jti: jwt的惟一身份標識,主要用來做爲一次性token,從而回避重放攻擊。
eyJzdWIiOiJhZG1pbiIsImF1ZCI6IuWkqeihjOWBpeeuoeeQhueUqOaItyIsImF1ZGllbmNlIjoid2ViIiwibmJmIjoxNTA3Njg0OTQyLCJpc3MiOiJ3d3cuMW9uZS5jbiIsImV4cCI6MTUwNzY4Njc0MiwiaWF0IjoxNTA3Njg0OTQyLCJqdGkiOjEwMDB9
而後將Body進行base64加密(該加密是能夠對稱解密的),構成了第二部分.
"body":{ "sub":"admin", "aud":"用戶", "audience":"web", "nbf":1507684942, "iss":"www.z201.cn", "exp":1507686742, "iat":1507684942, "jti":1000 }
"signature":"GGF0kFbxNk2ezzuXEJVBZyyL4e4BYMdpse73cSDrUut7cbVyYuLG1CNr8RI7eI3VHz9sdCB14Kesi8rP-v3VJA"
這個部分須要base64加密後的header和base64加密後的body使用.鏈接組成的字符串,而後經過header中聲明的加密方式進行加鹽secret組合加密,而後就構成了jwt的第三部分。
最後將signature進行base64加密(該加密是能夠對稱解密的),構成了第三部分。
密鑰secret是保存在服務端的,服務端會根據這個密鑰進行生成token和驗證,因此須要保護好。