以前WEB网站认证方式都是基于传统的服务器session+浏览器cookie的Auth手段,近年来Web网站认证方式逐步转变为基于OAuth2等开放协议的SSO模式。其中Json Web Token(简称JWT) 成为当前热门的Token Auth 机制。
那么什么是JWT呢?JWT是一个轻量级的OAuth2规范,允许我们使用JWT在两个或多个组织之间安全可靠的传递数据。通俗的说JWT其实就是在易碎品外包了层气泡膜,保护数据不会被破坏和破解。
我们通常在网络上所看到的关于JWT讲解的文章大多是讲解的是JWS,因此导致需对人对JWT产生了误解,其实JWS并不是JWT,它只是JWT的一种实现方式。一般常见的JWT实现有JWS和JWE,下面我们来看一下什么是JWS和JWE。

JWS

JWS全称是 Json Web Signatura,是一个简单的统一表达形式的字符串。这个字符串中包含Header、Payload和Signtrue.
其中,Header用于描述JWT的基本信息,一般包含Type(类型)和alg(签名所用的算法),Header的算法必须经过Base64编码。
Payload包含5个字段,这5个字段都是由JWT定义的:

  • iss:JWT签发者;
  • sub:JWT面向的用户;
  • aud:JWT的接收方;
  • exp:unix时间戳定义的过期时间;
  • iat:签发时间
  • …(后面的内容按需补充)

同样,Payload内容也需要经过Base64编码。
Signature这个部分的内容是Header+Payload内容,并经过加密后的字符串。加密方式则是Header中所声明的签名方式。
JWS的目的主要是保证数据在传输过程中不被修改,验证数据的完整性,但是由于使用Base64对消息进行编码,因此无法保证数据不泄露,所以一般不会用它传输敏感数据。

JWE

为了保证数据的安全性与完整性,JWE出现了。JWE包含5部分:JOSE Header、JWE Encrypied Key、Initialization Vector、Ciphertext和Authentication Tag。JWE的生成步骤如下:

  • JOSE与JWS Header一样;
  • 生成随机的Content Encryption Key;
  • 使用 RSAES-OAEP算法,并使用公钥加密CEK,生成JWE Encrypted Key;
  • 生成JWE初始化向量;
  • 使用AES GCM算法对铭文部分加密,生成密问Ciphertext,同时AES GCM算法也会生成一个128位的认证标记Authentication Tag;
  • 对以上5部分分别进行Base64编码,并用点号拼接在一起。

从前面的5各步骤可以看出JWE的生成以及计算过程相对复杂不够轻量,因此它比较适合在数据传输上使用,不建议在token认证中使用。

JWT、JWS与JWE相关推荐

  1. 一篇文章带你分清楚JWT,JWS与JWE

    随着移动互联网的兴起,传统基于session/cookie的web网站认证方式转变为了基于OAuth2等开放授权协议的单点登录模式(SSO),相应的基于服务器session+浏览器cookie的Aut ...

  2. java jwe/jws_一篇文章带你分清楚JWT,JWS与JWE

    随着移动互联网的兴起,传统基于session/cookie的web网站认证方式转变为了基于OAuth2等开放授权协议的单点登录模式(SSO),相应的基于服务器session+浏览器cookie的Aut ...

  3. JWT,JWS与JWE区别

    JWT,JWS与JWE区别 原文:https://www.jianshu.com/p/50ade6f2e4fd 随着移动互联网的兴起,传统基于session/cookie的web网站认证方式转变为了基 ...

  4. 关于 JWT、JWS、JWE

    JWT(JSON Web Token) JWT 是一个字符串,表示了一组字段声明的集合,以 JSON 格式组织数据,并以 JWS 或 JWE 方式编码. JWT 由 Header.Payload.Si ...

  5. 【JWT】JWT JWS JWE | 在线JWS解析工具

    JWT.JWS.JWE 主要参考: https://www.51cto.com/article/630971.html 辅助参考: https://www.jianshu.com/p/50ade6f2 ...

  6. 只知道JWT,那JWE、JWS、JWK、JWA呢?

    2022年的开工福利已经发布,点击下面按钮获取最新PDF. 移动端兴起和OAuth2的流行导致JWT这几年火得一塌糊涂.今天要介绍另一个规范集JOSE[1],全称Javascript Object S ...

  7. JWT JWS JWE

    Json Web Token(JWT) JSON Web Token(JWT)是一个非常轻巧的规范.这个规范允许我们使用JWT在两个组织之间传递安全可靠的信息. 现在网上大多数介绍JWT的文章实际介绍 ...

  8. JWT JWS JWE三者区别

    JWT & JWS & JWE JWT : Json Web Token Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准( ...

  9. jwt重放攻击_4个点搞懂JWT、JWS、JWE

    1.JWT是何物,有哪些常用的场景 JWT(json web token)是设计一种简洁,安全,无状态的token的实现规范rfc7519,通常用于网络请求方和网络接收方之间的网络请求认证. jwt的 ...

最新文章

  1. spring+hibernate+struts整合(1)
  2. 编写一个Zipkin Server
  3. Migw用CMD编译C语言,NOTEPAD++用MinGW编译C,C++语言
  4. EF5.x Code First 一对多关联条件查询,Contains,Any,All
  5. DotNet程序员是不是最不幸福?
  6. socket.io框架学习
  7. 深度剖析Java数据结构之队列(一)——双端队列(ArrayDeque)
  8. Enum 作为一个数据源绑定
  9. OO2019第一次作业总结
  10. 《Java程序员职场全攻略:从小工到专家》连载八:加入什么样的公司
  11. wpf 写个简单的控件吧
  12. Atitit 技术学习 的方法总结 attilax总结 目录 1.1. 跨框架 1 1.2. 跨语言学习法 1 1.3. 概念学习法 1 1.1 在比较中学习 多语言  2 1 1.3 .2 在历史
  13. Delphi XE8移动应用开发中Andr​​oid权限设置
  14. 【学习笔记】MATLAB与数学建模——蒙特卡罗模拟仿真
  15. QQ浏览器9 主页无法修改成功的解决办法
  16. 二月、三月校招面试复盘总结(二)
  17. Unreal Engine 4 Radiant UI 入门教程(一)制作Radiant HUD
  18. 动态路由RID ospf
  19. pepper的scau大一刷题之实验六
  20. 电子证据如何有效辨真伪?微版权“在线验证”电子数据的真实性

热门文章

  1. UD三分区补充教程1——激活不同分区对于UD三分区bios启动和uefi启动兼容性影响的讨论
  2. 如何使用Nginx防御DDoS攻击?
  3. linux入门学习1之FastQC
  4. 软件设计分为前端后端吗
  5. 【Vue项目复习笔记】详情页的展示
  6. WatchOS开发教程之四: Watch与 iPhone的通信和数据共享
  7. 华为服务器bios中修改磁盘格式,华为服务器设置bios
  8. 前端代码是怎样智能生成的
  9. 数据库《实验一 SQL Server数据库及对象的设计》
  10. 领域模型 PO、VO、DAO、BO、DTO、POJO