JWT:JSON Web Token
最近看一个项目,用到了JWT做身份验证,在此做一些笔记以及记录,以防止将来忘记,如有错误请指正。
一、JWT原理
JWT的原理是,服务器认证以后生成一个JSON对象,发回给用户,像下面:
{
"姓名": "张三",
"角色": "管理员",
"到期时间": "2019年7月1日0点0分"
}
以后用户和服务端通信时,都要发送这个JSON对象 ,服务端完全只靠这个对象认定用户身份,为了防止数据被篡改,服务端生成这个对象时会加上签名。
服务器端不保存session数据,服务器变成无状态的了,从而比较容易实现扩展。
二、JWT使用场景
1、授权(Authorization):这是使用JWT最常见的情况,一旦用户登录,后续每个请求都将包含JWT,允许用户访问该令牌所允许的路由、服务和资源。单点登录是一种现在广泛使用JWT的功能,因为它的开销很小,能够在不用的域中轻松使用。
2、信息交换(Information Exchange):JSON Web令牌是在各方之间安全传输信息的好方法。因为JWT可以签名 - 例如,使用公钥/私钥对 - 您可以确定发件人是他们所说的人。此外,由于使用标头和有效负载计算签名,您还可以验证内容是否未被篡改。
三、JWT令牌结构
JWT的数据结构: