【笔记】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的解密