JSON Web 加密(JWE)

JSON Web 加密(JWE)使用基於 JavaScript Object Notation(JSON) 的資料結構表示加密內容。它定義了一種加密索賠資料的方法,以便只有預期的接收者才能讀取令牌中的資訊。

在 JWE JSON 序列化中,JWE 表示為包含以下八個成員中的一些或全部的 JSON 物件:

  "protected", with the value BASE64URL(UTF8(JWE Protected Header))
  "unprotected", with the value JWE Shared Unprotected Header
  "header", with the value JWE Per-Recipient Unprotected Header
  "encrypted_key", with the value BASE64URL(JWE Encrypted Key)
  "iv", with the value BASE64URL(JWE Initialization Vector)
  "ciphertext", with the value BASE64URL(JWE Ciphertext)
  "tag", with the value BASE64URL(JWE Authentication Tag)
  "aad", with the value BASE64URL(JWE AAD)

六個 base64url 編碼的結果字串和兩個不受保護的 JSON 物件值表示為 JSON 物件中的成員。

示例 JWE

以下示例 JWE Header 宣告:

  • 使用 RSA-PKCS1_1.5 演算法將內容加密金鑰加密到收件人以生成 JWE 加密金鑰
  • 使用 AES-256-GCM 演算法對明文進行加密,以生成 JWE 密文
  • 使用了具有 base64url 編碼__79_Pv6-fg 的指定 64 位初始化向量
  • 與用於加密 JWE 的金鑰對應的 X.509 證書的指紋具有 base64url 編碼 7noOPq-hJ1_hCnvWh6IeYI2w9Q0。
{
 "alg":"RSA1_5",
 "enc":"A256GCM",
 "iv":"__79_Pv6-fg",
 "x5t":"7noOPq-hJ1_hCnvWh6IeYI2w9Q0"
}

Base64url 編碼 JWE 標頭的 UTF-8 表示的位元組產生此編碼的 JWE 標頭值(帶有換行符僅用於顯示目的):

eyJhbGciOiJSU0ExXzUiLA0KICJlbmMiOiJBMjU2R0NNIiwNCiAiaXYiOiJfXzc5
X1B2Ni1mZyIsDQogIng1dCI6Ijdub09QcS1oSjFfaENudldoNkllWUkydzlRMCJ

有關更多資訊,請閱讀 JSON Web 加密規範(RFC 7516)