什么是 JWT?
JWT (JSON Web Token) 是目前最流行的跨域认证解决方案,是一种基于 Token 的 JSON 格式传递数据的网络令牌技术。
JWT 令牌组成部分?
JWT 由三部分组成,每部分中间使用点(.)分隔,比如:xxx.yyy.zzz
- Header: 描述 JWT 的元数据,定义了生成签名的算法以及 Token 的类型;
{
'alg': 'HS256',
'typ': 'JWT'
}
- Payload : 用来存放实际需要传递的数据;
{
'iss': '签发方',
'iat': '签发时间',
'exp': '过期时间',
'jti': '唯一标识',
'name': '用户信息',
'sub': '主题',
}
除了以上信息外,开发者还可以自定义属性。
- Signature:通过 Payload、Header、Secret 使用 Header 里面指定的签名算法(默认是 HMAC SHA256)生成;
如下图所示:
JWT 如何使用?
客户端收到服务器返回的 JWT,可以储存在 localStorage,在之后客户端每次与服务器通信,都要把这个 JWT 放在 HTTP 请求的头信息 Authorization 字段里面,应当写成这样的形式Authorization: <type> <credentials>
,type 是指认证的方式规范为 Bearer,credentials 则是认证需要的信息。
如下图所示: