跳到主要内容

Appendix D. Notes on Key Selection

Appendix D. 密钥选择说明 (Notes on Key Selection)

本附录说明应用程序可使用的算法, 用于从一组候选密钥中选择验证 JWS 所需的密钥.

密钥选择考虑因素 (Key Selection Considerations)

当应用程序有多个可用密钥时, 以下 Header Parameter 可辅助密钥选择:

  1. "kid" (Key ID): 提供关于所用密钥的提示. 应用程序可以将其与候选密钥的 JWK 表示中的 "kid" 参数进行匹配.

  2. "jku" (JWK Set URL): 指向一组 JSON 编码的公钥, 其中一个公钥对应于签名密钥.

  3. "jwk" (JSON Web Key): 包含用于签名的实际公钥.

  4. "x5u" (X.509 URL): 指向 X.509 证书或证书链.

  5. "x5c" (X.509 Certificate Chain): 直接包含 X.509 证书或证书链.

  6. "x5t" (X.509 Certificate SHA-1 Thumbprint): 包含证书的指纹 (thumbprint).

  7. "x5t#S256" (X.509 Certificate SHA-256 Thumbprint): 包含证书的 SHA-256 指纹.

选择算法 (Selection Algorithm)

典型的密钥选择算法可以:

  1. 检查 "kid" 是否存在并与已知的 key ID 匹配
  2. 如果 "jwk" 存在, 直接使用该密钥
  3. 如果 "jku" 存在, 获取 JWK Set 并查找匹配的密钥
  4. 如果存在 X.509 参数, 验证证书并从证书中提取密钥
  5. 回退到应用程序特定的密钥确定方法

应用程序 MUST 验证所选密钥适用于 "alg" Header Parameter 指定的算法.