跳到主要内容

9. Distinguishing between JWS and JWE Objects (区分 JWS 和 JWE 对象)

合法输入中, 以下方法都能区分对象是 JWS 还是 JWE:

  • Compact Serialization segment count: JWS 有 3 个以 . 分隔的 segment, JWE 有 5 个 segment.
  • JSON Serialization member: JWS 使用 payload member, JWE 使用 ciphertext member.
  • alg value: 如果 alg 表示 digital signature, MAC 或 none, 对象是 JWS. 如果它表示 Key Encryption, Key Wrapping, Direct Key Agreement, Key Agreement with Key Wrapping 或 Direct Encryption, 对象是 JWE.
  • enc member: JOSE Header 中存在 enc 时, 对象是 JWE, 否则通常是 JWS.

对 malformed input, 不同方法可能给出不同结果, 实现应按应用上下文和解析规则拒绝不一致或非法表示.