JWT、JWS与JWE
以前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相关推荐
- 一篇文章带你分清楚JWT,JWS与JWE
随着移动互联网的兴起,传统基于session/cookie的web网站认证方式转变为了基于OAuth2等开放授权协议的单点登录模式(SSO),相应的基于服务器session+浏览器cookie的Aut ...
- java jwe/jws_一篇文章带你分清楚JWT,JWS与JWE
随着移动互联网的兴起,传统基于session/cookie的web网站认证方式转变为了基于OAuth2等开放授权协议的单点登录模式(SSO),相应的基于服务器session+浏览器cookie的Aut ...
- JWT,JWS与JWE区别
JWT,JWS与JWE区别 原文:https://www.jianshu.com/p/50ade6f2e4fd 随着移动互联网的兴起,传统基于session/cookie的web网站认证方式转变为了基 ...
- 关于 JWT、JWS、JWE
JWT(JSON Web Token) JWT 是一个字符串,表示了一组字段声明的集合,以 JSON 格式组织数据,并以 JWS 或 JWE 方式编码. JWT 由 Header.Payload.Si ...
- 【JWT】JWT JWS JWE | 在线JWS解析工具
JWT.JWS.JWE 主要参考: https://www.51cto.com/article/630971.html 辅助参考: https://www.jianshu.com/p/50ade6f2 ...
- 只知道JWT,那JWE、JWS、JWK、JWA呢?
2022年的开工福利已经发布,点击下面按钮获取最新PDF. 移动端兴起和OAuth2的流行导致JWT这几年火得一塌糊涂.今天要介绍另一个规范集JOSE[1],全称Javascript Object S ...
- JWT JWS JWE
Json Web Token(JWT) JSON Web Token(JWT)是一个非常轻巧的规范.这个规范允许我们使用JWT在两个组织之间传递安全可靠的信息. 现在网上大多数介绍JWT的文章实际介绍 ...
- JWT JWS JWE三者区别
JWT & JWS & JWE JWT : Json Web Token Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准( ...
- jwt重放攻击_4个点搞懂JWT、JWS、JWE
1.JWT是何物,有哪些常用的场景 JWT(json web token)是设计一种简洁,安全,无状态的token的实现规范rfc7519,通常用于网络请求方和网络接收方之间的网络请求认证. jwt的 ...
最新文章
- spring+hibernate+struts整合(1)
- 编写一个Zipkin Server
- Migw用CMD编译C语言,NOTEPAD++用MinGW编译C,C++语言
- EF5.x Code First 一对多关联条件查询,Contains,Any,All
- DotNet程序员是不是最不幸福?
- socket.io框架学习
- 深度剖析Java数据结构之队列(一)——双端队列(ArrayDeque)
- Enum 作为一个数据源绑定
- OO2019第一次作业总结
- 《Java程序员职场全攻略:从小工到专家》连载八:加入什么样的公司
- wpf 写个简单的控件吧
- Atitit 技术学习 的方法总结 attilax总结 目录 1.1. 跨框架	1 1.2. 跨语言学习法	1 1.3. 概念学习法	1 1.1 在比较中学习 多语言 2	1 1.3 .2 在历史
- Delphi XE8移动应用开发中Andr​​oid权限设置
- 【学习笔记】MATLAB与数学建模——蒙特卡罗模拟仿真
- QQ浏览器9 主页无法修改成功的解决办法
- 二月、三月校招面试复盘总结(二)
- Unreal Engine 4 Radiant UI 入门教程(一)制作Radiant HUD
- 动态路由RID ospf
- pepper的scau大一刷题之实验六
- 电子证据如何有效辨真伪?微版权“在线验证”电子数据的真实性