验证从 oauth2/v4/token 收到的 Google OAuth id 令牌

Validating Google OAuth id token received from oauth2/v4/token

我们目前正在使用 Google OpenId Connect 来验证我们的用户。

我已按照 here. Later on I validate the id token as described here. The token_endpoint will be received via the discovery document 所述(根据 Google 的建议)通过 token_endpoint 成功检索到 access tokenid token

问题

不过这几天发现文档好像有新版本了,因为token_endpoint已经从

改了
https://www.googleapis.com/oauth2/v3/token

https://www.googleapis.com/oauth2/v4/token

新端点 returns 稍长 id token,无法再使用 https://www.googleapis.com/oauth2/v1/tokeninfo?id_token=xxx 进行验证。错误

的请求 returns
{
 "error": "invalid_token",
 "error_description": "Invalid Value"
}

如果我将 token_endpoint 硬编码为旧的 url (https://www.googleapis.com/oauth2/v3/token),一切都会像以前一样正常工作。

问题

由于旧的 OpenID 2.0 几天前已经关闭,我认为关闭、新的 token_endpointid_token 的验证之间可能存在某种关联, 但我还没有找到任何东西。

是否有任何解决方案可以通过 https://www.googleapis.com/oauth2/v1/tokeninfo?id_token=xxx url 验证新的稍长的 id token?对于调试,使用 tokeninfo 端点更容易,稍后在生产中我们可能会在本地验证令牌 (Validating Google ID tokens in C#)。

invalid_token 错误是由 v1/tokeninfo 中的一个问题引起的,与 v4/token 端点的 有关,正如您所怀疑的那样。该问题已解决,令牌应在 tokeninfo 再次正确验证。感谢您的详细 [​​=17=]!