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

时间:2019-02-06 02:36:05

标签: azure azure-active-directory

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

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

使用此应用程序的ID,我可以连接到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

这是我使用的请求网址:

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)代替我的应用程序ID和https://management.core.usgovcloudapi.net/作为资源,则一切正常。
  2. 如果我将应用程序的ID和https://management.core.windows.net/用作资源而不是https://management.core.usgovcloudapi.net/,则会得到同意提示(本来不是这样),所以我认为这也很好。

有人可以告诉我我在做什么错吗?

1 个答案:

答案 0 :(得分:0)

此问题通常是由SSO设置中的标识符不正确引起的。标识符设置不正确,格式不正确或在租户之间未正确共享。

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

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