一篇文章带你分清楚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,一经查实,立即删除!

相关文章

VMware linux 在2.4.20-8 中编译2.6.15.5 内核

软件准备: gcc-3.2.2-5.i386.rpm :用来编译 ncurses-5.6.tar.gz:用来配合make menuconfig 命令配置内核 bison-2.4.tar.gz :语法解析器 flex-2.5.35.tar.bz2 :词法解析器 m4-1.4.9.tar.gz: modutils-2.4.…

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

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

ymPrompt.js消息提示组件

详细说明&#xff1a; http://www.ajaxbbs.net/test/ymPrompt4.0/demo.html 1、在页面中引入ymPrompt.js。如&#xff1a;<script type"text/javascript" src"ymPrompt.js"></script> 2、在页面中引入对应的皮肤文件的CSS&#xff0c;如&…

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

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

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安装文件 官方下载站点&#xff1a;http://www.igniterealtime.org/downloads/index.jsp#openfire openfire是服务器&#xff0c;下面还有一个spark&#xff0c;这个是一…

Open Flash Chart 初体验

今天项目中要用到图表统计&#xff0c;原来用的是Dundas 但效果不怎么好 后来发现Open Flash Chart不错 而且是结合着Flash 比较动态 可到官方下载查看http://teethgrinder.co.uk/open-flash-chart/而且是很多语言都支持的 虽然有专门语言的&#xff0c;但我还是喜欢使用原生…

如何用C#在Excel中生成图表?

如何用C&#xff03;在Excel中生成图表&#xff1f;exc.Charts.Add(oMissing,oMissing,1,oMissing); exc.ActiveChart.ChartTypeExcel.XlChartType.xlColumnClustered; exc.ActiveChart.SetSourceData(worksheet.get_Range("A1","B10"),Excel.XlRow…

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

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

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

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

在 .NET 中加载椭圆曲线 (EC) 密钥

在 .NET 中加载椭圆曲线 (EC) 密钥本文将讨论在.NET 中解析和加载EC 密钥的不同方式。在本文中&#xff0c;您将了解 EC 密钥的构成&#xff0c;然后了解如何以四种不同的方式使用这些知识ECDsa在 .NET 中加载或创建对象。到本文结束时&#xff0c;您应该能够加载 EC 密钥&…

线性跟驰模型 matlab,Bierley非线性跟驰模型特性仿真分析

第 28卷第 4期 2014年 8月 黑 龙 江 工 程 学 院 学 报 Journal of Heilongjiang Institute of Technology VoL 28&#xff0c;NO&#xff0e;4 Aug&#xff0e;&#xff0e;2014 Bierley非线性跟驰模 型特性仿真分析 李全艳&#xff0c;崔 琳&#xff0c;詹晓松 (黑龙江工程学…

MDT部署中命令行脚本的使用。

参考&#xff1a;http://blogs.technet.com/b/deploymentguys/archive/2010/07/07/using-command-shell-scripts-with-mdt.aspx OK… I’ll admit it, I like to write Command Shell (CMD) scripts when I can. For me it’s like putting on an old broken-in pair of sneak…

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

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

世界上最伟大的十大公式

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

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

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

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

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

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…

php ip处理函数,PHP取ip地址函数

从thinkphp3.2中提取出来的取请求ip地址的函数/*** 获取客户端IP地址* param integer $type 返回类型 0 返回IP地址 1 返回IPV4地址数字* param boolean $adv 是否进行高级模式获取(有可能被伪装)* return mixed*/function get_client_ip($type false, $adv true) {$type …

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

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