1 介绍
在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).定义了一种简洁的,自包含的方法用于通信双方之间以JSON对象的形式安全的传递信息。因为数字签名的存在,这些信息是可信的,JWT可以使用HMAC算法或者是RSA的公私秘钥对进行签名。
2 请求流程
- 用户使用账号和面发出post请求;
- 服务器使用私钥创建一个jwt;
- 服务器返回这个jwt给浏览器;
- 浏览器将该jwt串在请求头中像服务器发送请求;
- 服务器验证该jwt;
- 返回响应的资源给浏览器。
3 应用场景
身份认证、服务和资源的访问权限进行验证
4 优点
a 简洁:数据在Http header中发送,数据量小,传输速度快
b 数据存储格式:token是以JSON格式保存在客户端
c 不需要在服务端保存会话信息,特别适用于分布式微服务
5 结构
Header 标题中包含了签名和加密算法的类型
Payload 携带信息
Signature 签名,固定存放在服务器上的私钥来进行加密,不允许泄露出去
JWT是由上面3段信息构成,将这3段信息文本用 . 连接在一起就构成了 JWT的token字符串,如下:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ
6 springboot中使用jwt参考
https://mp.weixin.qq.com/s/ON5Mxxng8rFswwj0O0PBdQ