azure - 尝试在 Azure US Gov 中获取授权码时出现 "AADSTS650057: Invalid resource"错误

标签 azure azure-active-directory

我正在开发一个 native 应用程序,该应用程序将允许用户连接到并管理他们的 Azure 订阅。为此,我在 Azure AD 中创建了一个具有以下委派权限的应用程序:

  • 登录并阅读用户个人资料。
  • 以组织用户身份访问 Azure 服务管理。

使用此应用程序的 ID,我可以连接到 Azure 常规区域中的 Azure 订阅。没有问题。

现在我想在 Azure 主权区域(具体来说是 Azure 中国和美国政府)做同样的事情。因此,我重复了相同的步骤,并在每个区域中创建了具有相同权限的应用程序。在这两个地方我都是应用程序所有者。

当我尝试在 Azure 中国区域使用该应用程序获取授权码时,一切都运行良好。我能够获取授权代码并使用该代码来获取访问 token 和刷新 token 。这是我使用的网址:

https://login.chinacloudapi.cn/common/oauth2/authorize?resource=https%3A%2F%2Fmanagement.core.chinacloudapi.cn%2F&client_id=xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx&response_type=代码+id_token&redirect_uri=urn%3Aietf%3Awg%3Aoauth%3A2.0%3Aoob&response_mode=fragment&nonce=1549417823964&state=12345

但是,当我对 Azure US Gov 执行相同操作时,我收到以下错误:

AADSTS650057: Invalid resource. The client has requested access to a resource which is not listed in the requested permissions in the client's application registration. Client app ID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx. Resource value from request: https://management.core.usgovcloudapi.net/. Resource app ID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx. List of valid resources from app registration: 797f4846-ba00-4fd7-ba43-dac1f8f63013, 00000002-0000-0000-c000-000000000000. Trace ID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Correlation ID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Timestamp: 2019-02-06 02:19:50Z

这是我正在使用的请求 URL:

https://login-us.microsoftonline.com/common/oauth2/authorize?resource=https%3A%2F%2Fmanagement.core.usgovcloudapi.net%2F&client_id=xxxxxxx-xxxx-xxxx-xxxx- xxxxxxxxxxxx&response_type=code+id_token&redirect_uri=urn%3Aietf%3Awg%3Aoauth%3A2.0%3Aoob&response_mode=fragment&nonce=1549419561905&state=12345

如您所见,我使用 https://management.core.usgovcloudapi.net/ 作为资源。这是基于Azure Government developer guide 。我什至尝试使用 https://management.usgovcloudapi.net/ 但我得到了相同的结果。

此外我注意到一些事情:

  1. 如果我使用 Microsoft 的客户端 ID (1950a258-227b-4e31-a9cf-717495945fc2) 而不是我的应用程序 ID 和 https://management.core.usgovcloudapi.net/ 作为资源,一切正常。
  2. 如果我使用应用程序的 ID 和 https://management.core.windows.net/ 作为资源,而不是 https://management.core.usgovcloudapi.net/ code>,我得到了同意提示(否则我没有得到),所以我认为这也工作正常。

谁能告诉我我做错了什么?

最佳答案

此问题通常是由于 SSO 设置中的标识符不正确导致的。标识符设置不正确、格式不正确或者未在租户之间正确共享。

在应用程序的单点登录下,检查标识符字段是否填写正确。 (这是一个不同的示例,但显示了位置。) enter image description here

我还建议使用 Fiddler 检查 SAML 响应,并确保您没有对该租户强制执行任何不必要的访问要求。

关于azure - 尝试在 Azure US Gov 中获取授权码时出现 "AADSTS650057: Invalid resource"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54545866/

相关文章:

Azure VM - RDP - 登录尝试失败

azure - 是否可以查看 Azure 警报的源代码历史记录?

Azure TFS部署错误 "Invalid enum value ' FailedStartingRole'无法反序列化为类型”

sql - Azure sql 数据同步代理 2 无法安装

.net-core - 使用 .NET Core 3 Azure AD 身份验证的自定义角色

asp.net - 适用于自定义 ASP.Net Web 应用程序的 Azure 多重身份验证

asp.net - 仅当从 WebService 调用时出现 SoapException : Host is not known,

python - 验证 AAD Azure 中的 JWT access_token 失败

asp.net - .NET MVC 应用程序 - Azure Active Directory - 重定向到 LocalHost

azure-active-directory - 不支持的 MSAL : AADB2C90146 : 'Openid profile' provided in request specifies more than one resource for an access token,'