【笔记】JWT身份认证
前言
JWT(Json Web Token)与Session不同的是,Session是将用户登录信息存储在服务器内存中,而JWT是将用户登录信息加密后存储在客户端浏览器内存中
JWT的构成
- JWT的Token是由
Header、Payload、Signature三部分组成,通过.依次分隔:Header.Payload.Signature,最终组成TokenHeader:直接通过Base64编码后即可得到第一部分typ:Token类型alg:算法名称
Payload:载荷,用于存放标准中注册的声明、公共声名、私有声明- 标准中注册的声名
aud:Audienceexp:ExpiresAt,过期时间jti:Id,证书编号iss:Issuer,签发人,通常写域名iat:IssuedAt,签发时间nbf:NotBefore,生效时间sub:Subject,签发主题Header、Signature:用来保证Token的安全性
- 公共声名
- 私有声名(自定义键值对)
- 标准中注册的声名
Signature:签名,将Header的Base64数据与Payload的Base64数据用.拼接后,通过Header中定义的加密方式进行加密,得到签名
JWT的使用方法
- 客户端收到服务端返回的Token之后,通常将Token存储在
localStorage或sessionStorage中 - 此后,客户端每次与服务端通信,都要将Token通过请求头的
Authorization字段传递给后端- 在JWT身份认证的方式下,
Authorization字段值必须以Bearer开头
- 在JWT身份认证的方式下,
<token>:JWT加密字符串
1 | Authorization: Bearer <token> |
JWT的加解密
- JWT的加解密是在后段完成的,加解密时需要提供预先设定的密钥,只有相同密钥能进行对应Token的解密