1

我需要使用 Azure CLI 的服务主体将 ReplyUrl 添加到 AAD 应用程序,但我收到错误“权限不足,无法完成操作”。我最初从 Azure DevOps 尝试过这个,但现在只从 CLI 复制了它。

我开始使用 DevOps 和在将 Target AAD 租户连接到我的 DevOps 组织时创建的服务主体。我已向服务主体授予 API 权限 Microsoft.Graph.Application.ReadWrite.All 并授予管理员同意。我生成了一个新的 ClientSecret 并使用它使用 CLI 登录到租户。当我运行命令更新回复 url 时,就会出现上述权限不足错误。

如果我从 Cloud Shell bash 运行 CLI 命令,它可以正常工作。

az login --service-principal -u xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxx -p xxxxxxxxxxxxx --tenant xxxxxxxxxx 

[
  {
    "cloudName": "AzureCloud",
    "id": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
    "isDefault": true,
    "name": "Windows Azure MSDN - Visual Studio Ultimate",
    "state": "Enabled",
    "tenantId": "xxxxxxxxxxxxxxxxxxx",
    "user": {
      "name": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
      "type": "servicePrincipal"
    }
  }
]

然后

az ad app update --id xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx  --reply-urls https://localhost:44381/ 

Insufficient privileges to complete the operation. 

如果我从 cloud shell 运行 az ad app update 命令,它可以正常工作。
如果我尝试使用 DevOps 创建的服务主体,则会收到错误消息。

我刚刚在 DevOps 之外创建了一个干净的新主体(az ad app create-for-rbac),然后手动添加了 Application.ReadWrite.All 权限并同意了这一点——这也给了我同样的错误!

应用程序 API 权限和同意

我已经查看了类似的问题 - 但最接近的问题有一个答案,我们需要给予正确的权限并授予同意作为答案 - 我已经完成了。

4

1 回答 1

0

您授予了错误的权限。Azure CLI 使用 AAD Graph 端点,因此您需要向服务主体授予Azure AD Graph API权限,而不是Microsoft Graph API权限。

您需要的是 Application.ReadWrite.All 权限(Azure AD Graph)。

在此处输入图像描述

注意:门户中的浏览器缓存使其看起来好像回复 url 没有更新。只需再次打开门户,您就会看到更新。

于 2019-08-05T01:33:47.387 回答