前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JWT、JWS于JWE

JWT、JWS于JWE

作者头像
喵叔
发布2021-11-10 11:06:24
4050
发布2021-11-10 11:06:24
举报
文章被收录于专栏:喵叔's 专栏

以前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认证中使用。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/11/06 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • JWS
  • JWE
相关产品与服务
访问管理
访问管理(Cloud Access Management,CAM)可以帮助您安全、便捷地管理对腾讯云服务和资源的访问。您可以使用CAM创建子用户、用户组和角色,并通过策略控制其访问范围。CAM支持用户和角色SSO能力,您可以根据具体管理场景针对性设置企业内用户和腾讯云的互通能力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档