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

随着移动互联网的兴起,传统基于session/cookie的web网站认证方式转变为了基于OAuth2等开放授权协议的单点登录模式(SSO),相应的基于服务器session+浏览器cookie的Auth手段也发生了转变,Json Web Token出现成为了当前的热门的Token Auth机制。

Json Web Token(JWT)

JSON Web Token(JWT)是一个非常轻巧的规范。这个规范允许我们使用JWT在两个组织之间传递安全可靠的信息。

官方定义:JSON Web Token (JWT) is a compact URL-safe means of representing claims to be transferred between two parties

JWT Auth

现在网上大多数介绍JWT的文章实际介绍的都是JWS(JSON Web Signature),也往往导致了人们对于JWT的误解,但是JWT并不等于JWS,JWS只是JWT的一种实现,除了JWS外,JWE(JSON Web Encryption)也是JWT的一种实现。
下面就来详细介绍一下JWT与JWE的两种实现方式:

JWT,JWS与JWE

JSON Web Signature(JWS)

JSON Web Signature是一个有着简单的统一表达形式的字符串:

JWS

头部(Header)

头部用于描述关于该JWT的最基本的信息,例如其类型以及签名所用的算法等。
JSON内容要经Base64 编码生成字符串成为Header。

载荷(PayLoad)

payload的五个字段都是由JWT的标准所定义的。

  1. iss: 该JWT的签发者

  2. sub: 该JWT所面向的用户

  3. aud: 接收该JWT的一方

  4. exp(expires): 什么时候过期,这里是一个Unix时间戳

  5. iat(issued at): 在什么时候签发的

后面的信息可以按需补充。
JSON内容要经Base64 编码生成字符串成为PayLoad。

签名(signature)

这个部分header与payload通过header中声明的加密方式,使用密钥secret进行加密,生成签名。
JWS的主要目的是保证了数据在传输过程中不被修改,验证数据的完整性。但由于仅采用Base64对消息内容编码,因此不保证数据的不可泄露性。所以不适合用于传输敏感数据。

JSON Web Encryption(JWE)

相对于JWS,JWE则同时保证了安全性与数据完整性。
JWE由五部分组成:

JWE组成

具体生成步骤为:

  1. JOSE含义与JWS头部相同。

  2. 生成一个随机的Content Encryption Key (CEK)。

  3. 使用RSAES-OAEP 加密算法,用公钥加密CEK,生成JWE Encrypted Key。

  4. 生成JWE初始化向量。

  5. 使用AES GCM加密算法对明文部分进行加密生成密文Ciphertext,算法会随之生成一个128位的认证标记Authentication Tag。
    6.对五个部分分别进行base64编码。

可见,JWE的计算过程相对繁琐,不够轻量级,因此适合与数据传输而非token认证,但该协议也足够安全可靠,用简短字符串描述了传输内容,兼顾数据的安全性与完整性。  

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/298906.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

这五大基础原理,总是牛逼的无话可说

▲ 点击查看关于这几年很火的STEM教育理念,相信大家早就不陌生了。之前小木推荐读的这类读物,一般都是加上艺术(ART)的STEAM的5大学科。但是最近小木发现了这套以4大主要学科为主的《英国儿童经典STEM丛书》,不但有艺术…

androidstudio学习总结_Android 开发工程师自述:2年的开发,我总结了7条经验

全文共3547字,预计学习时长11分钟“纸上得来终觉浅,绝知此事要躬行。”“没有调查就没有发言权。”“实践出真知。”古今中外,无数名言警句都告诉我们实际去做一件事的重要性。笔者从最初对安卓开发萌生兴趣到现在已有两年之久了,…

php抓取统计局区划代码,抓取国家统计局的代码和名称,爬取,区域,划分,及

from bs4 import BeautifulSoupimport pandas as pdimport requestsheaders {User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36}获取一级代码、名称、下一级链接通过设置参数originUrl来调…

XMPP聊天之Openfire 的安装和配置---Mac OS

2019独角兽企业重金招聘Python工程师标准>>> 一、下载并安装openfire 1、下载最新的openfire安装文件 官方下载站点:http://www.igniterealtime.org/downloads/index.jsp#openfire openfire是服务器,下面还有一个spark,这个是一…

物理学十大著名经典实验!你知道几个?

科学实验是物理学发展的基础,又是检验物理学理论的惟一手段,特别是现代物理学的发展,更和实验有着密切的联系。现代实验技术的发展,不断地揭示和发现各种新的物理现象,日益加深人们对客观世界规律的正确认识&#xff0…

5码默认版块_5个小众的生活学习类的宝藏App

今天分享 5 个宝藏 App ,每一个都是小众冷门,每一个都是自己用心挑选,相信可以让你眼前一亮。所有 App 下载方法文章末尾提供。1 卡片日记卡片日记是一个颜值极高的卡片日记软件,它备受好评,可以说你用过就知道好用&am…

CSS/DIV网页设计视频教程目录【转】

CSS/DIV网页设计视频教程目录 欢迎您来到前沿视频教室,下面列出的是CSS/DIV网页设计视频教程列表。这组视频教程是配合《精通CSSDIV网页样式与布局》图书制作的,每一课对应于图书中的每一章。 我们还会不断地推出相关的课程, 如果您有兴趣&am…

世界上最伟大的十大公式

▲ 点击查看英国科学期刊《物理世界》曾让读者投票评选了“最伟大的公式”,最终榜上有名的十个公式既有无人不知的112,又有著名的Emc^2;既有简单的-圆周公式,又有复杂的欧拉公式……这些公式不仅仅是数学家和物理学家的智慧结晶&a…

区块链浏览器_全球首款区块链浏览器是啥名堂?傲游6首发体验

[PConline 应用]沉寂多年的傲游浏览器终于准备发布大版本更新了,这次为大家带来的是傲游浏览器6,一个被官方称为“世界第一个区块链浏览器”的新版本,那么,有何特色呢?我们一起来看看吧。傲游浏览器6(后简称傲游6)在安…

ASP.NET Core官方文档+源码,这样学效率高10倍!

.NET Framework停更一年了,学习.NET Core跨平台是大势所趋。如何快速学习ASP.NET Core?在我看来,先看微软ASP.NET Core5.0官方中文文档,再大致读一遍源码,最后结合一些场景做些扩展封装,就可以很轻松的驾驭…

WPF 2D绘图(2)Geometry

Shape是对Geometry的一种封装,Shape本质上还是通过绘制Geometry的形状,然后以填充笔刷来呈现效果 如Rectangle <Path Stroke"Black" StrokeThickness"1" Fill"#CCCCFF"><Path.Data><RectangleGeometry Rect"30,55 100 30&qu…

Windows Server 2008 R2 之三十故障转移群集(二)

五、群集的管理破坏群集&#xff1a;一个两节点的群集&#xff0c;对于第一个节点必须在“节点”中选择“退出”才能退出群集&#xff1b;对于第二个节点&#xff0c;必须在下图选择“破坏群集”才能退出群集。配置服务和应用程序&#xff1a;节点&#xff1a;存储&#xff1a;…

提升心力---摆脱拿着锤子看啥都是钉子

从程序员到一个团队的管理者&#xff0c;这中间需要经过一次又一次的蜕变&#xff0c;最终才能变得处理任何事情都得心应手。韩非子曾说&#xff1a;下君用己之力、中君用人之力、上君用人之智。大部分的管理者可能都处在用人之力的阶段&#xff0c;并向着用人之智前进。最近看…

curd什么意思中文_每日一句英译英:She's a ten什么意思?

每日一句英译英&#xff1a;Shes a ten什么意思&#xff1f;用一句“没头没脑”的英语句子劈头盖脑就问你“中文什么意思&#xff1f;“&#xff0c;这是典型的把英语当纯粹知识学习的例子&#xff0c;也是“只求答案&#xff0c;不问过程”的应试思维模式。“知识海洋”浩瀚无…

你家猫砸东西是不是也专挑贵的砸?

1 这猫也太会了吧&#xff1f;▼2 哥哥坐地上耍赖想让爸爸抱被妹妹出手摆平了▼3 好可爱的校车▼4 也许人家只是想静静呢&#xff1f;▼5 最近很流行的【泼花成画】▼6 妹妹的表情简直学到了精髓▼7 介绍一下&#xff0c;这是一只阿拉斯猪和阿拉斯小猪崽儿▼你点的每个赞…

SQL Server 分区表 处理海量数据

你是不是也在苦苦寻求优化自己的SQL Server数据库的方法?如果你的数据库里有不少非常大的表格&#xff0c;分区功能能够帮到你很大的忙…… 【IT专家网独家】你是不是也在苦苦寻求优化自己的SQL Server数据库的方法?如果你的数据库里有不少非常大的表格&#xff0c;分区功能能…

第十一周项目3-程序的多文件组织

下面的程序中的代码分别保存在两个文件中&#xff0c;利用多文件的方式组织。 mian.cpp /**Copyright (c) 2014,烟台大学计算机学院*All gight reserved.*文件名称&#xff1a;temp.cpp*作者&#xff1a;邵帅*完成时间&#xff1a;2014年11月5日*版本号&#xff1a;v1.0 */ #in…

st link v2引脚连接_ST-Link资料02_ST-Link固件介绍,及固件命名规则

说明&#xff1a;本文原创作者『strongerHuang』本文首发于微信公众号『嵌入式专栏』&#xff0c;同时也更新在我的个人网站&#xff1a;EmbeddedDevelop一、写在前面一些人可能看了上一篇关于ST-Link的内容&#xff0c;就会产生疑惑。。。ST-Link有那么多硬件版本&#xff0c;…

奇妙的数学动图,美到令人窒息!

全世界只有3.14 % 的人关注了爆炸吧知识来源&#xff1a;制造科技原理&#xff0c;版权原作者所有。如有侵权联系删除&#xff01;论文查重券 限时免费领 官方授权 安全保障 真实有效点「在看」的人都变好看了哦

matlab井深测量,一种井深测量系统及方法与流程

本申请涉及钻井技术领域&#xff1a;&#xff0c;尤其涉及一种井深测量系统及方法。背景技术&#xff1a;&#xff1a;在钻井施工中过程中&#xff0c;施工人员需要实时了解井深的变换情况&#xff0c;因此&#xff0c;需要在钻井的过程中实时对井深进行测量。。目前&#xff0…