一、jwt原理
- 服务器认证以后,签名生成一个 JSON 对象,发回给用户;之后,用户与服务端通信的时候,都要发回这个 JSON 对象。服务器就不保存任何 session 数据了,也就是说,服务器变成无状态了,从而比较容易实现扩展。这个对象,可以携带在访问的header中,或者body中、也可以是url中;
- JWT 由三个部分组成:Header(头部)、Payload(负载)、Signature(签名)
header:保存元信息,签名的算法等;
Payload:存放实际需要传递的数据;
Signature:对前两部分的利用header中定义的算法来签名;
JWT缺陷
- JWT 默认是不加密,但也是可以加密的。生成原始 Token 以后,可以用密钥再加密一次;当不加密时,token中不要携带重要信息;
- 由于服务器不保存 session 状态,因此无法在使用过程中废止某个 token,或者更改 token 的权限。也就是说,一旦 JWT 签发了,在到期之前就会始终有效,除非服务器部署额外的逻辑。
- 为了减少盗用,JWT 不应该使用 HTTP 协议明码传输,要使用 HTTPS 协议传输;