Advertisement

黑马头条项目 JWT—4.1 JWT & JWS & JWE

阅读量:

Json Web Token(JWT)

JSON Web Token(JWT)是一种简洁明了的标准。这种标准被用来在两个组织之间传输信息的安全可靠性。

官方定义:JSON Web Token (JWT) is a compact and URL-safe method for representing claims that are transferred between two entities.

现在网上大多数常见的关于JWT的文章实际上都在介绍JSON Web Signature (JWS),这种做法往往会误导公众关于JWT的概念。严格来说,虽然JWS是一种常见的实现方式之一,在实际应用中它并不等同于整个JWT体系。实际上两者概念不同:其中一种实现方式是使用JSON Web Signature协议(JWS)进行签名操作;除此之外,则还有其他相关协议如JSON Web Encryption(JWE)作为另一种重要的实现方案。

下面就来详细介绍一下JWT与JWE的两种实现方式:

JSON Web Signature(JWS)

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

头部(Header)

头部用于包含关于该JWT的核心信息, 如其类型以及签名所采用的具体算法等。 JSON数据需按照Base64编码原则转换为字符串形式作为Header字段存在。

载荷(PayLoad)

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

  1. iss: 该JWT的发布主体
  2. sub: 目标用户的标识符
  3. aud: JWT持有者的对应方
  4. exp(expires):表示为Unix时间戳的一个数值字段,默认情况下以秒为单位计算;此字段表示当口令被设置时所对应的过期时间点。
  5. iat(issued_at):标识符字段值表示当密码被设置的时间点;此字段仅在密码被设置时生效。

后续的信息可以根据需要进行补充。JSON数据要经Base64编码生成字符串转换为PayLoad

签名(signature)

该部分中的header与payload借助header内声明指定的加密方案,并利用密钥secret执行加密操作以生成签名;而JWS体系的主要目标是确保数据在传输过程中的安全性并可实现完整性校验;然而由于其仅依赖Base64编码来处理消息内容,在此过程中无法防止信息泄露;因此,在传输敏感信息时JWS显得不够安全

JSON Web Encryption(JWE)

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

JWE组成

具体生成步骤为:

JOSE目的与JWS头部字段等同。
通过算法生成一个随机选取的Content Encryption Key(CEK)。
利用RSAES-OAEP加密算法对CEK进行加密操作,并采用公钥对之进行处理从而得到JWE Encrypted Key。
初始化向量通常由...组成。
应用AES GCM加密算法对原始明文数据进行处理以得到最终的密文Ciphertext,并伴随产生一个128位认证标记Authentication Tag。
对上述六个部分逐一应用Base64编码并确保每个部分都被正确编码。

可见,在计算复杂度方面,JWE具有显著优势,然而其不具备轻量特性,因此更适合用于数据传输而非token认证.另一方面,该协议展现出较高的安全性,采用了简洁的方式进行内容描述,既保证了数据的安全性又确保了完整性.

全部评论 (0)

还没有任何评论哟~