【发布时间】:2015-07-03 16:14:05
【问题描述】:
我一直在尝试使用 Azure 服务管理 API 来列出托管服务,但没有成功。
首先,我能够使用 PowerShell 设置身份验证,正如 Microsoft 文档所述:https://msdn.microsoft.com/en-us/library/azure/dn790557.aspx
我的第一步是使用 OAuth2 向该 URL 发出 POST 请求来请求访问令牌:
https://login.windows.net/<MY_TENANT_ID>/oauth2/token
并传递这些参数:
grant_type: client_credentials
client_id: <THE_CLIENT_ID_OF_THE_APP_REGISTERED_THROUGH_POWERSHELL>
client_secret: <THE_PASSWORD_OF_APP_REGISTERED_THROUGH_POWERSHELL>
resource: https://management.core.windows.net
所以,我收到了一个有效的响应和响应中包含的 access_token。到目前为止一切顺利。
然后,我想对 Management API 进行一个简单的调用;我想列出我的托管服务(云服务),所以我向这个 URL 发出 GET 请求:
https://management.core.windows.net/<MY_SUBSCRIPTION_ID>/services/hostedservices
包括以下标题:
Authorization: Bearer <THE_ACCESS_TOKEN_RECEIVED_IN_THE_PREVIOUS_STEP>
x-ms-version: 2014-10-01 (I've also tested with different versions)
但是,我得到的是 401 Unauthorized 错误,并带有以下消息:
The JWT token does not contain expected audience uri 'https://management.core.windows.net/'
我还尝试使用直接在 Azure 门户中注册的本机应用程序(权限设置为使用服务管理 API)并使用 grant_type = authorization_code 请求令牌。我正确获取了 access_token 和 refresh_token,但是当我尝试向上述 URL 发出请求时,我收到了相同的错误消息。
附带说明,我能够成功使用 Azure Insights API;上述问题与 Azure 服务管理 API 有关。
有人知道我错过了什么吗?
【问题讨论】:
-
同样的问题,似乎无法弄清楚为什么我不断获得未经授权。
-
我能够通过基于 AAD 的令牌访问以下端点: i. graph.windows.net ii。 management.azure.com 但management.core.windows.net 只能通过管理证书访问,即使使用最新的 API 版本,这似乎也是一个已知限制。
标签: azure