当前位置:网站首页 > 技术博客 > 正文

jw的w是什么



JWT 相信很多小伙伴都知道,JSON Web Token,如果在项目中通过 jjwt 来支持 JWT 的话,可能只需要了解 JWT 一个概念即可,但是现在很多时候我们可能不是使用 jjwt,而是选择 nimbus-jose-jwt 库,此时就有可能接触到一些新的概念,如 JWE、JWS。那么 JWE、JWS 以及 JWT 之间是什么关系呢?松哥最近看到一篇不错的文章讲这个,我们一起来看下,以下是正文。

一个JWT,应该是如下形式的:

 

这些东西看上很凌乱,但是非常紧凑,并且是可打印的主要用于验证签名的真实性。

JWT 解决什么问题?

JWT的主要目的是在服务端和客户端之间以安全的方式来转移声明。主要的应用场景如下所示:

  1. 认证 Authentication;
  2. 授权 Authorization // 注意这两个单词的区别;
  3. 联合识别;
  4. 客户端会话(无状态的会话);
  5. 客户端机密。

JWT 的一些名词解释

  1. JWS:Signed JWT签名过的jwt
  2. JWE:Encrypted JWT部分payload经过加密的jwt;目前加密payload的操作不是很普及;
  3. JWK:JWT的密钥,也就是我们常说的 scret;
  4. JWKset:JWT key set在非对称加密中,需要的是密钥对而非单独的密钥,在后文中会阐释;
  5. JWA:当前JWT所用到的密码学算法;
  6. nonsecure JWT:当头部的签名算法被设定为none的时候,该JWT是不安全的;因为签名的部分空缺,所有人都可以修改。

一个通常你看到的jwt,由以下三部分组成,它们分别是:

  1. header:主要声明了JWT的签名算法;
  2. payload:主要承载了各种声明并传递明文数据;
  3. signture:拥有该部分的JWT被称为JWS,也就是签了名的JWS;没有该部分的JWT被称为nonsecure JWT也就是不安全的JWT,此时header中声明的签名算法为none。

三个部分用·分割。形如 xxxxx.yyyyy.zzzzz的样式。

JWT header

 

jwt header 的组成

头通常由两部分组成:令牌的类型,即JWT,以及正在使用的散列算法,例如HMAC SHA256或RSA。

当然,还有两个可选的部分,一个是jti,也就是JWT ID,代表了正在使用JWT的编号,这个编号在对应服务端应当唯一。当然,jti也可以放在payload中。

另一个是cty,也就是content type。这个比较少见,当payload为任意数据的时候,这个头无需设置,但是当内容也带有jwt的时候。也就是嵌套JWT的时候,这个值必须设定为jwt。这种情况比较少见。

jwt header 的加密算法

加密的方式如下:

 

JWT payload


                            

版权声明


相关文章:

  • 简述java平台中迭代器的功能及使用方式2025-01-19 14:01:03
  • python 3.102025-01-19 14:01:03
  • 深入理解java虚拟机最新版2025-01-19 14:01:03
  • 智能语音营销2025-01-19 14:01:03
  • 单例模式 java实现2025-01-19 14:01:03
  • 虚拟机下载安装2025-01-19 14:01:03
  • 怎样把代码封装成软件2025-01-19 14:01:03
  • 在线客服界面2025-01-19 14:01:03
  • phpjpg一句话木马2025-01-19 14:01:03
  • ifdef 与2025-01-19 14:01:03