我正在开发一个本机应用程序,该应用程序将允许用户连接并管理其Azure订阅。为此,我在Azure AD中创建了具有以下委托权限的应用程序:
使用此应用程序的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/
,但得到的结果相同。
此外,我注意到了一些事情:
1950a258-227b-4e31-a9cf-717495945fc2
)代替我的应用程序ID和https://management.core.usgovcloudapi.net/
作为资源,则一切正常。https://management.core.windows.net/
用作资源而不是https://management.core.usgovcloudapi.net/
,则会得到同意提示(本来不是这样),所以我认为这也很好。有人可以告诉我我在做什么错吗?