当前位置: 首页 > 知识库问答 >
问题:

无法访问Azure上的OpenId UserInfoendpoint(AADSTS90010: JWT令牌不能与UserInfoendpoint一起使用)

史和泰
2023-03-14

我尝试使用以下GET访问Office365 Azure租户上的用户的OpenId UserInfoendpoint:

GET https://login.windows.net/common/openid/userinfo HTTP/1.1
Authorization: Bearer eyJ0eXAiOiJ(...remainder deleted for brevity...)
Host: login.windows.net

响应失败并出现“400错误请求”,以及更具体的错误“AADSTS50063:凭据解析失败。AADSTS90010:JWT令牌不能与UserInfoendpoint一起使用”

HTTP/1.1 400 Bad Request
Cache-Control: no-cache, no-store
Pragma: no-cache
Content-Type: text/html
Expires: -1
Server: Microsoft-IIS/8.5
x-ms-request-id: ef5c8a50-69b5-40f1-ac5f-9c0fc5180aa2
x-ms-gateway-service-instanceid: ESTSFE_IN_6
X-Content-Type-Options: nosniff
Strict-Transport-Security: max-age=31536000; includeSubDomains
P3P: CP="DSP CUR OTPi IND OTRi ONL FIN"
WWW-Authenticate: Bearer correlation_id="e5c613a0-0a21-40e1-9ef6-    eacf77580608", error="invalid_request", error_codes="[50063, 90010]",     error_description="AADSTS50063: Credential parsing failed. AADSTS90010: JWT tokens cannot be used with the UserInfo endpoint.%0d%0aTrace ID: ef5c8a50-69b5-40f1-ac5f-9c0fc5180aa2%0d%0aCorrelation ID: e5c613a0-0a21-40e1-9ef6-eacf77580608%0d%0aTimestamp: 2015-02-20 14:13:42Z", timestamp="2015-02-20 14:13:42Z", trace_id="ef5c8a50-69b5-40f1-ac5f-9c0fc5180aa2"
Set-Cookie: x-ms-gateway-slice=productionb; path=/; secure; HttpOnly
Set-Cookie: stsservicecookie=ests; path=/; secure; HttpOnly
X-Powered-By: ASP.NET
Date: Fri, 20 Feb 2015 14:13:40 GMT
Content-Length: 0

使用的持有者令牌是未过期的访问令牌,适用于其他操作,例如检索 Exchange 电子邮件。

此外,当我在“https://www.googleapis.com/plus/v1/people/me/openIdConnect”(作为gmail访问场景的一部分)对openid userinfoendpoint使用相同的GET时,它工作正常

我在这里做错什么了吗?谢谢你的帮助!

一些额外信息:

-已经尝试使用id_token而不是access_token,但这没有什么区别。

-使用的Oauth作用域是“配置文件电子邮件”

-请求的资源是“https://outlook.office365.com/”

-客户端应用程序是本机应用程序,并已为“Windows Azure AD”和“Office 365 Exchange Online”启用所有委派权限

共有1个答案

孔鸿远
2023-03-14

Azure AD用户信息终结点此时不支持使用常规JWT访问令牌。相反,您可以通过在对令牌endpoint的请求中不指定任何资源来获取特定于用户信息的访问令牌。您可以将用户信息endpoint视为自身的资源,这需要特殊的令牌格式。

例如,在授权代码的情况下:

    < li >获取对< code > https://log in . windows . net/common/oauth 2/authorize的请求?...而没有< code>resource参数,并获取一个authorization_code < li >使用authorization_code向< code > https://log in . windows . net/common/oauth 2/token 发送请求,也不使用< code>resource参数。接收用户信息endpoint的访问令牌。 < li >获取对< code > https://log in . windows . net/common/OpenID/userinfo 的请求,将头中的访问令牌作为< code >授权:无记名AAAB(...令牌的剩余部分...)
 类似资料:
  • 这是一场噩梦。我在使用jwt验证Azure访问令牌签名时遇到问题。木卫一。不管我做什么,答案总是无效的签名。 有人能帮忙吗? 我的步骤: 我从MSALJava应用示例(msal-java-webapp-samp)生成了一个Token Id和Access Token。 我从我的Azure访问令牌中获得访问令牌头中的孩子访问。 我访问

  • 我很难让Auth0以JWT格式返回访问令牌。我需要JWT格式的文件,以便使用javajwt库验证它们。 我正在使用Auth0登录,并使用获取访问令牌-我尝试将访问群体设置为我们的API标识符(在多个位置,包括lock auth参数和负载),但没有成功-返回访问令牌,但不是JWT。 或者,是否有用于验证“本机”Auth0访问令牌的Java库? 返回的代码用于POST到

  • 我知道这里有人问过这个问题。然而,在这个问题上没有一行代码。我将分享我的代码,以便它可以帮助我和其他可能面临相同问题的人。 这里遵循代码... } } 因此,我使用以下命令创建了一个具有同化密钥的JWT: keytool-genkeypair-alias mytest-keyalg RSA-keypass mypass-keystore mytest。jks-storepass mypass 由于

  • 下面的代码运行良好,并从azure返回所需的访问令牌,但如果我试图用它从节点js或postman执行相同的函数,则会提示一个错误,如下所示: {“Error”:“invalid_client”,“error_description”:“aadsts70002:验证凭据时出错。aadsts50012:提供了无效的客户端机密。\r\n跟踪ID:922f61ca-0349-47fc-8c60-326cb

  • 我有一个使用 Msal 库获取的 Azure AD JWT 令牌,但是当我尝试验证此令牌时出现问题: 客户端:共享点 Web 部件 另一方面,我有一个服务器应用程序(Java),其中验证了访问令牌 验证人: 法典 我的问题是,当我尝试验证此令牌时,我收到了此错误:使用算法验证时,令牌的签名无效:SHA256with RSA 我被困在这个,如果令牌是正确的,为什么我有这个错误? 问候

  • 我想要下一个:从我的网站能够启动虚拟服务器(Ubuntu、linux、windows服务器)。我用AWS编辑了这个,通过IAM很容易找到访问密钥和令牌。 如果可能的话,我也希望使用Azure来获得访问密钥和令牌。我在这里找到了一些关于如何欣赏的教程:https://www.youtube.com/watch?v=ujzrq8Fg9Gc 我看到还有oAuth2,这太多了,无法为这个项目设置它。 还有