应使用哪个 OAuth 2.0 提供商的 JWK 来验证 OpenID Connect `id_token`?

Which of an OAuth 2.0 provider's JWKs should be used to verify an OpenID Connect `id_token`?

如果身份验证服务器提供多个 JSON Web 密钥(例如 https://www.googleapis.com/oauth2/v3/certs),作为 OPenID Connect 隐式流程的一部分,应该将其用于验证 OpenID Connect id_token

id_token 是否应该使用第一个 JSON 网络密钥、所有 JSON 网络密钥进行验证,或者 id_token 是否被认为有效(如果可以)使用提供的任何这些 JSON Web 密钥进行验证?

谢谢!

当 OpenID Connect 提供商可以使用多个密钥来签署 id_token 时,id_token 的 header 通常包含一个密钥标识符(在kid 元素)实际使用的密钥。这对应于在您描述的 (jwks_uri) 端点上发布的 JWK 中的 kid 元素。因此 id_token 只有在可以使用与 header 中的 kid 关联的密钥进行验证时才有效。