定义
- JWT(Json Web Token)是一个开放标准,定义了一种紧凑且自成一体的方式,以便将各方之间的信息安全地传输为JSON对象。
使用场景
- 授权:最常用的使用场景,登陆后,每个后续请求将包括JWT,允许用户访问该令牌允许的路线、服务和资源。单一登录是当今广泛使用 JWT 的一项功能,因为它的开销很小,并且能够在不同领域轻松使用。
- 信息交换:JSON网络币之类的,不太常用。
结构
-
主要由三部分组成:Header(头部)、Payload(有效载荷)、Signature(签名),中间使用
.
隔开,最终类似xxx.yyy.zzz这种格式。 -
Header(头部):主要包含两两部分,token的类型和所用的签名方法,如下图。最后使用Base64进行编码,形成JWT第一部分。
-
Payload(有效载荷):信息的主要部分,由各种Claims声明组成,有三种类型(注册声明、公共声明和私有声明),声明各种你想要传递的东西,如下图。最后依旧使用Base64进行编码,形成JWT第二部分。
-
Signature(签名):使用第一部分声明的签名方法,对已经形成完毕的第一第二部分再加盐secret组成后,进行签名,得到的结果就是第三部分,加密过程如下图:
-
最终使用
.
将三部分拼接,JWT就制作完成了。