Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 正在验证从oauth2/v4/token接收的Google OAuth id令牌_C#_.net_Google Oauth_Google Authentication - Fatal编程技术网

C# 正在验证从oauth2/v4/token接收的Google OAuth id令牌

C# 正在验证从oauth2/v4/token接收的Google OAuth id令牌,c#,.net,google-oauth,google-authentication,C#,.net,Google Oauth,Google Authentication,我们目前正在使用Google OpenId Connect对我们的用户进行身份验证 我正在通过token\u端点成功检索访问令牌和id令牌,如上所述。稍后,我验证id令牌,如前所述。token\u端点将通过(谷歌推荐的)接收 问题 但几天后,发现文档似乎出现了新版本,因为token\u端点已从 https://www.googleapis.com/oauth2/v3/token 到 新端点返回稍长的id标记,该标记不能再通过https://www.googleapis.com/oauth2/v

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

我正在通过
token\u端点成功检索
访问令牌
id令牌
,如上所述。稍后,我验证
id令牌
,如前所述。
token\u端点
将通过(谷歌推荐的)接收

问题

但几天后,发现文档似乎出现了新版本,因为
token\u端点
已从

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

新端点返回稍长的
id标记
,该标记不能再通过
https://www.googleapis.com/oauth2/v1/tokeninfo?id_token=xxx
。请求返回时出错

{
 "error": "invalid_token",
 "error_description": "Invalid Value"
}
如果我将
token\u端点
硬编码到旧url(
https://www.googleapis.com/oauth2/v3/token
)一切都像以前一样正常

问题

由于旧的已在几天前关闭,我认为在关闭、新的
token\u端点
id\u令牌
的验证之间可能存在某种关联,但我还没有找到任何东西


是否有任何解决方案可以通过
https://www.googleapis.com/oauth2/v1/tokeninfo?id_token=xxx
url?为了调试,使用
tokeninfo
端点更容易,稍后在生产中,我们可能会在本地()验证令牌。

无效的\u令牌
错误是由
v1/tokeninfo
中的问题引起的,与
v4/token
端点的相关,正如您所怀疑的。该问题已得到解决,令牌应在
tokeninfo
再次正确验证。谢谢你的详细帖子

你说得对,上周发布了一份发现文件的副本。看起来
tokeninfo
中有一个bug(它实际上不是OpenID Connect的一部分,但我同意它在开发过程中是一个有用的工具)。作为一种临时解决方法,您可以返回到旧的发现文档(从而获得以前的格式id令牌),或者避免使用
tokeninfo
,现在就实现本地id令牌验证。这是一个方便的在线开发工具。谢谢你的回答,是的,它似乎又起作用了。但是因为昨天我有时间,所以我实施了本地验证(正如您所建议的)。实现基于以下答案:。对于调试来说,
tokeninfo
再次工作是件好事。太棒了!当您投入生产时,本地验证无疑是首选,因此您的时间花得很好:)
{
 "error": "invalid_token",
 "error_description": "Invalid Value"
}