nodejs实现基础的jwt
使用模块,nodejs原生模块
Crypto
1. 实现机制
JSON Web Token 由三部分组成,头部(Header)、载荷(Payload)与签名(Signature),并由 .
英文点拼接。
1. Header
生成jwt头部,声明其类型以及签名所用的算法等的JSON格式,并将其进行base64转码
1 | let jwtHeader = { |
2. Payload
生成jwt载荷部分,并将其进行base64转码
iss: 该JWT的签发者,是否使用是可选的;
sub: 该JWT所面向的用户,是否使用是可选的;
aud: 接收该JWT的一方,是否使用是可选的;
exp(expires): 什么时候过期,这里是一个Unix时间戳,是否使用是可选的;
iat(issued at): 在什么时候签发的(UNIX时间),是否使用是可选的;
nbf (Not Before):如果当前时间在nbf里的时间之前,则Token不被接受;一般都会留一些余地,比如几分钟;,是否使用是可选的;
1 | let jwtPayload = { |
3. Signature
将上面的两个编码后的字符串都用句号.连接在一起(头部在前),并使用sha256及secret对其进行签名处理
1 | const crypto = require('crypto'); |
4. jwt
将三个部分连接即组成了完整的jwt
1 | let jwtToken = jwtHeader + '.' + jwtPayload + '.' + jwtSignature; |
2. jwt解析
处理生成 jwt
是需要使用的,生成如上,解析自然也就比较简单
1. 校验签名
1 | // 拆分jwt |
2. 解析数据
1 | // 校验签名通过,解析载荷的base64数据 |
本文作者 : 萧逸雨
原文链接 : http://qiubo.ink/2018/09/14/nodejs实现基础的jwt/
版权声明 : 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!