我一直在尝试使用 Azure 服务管理 API 来列出托管服务,但没有成功。
首先,我能够使用 PowerShell 设置身份验证,如 Microsoft 文档所述:https://msdn.microsoft.com/en-us/library/azure/dn790557.aspx
我的第一步是使用 OAuth2 向此 URL 发出 POST 请求来请求访问 token :
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。到目前为止一切顺利。
然后,我想对管理API进行简单的调用;我想列出我的托管服务(云服务),因此我向此 URL 发出 GET 请求:
https://management.core.windows.net/<MY_SUBSCRIPTION_ID>/services/hostedservices
包括以下 header :
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 门户中注册的 native 应用程序(将权限设置为使用服务管理 API)并使用 grant_type =authorization_code
请求 token 。我正确地获取了 access_token 和刷新 token ,但是当我尝试向上述 URL 发出请求时,我收到了相同的错误消息。
顺便说一句,我能够成功使用 Azure Insights API;上述问题与 Azure 服务管理 API 相关。
有人知道我错过了什么吗?
最佳答案
我今天也遇到了同样的问题。使用 '/' https://management.core.windows.net 完成资源 URL
查看资源中的 URL 与错误消息“https://management.core.windows.net”中的 URL 不匹配/'
关于azure - Azure 管理 API 上的 JWT token 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29857968/