【发布时间】:2015-07-07 03:20:57
【问题描述】:
我们目前正在使用 Google OpenId Connect 对我们的用户进行身份验证。
我正在通过token_endpoint 成功检索access token 和id 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_endpoint和id_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