【问题标题】:Validating Google OAuth id token received from oauth2/v4/token验证从 oauth2/v4/token 收到的 Google OAuth id 令牌
【发布时间】:2015-07-07 03:20:57
【问题描述】:

我们目前正在使用 Google OpenId Connect 对我们的用户进行身份验证。

我正在通过token_endpoint 成功检索access tokenid token,如here 所述。稍后我验证id token,如here 所述。 token_endpoint 将通过 discovery document 接收(按照 Google 的建议)。

问题

但是这几天发现文档好像有新版本了,因为token_endpoint已经变了

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

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

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

{
 "error": "invalid_token",
 "error_description": "Invalid Value"
}

如果我将 token_endpoint 硬编码到旧网址 (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#)。

【问题讨论】:

  • 你是对的,上周发布的发现文件有一个new version。看起来tokeninfo 中有一个错误(这实际上不是 OpenID Connect 的一部分,但我同意它在开发过程中是一个有用的工具)。作为临时解决方法,您可以返回旧的发现文档(从而获得以前的格式 id 令牌),或者避免使用 tokeninfo 并立即实施本地 ID 令牌验证。这是inspecting JWTs 在开发期间的便捷在线工具。

标签: c# .net google-oauth google-authentication


【解决方案1】:

invalid_token 错误是由v1/tokeninfo 中的问题引起的,与v4/token 端点中的modified ID tokens 相关,正如您所怀疑的那样。该问题已解决,令牌应在tokeninfo 再次正确验证。感谢您的详细帖子!

【讨论】:

  • 感谢您的回答,是的,它似乎又可以工作了。但是因为昨天我有一些时间,所以我实施了本地验证(如你所建议的那样)。该实现基于此答案:stackoverflow.com/a/29779351/333404。对于调试,tokeninfo 再次工作很好。
  • 太棒了!当您进行生产时,本地验证绝对是首选,因此您的时间得到了充分利用:)
猜你喜欢
  • 2021-06-10
  • 2021-04-03
  • 2016-12-27
  • 2015-08-27
  • 1970-01-01
  • 1970-01-01
  • 2012-07-04
  • 2016-09-06
  • 2016-10-13
相关资源
最近更新 更多