Appendix D. Notes on Key Selection (关于密钥选择的说明)
有多种方法可以识别用于验证 JWS 的密钥. 为了最大限度地提高互操作性, 应用程序应使用 "kid" (key ID, 密钥 ID) Header Parameter 来指示用于验证 JWS 的密钥. 或者, 应用程序可以使用其他 Header Parameters, 例如 "jku" (JWK Set URL) 或 "x5c" (X.509 certificate chain, X.509 证书链).
密钥选择策略
应用程序可能使用以下策略之一来选择验证密钥:
-
使用 "kid" 参数: 如果存在 "kid" Header Parameter, 则使用其值在可用密钥集中查找相应的密钥.
-
使用 "jku" 参数: 如果存在 "jku" Header Parameter, 则从指定的 URL 检索 JWK Set, 并使用其中的密钥之一进行验证.
-
使用 "jwk" 参数: 如果存在 "jwk" Header Parameter, 则直接使用嵌入的 JWK 进行验证.
-
使用 "x5u" 或 "x5c" 参数: 如果存在 X.509 相关的 Header Parameters, 则使用证书中的公钥进行验证.
-
应用程序特定的方法: 应用程序可以使用其他方法来确定验证密钥, 例如基于发行者、受众或其他上下文信息.
安全注意事项
在选择密钥时, 应用程序应该:
- 验证密钥的来源和真实性
- 确保密钥与预期的算法兼容
- 检查密钥的有效期和撤销状态
- 实施适当的密钥管理策略
有关密钥识别的更多信息, 请参见第 6 节.