Azure管道在脚本中获取应用程序客户端ID

Azure管道在脚本中获取应用程序客户端ID,azure,azure-devops,azure-pipelines,azure-cli,Azure,Azure Devops,Azure Pipelines,Azure Cli,我的DevOps中有一个管道,用于构建和部署应用程序。这是成功的。 作为部署的一部分,我需要使用应用程序的客户端ID更新configuration.json文件。为了实现这一点,我正在执行: $clientID = az ad app list --display-name "MyApplication" --query [0].appId 我已经创建了一个“Azure CLI”步骤,并且正在以服务主体的角色执行此步骤,但是当它运行时,我收到一个错误“权限不足,无法完成操作

我的DevOps中有一个管道,用于构建和部署应用程序。这是成功的。 作为部署的一部分,我需要使用应用程序的客户端ID更新configuration.json文件。为了实现这一点,我正在执行:

$clientID = az ad app list --display-name "MyApplication" --query [0].appId
我已经创建了一个“Azure CLI”步骤,并且正在以服务主体的角色执行此步骤,但是当它运行时,我收到一个错误“权限不足,无法完成操作”。我需要更改的位置或权限

管道步骤说明:

  • Azure CLI
  • 类型:Powershell核心
  • 脚本路径:有效路径

在添加了
目录。ReadAll
权限后,我成功地运行了它


并将此主体添加到全局管理员组。

另一个答案只正确了一半而且不好,委托权限
目录。请阅读。
Microsoft Graph
中的所有
在这种情况下都不起作用,将
全局管理员
角色赋予服务主体将起作用,但是此权限太大,如果您不想造成一些安全问题,请尝试不使用它

要解决此问题,您只需向应用程序授予
Directory.Read.All
权限
Azure Active Directory Graph
,您可以按照以下步骤操作

1.导航到devops中的
项目设置
服务连接
->查找您使用的服务连接->单击
管理服务主体

2.然后它将打开服务主体的Azure AD应用程序页面,导航到
API权限
->添加应用程序权限
目录。阅读
Azure Active Directory图形的所有
,如下所示(注意:应该是
Azure Active Directory图形
,而不是
Microsoft图形

  • 最后别忘了点击
    授予xxx管理员许可
    按钮

  • 过一段时间,再次尝试该命令,它将正常工作。

    谢谢,这是非常广泛的,我没有单击“授予管理员同意…”,但我相信问题在于运行“az广告应用程序列表”。我似乎没有得到允许detail@Adrian
    az广告应用程序列表
    实质上调用AAD图,因此您需要在AAD图中授予权限。请按照我的回答,不要错过任何步骤,您必须单击
    授予管理员许可
    按钮,相信我,我已经帮助很多人解决了类似的问题。