尝试在 Azure US Gov 中获取授权代码时出现“AADSTS650057:无效资源”错误

Gau*_*tri 7 azure azure-active-directory

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

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

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

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

当我尝试在 Azure 中国地区使用该应用程序获取授权码时,一切正常。我能够获取授权代码并使用该代码获取访问令牌和刷新令牌。这是我使用的网址:

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

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

AADSTS650057:无效的资源。客户端已请求访问未在客户端应用程序注册中请求的权限中列出的资源。客户端应用程序 ID:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx。来自请求的资源值:https : //management.core.usgovcloudapi.net/。资源应用 ID:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx。应用注册的有效资源列表:797f4846-ba00-4fd7-ba43-dac1f8f63013、00000002-0000-0000-c000-000000000000。跟踪 ID:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx 关联 ID:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx 时间戳: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=xxxxxxxx-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) 而不是我的应用程序的 idhttps://management.core.usgovcloudapi.net/作为资源,一切正常。
  2. 如果我使用我的应用程序的 id 和https://management.core.windows.net/作为资源而不是https://management.core.usgovcloudapi.net/,我会得到同意提示(我没有得到其他提示)所以我认为这也工作正常。

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

Mar*_*SFT -1

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

在应用程序的单点登录下,检查标识符字段是否填写正确。(这是一个不同的示例,但显示了位置。) 在此输入图像描述

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