
用户身份认证(三)——JWT
发布日期:2021-05-08 02:12:12
浏览次数:21
分类:精选文章
本文共 1253 字,大约阅读时间需要 4 分钟。
JWT(JSON Web Token)是一个开放标准(RFC 7519),它定义了一种紧凑且独立的方式,可以将各方之间的信息作为JSON对象进行安全传输。该信息可以验证和信任,因为其是经过数字签名的。
JWT
1. JWT应用场景
应用场景:
- Authorization(授权):用户登录后,后续每一个请求均包含JWT,允许用户访问该令牌允许的路由、服务和资源。由于JWT的开销小,并且其可以很方便的跨域使用,因此其广泛应用于当前的单点登录。
- Information Exchange(信息交换):安全的在各方之间进行信息传输,并且JWT可以被签名和验证是否被篡改。
2. JWT结构
JWT构成:
- 头部(Header)
- 有效载荷(Payload)
- 签名(Signature)
三部分由圆点(.
)连接,即:
典型的JWT实例为:
xxx.yyy.zzz
注:
- 此过程中使用的
Base64
加密均为url safe
的Base64
加密,由于Base64
在编码完成后会加上1个或2个=
号,表示补充了多少字节。但是=
在URL
中会造成歧义,因此使用url safe
的Base64
加密; - 不要在JWT的Header或Payload中放置敏感信息,除非其进行了加密;
2.1 JWT的头部
Header由两部分组成:
- typ(Token类型):这里固定为JWT;
- alg(使用hash算法的类型):例如HMAC、SHA256或RSA等等;
Header部分JSON对象示例:
{ 'typ':'JWT', 'alg':'HMACSHA256'}
然后用Base64
对这个JSON对象进行编码,得到Header。
2.2 JWT的有效载荷
Payload功能:
- 存储需要传递的信息,如用户ID、用户名等等;
- 包含元数据,如过期时间、发布人等等;
- 可以进行加密;
其存储的信息按照职能可以分成三个部分:
- 标准的注册声明(Registered claims);
- 公共的声明(Public claims);
- 私有的声明(Private claims);
{ 'user_id':'1033180491', 'user_name':'lime2019'}
然后用Base64
对这个JSON对象进行编码,得到Payload。
2.3 JWT的签名
对Header和Payload部分进行签名,保证Token在传输的过程中没有被篡改或者损坏。
签名算法为Header中指定的那一个,通过一个私钥对Header和Payload使用签名算法进行加密。
Signature = HMACSHA(base64UrlEncode(header)+"."+base64UrlEncode(payload),secret)
3. JWT的特点
JWT特点:
- 简洁:可以通过URL、POST参数或者在HTTP header发送,因为数据量小,所以传输速度很快;
- 自包含:负载中包含所有用户需要的信息,避免多次查询数据库;
4. JWT的使用
发表评论
最新留言
感谢大佬
[***.8.128.20]2025年04月04日 11时39分43秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
第9章 - 有没有替代原因(检验证据)
2021-05-08
VUE3(八)setup与ref函数
2021-05-08
Vue之Element标签页保留用户操作缓存。
2021-05-08
智能合约开发实践(1)
2021-05-08
2. Spring Boot学习——Yaml等配置文件教程
2021-05-08
MATLAB——操作矩阵的常用函数
2021-05-08
CMake自学记录,看完保证你知道CMake怎么玩!!!
2021-05-08
Eigen库中vector.transpose()函数什么意思
2021-05-08
ORB-SLAM2:LocalMapping线程学习随笔【李哈哈:看看总有收获篇】
2021-05-08
ORB-SLAM2:LoopClosing线程学习随笔【李哈哈:看看总有收获篇】
2021-05-08
牛客练习赛56 D 小翔和泰拉瑞亚(线段树)
2021-05-08
hdu6434 Problem I. Count(数论)(好题)
2021-05-08
NC15553 数学考试(线性DP)
2021-05-08
MySQL两阶段提交、崩溃恢复与组提交
2021-05-08
MySQL隐藏文件.mysql_history风险
2021-05-08
如何通过文件解析MySQL的表结构
2021-05-08