我想通过curl 使用Azure AD 对Azure 服务管理API 进行身份验证。
I 设置一个应用程序在我的默认目录中。在这个免费试用订阅中,这是我拥有的唯一目录。
当我定位 oauth 令牌端点时,我收到一个 JWT。
curl --data "grant_type=client_credentials&client_id=<my_client_id>&client_secret=<my_encoded_secret>&resource=https%3A%2F%2Fmanagement.core.windows.net" https://login.windows.net/<my_tenant_id>/oauth2/token
但是当我使用该令牌列出我的订阅详细信息时,我收到错误:
curl -H "x-ms-version: 2014-06-01" \
-H "Authorization: Bearer <my_token>" \
https://management.core.windows.net/<my_subscription_id>/
<Error xmlns="http://schemas.microsoft.com/windowsazure" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<Code>ForbiddenError</Code>
<Message>The server failed to authenticate the request. Verify that the certificate is valid and is associated with this subscription.</Message>
</Error>
我已将应用程序的服务管理 API 的权限授予为“委派权限”,因为“应用程序权限”不可用。
我缺少什么?
这是不可能的,因为应用程序权限:0服务管理 API 的设置。这客户凭证授予类型使用来自应用程序的凭据(client_id 和 client_secret),并且由于应用程序没有此 API 的权限,因此调用失败。
由于服务管理 API 不允许任何类型的应用程序权限,因此我们必须使用authorization_code 授权类型或其他一些获取用户令牌的方法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)