Appendix D. Notes on Key Selection
Appendix D. 密钥选择说明 (Notes on Key Selection)
本附录说明应用程序可使用的算法, 用于从一组候选密钥中选择验证 JWS 所需的密钥.
密钥选择考虑因素 (Key Selection Considerations)
当应用程序有多个可用密钥时, 以下 Header Parameter 可辅助密钥选择:
-
"kid" (Key ID): 提供关于所用密钥的提示. 应用程序可以将其与候选密钥的 JWK 表示中的 "kid" 参数进行匹配.
-
"jku" (JWK Set URL): 指向一组 JSON 编码的公钥, 其中一个公钥对应于签名密钥.
-
"jwk" (JSON Web Key): 包含用于签名的实际公钥.
-
"x5u" (X.509 URL): 指向 X.509 证书或证书链.
-
"x5c" (X.509 Certificate Chain): 直接包含 X.509 证书或证书链.
-
"x5t" (X.509 Certificate SHA-1 Thumbprint): 包含证书的指纹 (thumbprint).
-
"x5t#S256" (X.509 Certificate SHA-256 Thumbprint): 包含证书的 SHA-256 指纹.
选择算法 (Selection Algorithm)
典型的密钥选择算法可以:
- 检查 "kid" 是否存在并与已知的 key ID 匹配
- 如果 "jwk" 存在, 直接使用该密钥
- 如果 "jku" 存在, 获取 JWK Set 并查找匹配的密钥
- 如果存在 X.509 参数, 验证证书并从证书中提取密钥
- 回退到应用程序特定的密钥确定方法
应用程序 MUST 验证所选密钥适用于 "alg" Header Parameter 指定的算法.