如何使用逻辑应用以编程方式在 Azure AD 中注册应用程序?

Mo *_*leb 2 azure azure-active-directory azure-logic-apps

我想使用 Azure Logic App 构建应用程序注册流程(用于自动化)

如何在 Azure AD 中自动注册应用程序?进行 REST API 调用应该简单直接,有人知道如何进行应用程序注册的 POST 吗?

很少有例子将不胜感激。

参考: https: //learn.microsoft.com/en-us/previous-versions/azure/ad/graph/api/entity-and-complex-type-reference#application-entity

除了 Azure 逻辑应用程序支持的 REST API 之外,任何其他方式也非常受欢迎!

Roh*_*gal 5

用于注册 Azure AD 应用程序的 REST API

Azure AD Graph API 是较旧的 API,对于大多数操作,建议使用较新的 Microsoft Graph API。在此处阅读有关Microsoft Graph 或 Azure AD Graph 的更多信息。

尽管较新的 Microsoft Graph API 仍处于测试阶段,但应用程序注册方案仍处于测试阶段,因此不建议将其用于生产应用程序。因此,我展示了使用 Azure AD Graph API 的屏幕截图和详细步骤。不过,稍后,一旦 Microsoft Graph API 稳定版本支持应用程序注册,您就可以更改为使用 Microsof Graph API。

高级步骤

  1. 您的逻辑应用首先需要足够的权限才能向 Azure AD 注册应用程序。

    • 为逻辑应用启用托管身份
    • 为逻辑应用的托管标识分配所需的应用角色分配,以便能够调用图 api。(您需要先找到 Graph API 的服务主体 Id 才能执行此步骤)
  2. 将 HTTP 操作添加到逻辑应用以进行图形 API 调用

    • 对图形 API 进行后期调用
    • 根据您的应用程序注册要求设置适当的标头和正文
    • 选择托管身份进行身份验证
    • 将 Audience 设置为https://graph.windows.nethttps://graph.microsoft.com根据您调用的 API。

详细步骤

  1. 转到 Azure 门户中的逻辑应用 > 身份 > 现在打开系统分配的身份

    在此输入图像描述

  2. 启用托管身份后,您应该获得一个对象 ID。我会称之为LogicApp.Identity.ObjectId

    在此输入图像描述

  3. 现在转到 Azure 门户 > Azure AD > 企业应用程序 > 在应用程序类型下拉列表中选择 Microsoft 应用程序 > 使用 Azure AD Graph API ( 00000002-0000-0000-c000-000000000000) 的应用程序 ID 对其进行筛选。如果您尝试调用 Microsoft Graph API(搜索00000003-0000-0000-c000-000000000000

    现在记下objectId服务主体的 。我们称这个为Graph.ObjectId

    在此输入图像描述

  4. 运行 PowerShell 命令来创建新的应用程序角色分配。

    New-AzureADServiceAppRoleAssignment -ObjectId LogicApp.Identity.ObjectId -PrincipalId LogicApp.Identity.ObjectId -Id "824c81eb-e3f8-4ee6-8f6d-de7f50d565b7" -ResourceId "Graph.ObjectId"
    
    Run Code Online (Sandbox Code Playgroud)

    如果您在此步骤遇到Authorization_RequestDenied错误,请查看我最后关于已知问题的注释。您应该可以继续,因为仍然会添加许可。

    请注意,我使用的824c81eb-e3f8-4ee6-8f6d-de7f50d565b7是作为要分配的app角色,对应的是ieApplication.ReadWrite.OwnedBy的应用权限Windows Azure Active DirectoryManage apps that this app creates or owns

    在此输入图像描述

    如果您想更改该部分,您可以选择不同的应用程序权限/角色。如果您使用 Microsoft Graph API,您可以从此处找到权限 - Microsoft Graph 权限参考- 例如Application.ReadWrite.AllApplication.ReadWrite.OwnedBy

  5. 现在转到您的逻辑应用程序并添加 HTTP 操作。

    注意 URI、方法、标头和正文(我使用了一个非常简单的 JSON,但您可以根据您的要求更改它)

    另请注意,身份验证设置为Managed Identity,受众设置为https://graph.windows.nethttps://graph.microsoft.com如果您改为调用 Microsoft Graph API,则可能会变成这样)

    在此输入图像描述

  6. 现在尝试运行逻辑应用,HTTP 操作应该会成功,并根据 JSON 注册新的 Azure AD 应用程序。

    在此输入图像描述

    如果您收到错误请求错误 - 问题可能与 Graph API 调用输入有关,例如 URI、标头或正文。

    如果您收到“禁止”或“未经授权”错误 - 问题是按照前面的步骤将应用程序权限分配给逻辑应用程序标识,因此请重新检查这些步骤。


运行上述步骤 4 中描述的 PowerShell 脚本时,您可能会遇到一个已知问题,该问题会引发错误代码Authorization_RequestDenied

我在将 Microsoft Graph 权限分配给 Azure 托管服务标识中提供了有关此问题的更多信息,也可在此 GitHub 问题中找到 -执行 New-AzureAdServiceAppRoleAssignment 步骤返回禁止错误

因此,即使您间歇性地收到此错误,也应该创建实际的角色分配,并且您应该可以继续。