JWT JSON Web Token
阿新 • • 發佈:2018-03-26
bubuko 可靠的 分組 使用 dig pan alt 可靠 stringify
JWT(JSON Web Token)
允許我們使用JWT在用戶和服務器之間傳遞安全可靠的信息的規範。
JWT由三個部分組成:header(頭部)、payload(載荷)、signature(簽名)。
一、頭部 header
頭部用於描述關於該JWT的最基本的信息,例如其類型以及簽名所用的算法等,用base64url編碼生成jwt header頭部。
var base64url = require("base64url"); var header = { ‘typ‘: ‘jwt‘, ‘alg‘: ‘hs256‘ }; var base64urlheader = base64url(JSON.stringify(header));
header頭部:
- typ: 類型
- alg: 簽名所用算法
二、載荷 payload
var payload = { "iss": "momobutong", "iat": iat, "exp": exp, "aud": "www.example.com", "sub": "[email protected]", "from_user": "B", "target_user": "A" } var base64urlpayload = base64url(JSON.stringify(payload));
- iss: 該JWT的簽發者
- sub: 該JWT所面向的用戶
- aud: 接收該JWT的一方
- exp(expires): 過期時間(Unix時間戳)
- iat(issued at): 簽發時間
三、簽名 signature
簽名signature由header頭部、載荷payload、密鑰組成。
var crypto = require("crypto"); var signature = crypto.createHmac(‘sha256‘, ‘secretkey‘).update(base64urlheader+‘.‘+base64urlpayload).digest(‘hex‘);
生成jwt
JWT JSON Web Token