0


JWT详解

JWT介绍

JWT是JSON Web Token的缩写,是为了在网络应用环境间传递声明而执行的- -种基于JSON的开放标准((RFC 7519)。JWT本身没有定义任何技术实现,它只是定义了一种基于Token的会话管理的规则,涵盖Token需要包含的标准内容和Token的生成过程,特别适用于分布式站点的单点登录(SSO) 场景。

一个JWT Token格式如下所示:
在这里插入图片描述
他是由

.

分割的三部分组成,这三部分依次是:

  • 头部(Header)
  • 负载(Payload)
  • 签名(Signature)

头部和负载以json形式存在,这就是JWT中的JSON,三部分的内容都分别单独经过了Base64编码,以

.

拼接成一个JWT Token。
在这里插入图片描述

Header

JWT的Header中存储了所使用的加密算法和Token类型

{
   "alg" : "HS256",
   "typ" : "JWT"
}

Payload

Payload表示负载,也是一个JSON对象,JWT规定了7个官方字段供选用。

iss (issuer) : 签发人
exp (expiration time) : 过期时间
sub (subject) : 主题
aud (audience) : 受众
nbf (Not Before) : 生效时间
iat (Issued At) : 签发时间
jti (JWT ID) : 编号

除了官方字段,开发者也可以自己指定字段和内容。
JWT默认是不加密的,任何人都可以读到,所以不要把秘密信息放在这里。

Signature

Signature部分是对前两部分的签名,防止数据篡改。
首先,需要指定一一个密钥(secret) 。 这个密钥只有服务器才知道,不能泄露给用户。然后,使用Header里面指定的签名算法(默认是HMAC SHA256),按照下面的公式产生签名。

HMAXSHA256(base64UrlEncode(header) + "." + base64UrlEncode(payload),secret)

JWT优缺点

JWT拥有基于Token的会话管理方式所拥有的一切优势,不依赖Cookie,使得其可以防止CSRF攻击,也能在禁用Cookie的浏览器环境中正常运行。
而JWT的最大优势是服务端不再需要存储Session,使得服务端认证鉴权业务可以方便扩展,避免存储Session所需要引入的Redis等组件,降低了系统架构复杂度。但这也是JWT最大的劣势,由于有效期存储在Token中,JWT Token-旦签发,就会在有效期内-直可用,无法在服务端废止,当用户进行登出操作,只能依赖客户端删除掉本地存储的JWT Token,如果需要禁用用户,单纯使用JWT就无法做到了。

标签: 服务器 安全 运维

本文转载自: https://blog.csdn.net/qq_47664976/article/details/122720118
版权归原作者 小小地鼠 所有, 如有侵权,请联系我们删除。

“JWT详解”的评论:

还没有评论