文章目录
JWT是什么?
JWT全称JSON Web Token,是一种传输信息的标准,用于JSON对象在各方之间安全地传输信息。支持JSON对象传输,是JWT比较优越的一点。
为什么要使用JWT?
JWT比token更方便。由于token的验证需要调用认证服务,并且需要通过token向授权服务器获取用户信息,在这个过程中,会频繁调用授权服务器,而使用JWT可以避免这个缺点,使用JWT可以避免频繁调用认证服务器,同时JWT中携带了非敏感的身份认证信息(不必担心泄露后造成风险),同样可以避免频繁调用授权服务器。
JWT的数据结构
一个典型的JWT如下图所示,他通常由头部(Header)、载荷(Payload)、签名 (Signature)组成。
JWT头部:通常由算法类型和令牌类型两部分组成,使用 Base64Url 编码表示
如下面的数据,是一个JWT头部:
{
"alg": "HS256",none
"typ": "JWT"
}
载荷(Payload):也使用 Base64Url 编码表示,载荷存储了有关用户或实体的声明等一些有用信息。
如下面的数据,是一个JWT载荷:
{
"sub": "1234567890",
"name": "John Doe",
"iat": 1516239022
}
签名(Signature):签名是对头部和载荷进行签名的结果,用于验证 JWT 的完整性和真实性。
JWT的工作过程
如下图,在用户登录账户名和密码时,如果认证成功,服务器会创建一个JWT cookie,将该cookie返回给用户,然后用户带着这个cookie再去访问服务器,服务器检查JWT是否合法,如果合法则返回一个响应: