1

我希望能够调用 Azure REST API 来创建/读取容器实例、容器注册表和存储帐户等资源。

在我的 Azure AD 中,我为我的应用程序注册了一个应用程序,并获得了 clientID、secret 和tenantId。

我调用了以下 API 来获取令牌:

https://login.microsoftonline.com/{{tenantId}}/oauth2/token

资源、client_id、client_secret 和 grant_type

作为POST请求中的正文参数

我从这里收到的令牌无法正常工作。我收到以下错误:

{
    "error": {
        "code": "AuthorizationFailed",
        "message": "The client 'ff70fcft-21ub-4a7f-8h20-3f405c5d17e0' with object id 'ff70fcff-22bb-4a7f-9f20-3f405c1e17e0' does not have authorization to perform action 'Microsoft.ContainerInstance/containerGroups/read' over scope '/subscriptions/afb6001a-XXXX-4c39-XXXX-9706012c30ba/resourceGroups/app2/providers/Microsoft.ContainerInstance/containerGroups/app2' or the scope is invalid. If access was recently granted, please refresh your credentials."
    }
}

但是,当我从浏览器的网络选项卡复制访问令牌时,它工作正常。

我认为 app-registration 有问题,因为它感觉 app 和我的资源当前已断开连接。

谁能帮我解决这个问题?

更新: 在此处输入图像描述

4

1 回答 1

1

您似乎没有授予已注册应用程序的 Azure 订阅访问权限。

以下是步骤:

1.所有服务->订阅->选择您的订阅->点击访问控制

在此处输入图像描述

2.单击添加以将角色分配添加到您注册的应用程序

在此处输入图像描述

3.获取访问令牌再次访问api,就可以了。

参考:https ://docs.microsoft.com/en-us/azure/role-based-access-control/role-assignments-portal#overview-of-access-control-iam

更新:

请选择正确的订阅。

在此处输入图像描述

于 2019-10-21T09:43:59.457 回答