跳到主要内容

Appendix F. Detached Content

Appendix F. 分离内容 (Detached Content)

本附录演示如何表示带有分离内容的 JWS, 即载荷不嵌入 JWS 本身, 而是单独传输或存储.

使用场景 (Use Case)

分离内容在以下情况下很有用:

  • 载荷很大, 多次传输效率低
  • 接收方已经可以通过其他方式获得载荷
  • 签名需要与载荷分开存储或传输

带分离内容的 JWS Compact Serialization (JWS Compact Serialization with Detached Content)

在 JWS Compact Serialization 中, 分离内容通过省略载荷部分但保留句点分隔符来表示:

BASE64URL(UTF8(JWS Protected Header)) || '.' || '' || '.' || BASE64URL(JWS Signature)

这会在通常放置载荷的位置产生两个连续的句点字符.

示例 (Example)

带有分离内容的 JWS 可能如下所示:

eyJhbGciOiJIUzI1NiJ9..dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk

注意双句点 ('..') 表示载荷缺失.

验证 (Validation)

验证带有分离内容的 JWS 时:

  1. 通过应用程序特定机制获得载荷
  2. 计算 BASE64URL(JWS Payload)
  3. 重构完整的 JWS Signing Input: BASE64URL(UTF8(JWS Protected Header)) || '.' || BASE64URL(JWS Payload)
  4. 使用重构的 Signing Input 验证签名

带分离内容的 JWS JSON Serialization (JWS JSON Serialization with Detached Content)

在 JWS JSON Serialization 中, 只需从 JSON 对象中省略 "payload" 成员. 接收方必须通过其他方式获得载荷值, 并在签名验证期间使用它.

安全考虑 (Security Considerations)

使用分离内容的应用程序必须确保:

  • 正确的载荷与签名相关联
  • 载荷不能被攻击者替换
  • 载荷传输/存储机制保持完整性