如何使用 Graph(或另一个 MS API)检索 Azure 企业应用程序对象 ID

How to use Graph (or another MS API) to retrieve an Azure Enterprise App Object ID

目前正在使用 Python 和 REST 调用编写 Azure 函数,这将:

  1. 获取服务主体(作为参数传递)
  2. 为所述服务主体生成一个新机密
  3. 获取密钥库(作为参数传递)
  4. 将访问策略添加到 kevault 以允许存储新机密
  5. 使用适当的名称(作为参数提供)在密钥库中设置机密

我已经完成了第 4 步。对于第 4 步,我使用了以下 API: https://docs.microsoft.com/en-us/rest/api/keyvault/vaults/updateaccesspolicy

REST payload 正在请求一个 objectID,它变成了 ENTERPRISE APP 的 objectID,而不是应用程序注册。我已经能够使用它和测试代码成功地设置秘密。

我的问题是 - 您如何检索企业应用程序的对象 ID?我一直在查看图表 API,但我能找到的唯一端点是这个: https://docs.microsoft.com/en-us/graph/api/application-get?view=graph-rest-1.0&tabs=http

此端点检索应用程序注册对象,而不是企业应用程序对象。如何获取企业应用程序对象 ID?

企业应用是 Microsoft Graph 中的服务主体。

使用 List servicePrincipalsfilter 查询参数来获取它。

GET https://graph.microsoft.com/v1.0/serviceprincipals?$filter=appId eq '{client id of your  application registration}'