JWT Token
一、简介
JSON Web Token(缩写 JWT),是目前最流行的跨域认证解决方案。
session登录认证方案:用户从客户端传递用户名、密码等信息,服务端认证后将信息存储在session中,将session_id放到cookie中。以后访问其他页面,自动从cookie中取到session_id,再从session中取认证信息。
另一类解决方案,将认证信息,返回给客户端,存储到客户端。下次访问其他页面,需要从客户端传递认证信息回服务端。JWT就是这类方案的代表,将认证信息保存在客户端。
二、JWT Token 组成
header 头部
存放加密使用的算法,如下信息
{
"type": "jwt",
"alg": "HS256"
}
载荷 payload
存放传输给前端的数据,比如用户ID等信息
{
"用户ID": 1,
"用户名": "admin",
"角色": "超级管理员",
"到期时间": "2019-07-13 00:00:00"
}
签名 signature
- 先分别对 header 和 payload 进行 Base64 编码后,将编码后的字符串以
.
连接起来使用header中的算法和服务的的 secret 进行加密得到signature。
最终将 header 、payload、signature 三部分以 .
连接起来组成一个字符串即为token返回给前端。
三、注意点
- JWT 的设计并不在于加密保护数据,只是为了认证来源
- JWT Token 一旦签发,在过期之前是永久有效的
四、如何防止JWT Token被冒充
HTTPS 双向认证,双向加密等。还有就是将每次签发的token保存下来,请求来时从保存的token列表中查找是否有该token。
本作品采用《CC 协议》,转载必须注明作者和本文链接