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