JWT认证
Json Web Tokwn,一种认证机制。
JWT分为三个部分,JWT头
| 有效载荷
| 签名
1.JWT头——Header
{
"alg": "HS256", //签名使用的算法
"typ": "JWT" //令牌类型
}
最后,使用Base64 算法将上述JSON对象转换为字符串保存。
2.有效载荷——Payload
{ "iss":"发行人", "exp":"过期时间", "sub":"主题", //自定义字段 "name":"java技术爱好者", "isAdmin":"true", "loginTime":"2021-12-05 12:00:03" }
最后,使用Base64 算法将上述JSON对象转换为字符串保存。
3.签名——singnature
需要指定一个secretKey,该secretKey保存在服务器,使用Header指定的算法对Header和Payload进行计算,然后得出一个Signature。
JWT的优点
- json格式的通用性,所以JWT可以跨语言支持,比如Java、JavaScript、PHP、Node等等。
- 可以利用Payload存储一些非敏感的信息。
- 便于传输,JWT结构简单,字节占用小。
- 不需要在服务端保存会话信息,易于应用的扩展。
以前的认证方式session认证和token认证:
-
session认证,服务器保存用户信息,认证成功返回cookie给浏览器。缺点:信息保存在服务器占用空间;分布式部署应用会出现session不能共享、难扩展。
-
token认证,redis保存token实现共享、易扩展。缺点:每次请求都需要查询redis,造成redis的压力,增加请求的耗时,每个已登录的用户都要保存一个token在redis,也会消耗redis的存储空间。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。