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 时:
- 通过应用程序特定机制获得载荷
- 计算 BASE64URL(JWS Payload)
- 重构完整的 JWS Signing Input: BASE64URL(UTF8(JWS Protected Header)) || '.' || BASE64URL(JWS Payload)
- 使用重构的 Signing Input 验证签名
带分离内容的 JWS JSON Serialization (JWS JSON Serialization with Detached Content)
在 JWS JSON Serialization 中, 只需从 JSON 对象中省略 "payload" 成员. 接收方必须通过其他方式获得载荷值, 并在签名验证期间使用它.
安全考虑 (Security Considerations)
使用分离内容的应用程序必须确保:
- 正确的载荷与签名相关联
- 载荷不能被攻击者替换
- 载荷传输/存储机制保持完整性