1. 程式人生 > >JWT JSON Web Token

JWT JSON Web Token

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