使用 Microsoft Entra 应用程序代理安全地将 Azure 逻辑应用与本地 API 集成

Azure 逻辑应用是一项服务,允许在可与各种外部服务和系统集成的无代码环境中轻松创建托管工作流。 工作流有助于自动执行各种业务流程,例如数据集成、数据处理和事件驱动方案。 逻辑应用与其他公有服务和基于云的服务集成。 或者,将逻辑应用与本地应用程序和服务配合使用。 专用网络集成不会使用端口转发或传统的反向代理向公共公开服务。

本文介绍利用 Microsoft Entra 应用程序代理解决方案提供对逻辑应用的安全访问,同时保护内部应用程序免受不需要的参与者的影响所需的步骤。 过程和最终结果类似于在本地通过 Microsoft Entra 应用程序代理访问 API,并特别关注在逻辑应用中如何使用该 API。

概述

下图显示了从 Azure 逻辑应用发布用于访问的本地 API 的传统方法。 此方法需要打开 API 服务的传入传输控制协议(TCP)端口 80 和/或 443。

显示逻辑应用到 API 的直接连接的关系图。

下图显示了如何使用 Microsoft Entra 应用程序代理安全地发布 API 以用于逻辑应用(或其他 Azure 云服务),而无需打开任何传入端口:

显示逻辑应用通过 Azure 应用程序代理连接到 API 的关系图。

Microsoft Entra 应用程序代理和关联的连接器可促进与本地服务的安全授权和集成,而无需对网络安全基础结构进行更多配置。

先决条件

若要遵循本教程,需要:

注释

建议授予用户权利并测试登录,但本指南不需要这样做。

配置应用程序访问

创建新的企业应用程序时,还会创建匹配的应用注册。 应用注册允许使用证书、机密或联合凭据配置安全编程访问。 若要与逻辑应用集成,请配置客户端密钥,并配置 API 权限。

  1. 至少以应用程序管理员的身份登录到 Microsoft Entra 管理中心

  2. 访问 Entra ID>应用注册

  3. “应用注册 ”窗口中,选择“ 所有应用程序 ”选项卡选项。

  4. 导航到具有与已部署的应用程序代理应用程序的匹配名称的应用程序。 例如,如果将 示例应用 1 部署为企业应用程序,请选择 示例应用 1 注册项。

    注释

    如果找不到关联的应用程序,则可能会删除或未自动创建该应用程序。 可以使用 “新建注册 ”按钮创建注册。

  5. 示例应用 1 详细信息页中,记录 应用程序(客户端)ID目录(租户)ID 字段。

  6. 从导航窗格中选择 API 权限 菜单项。

    Microsoft Entra 应用注册 API 权限菜单项的屏幕截图。

    1. 选择“添加权限”按钮。

      1. 选择“我的组织使用的 API”选项卡。

      2. 按名称(例如 示例应用 1)搜索应用,然后选择该项目。

      3. 确保“委派权限”选择,然后勾选user_impersonation框。

      4. 选择“添加权限”。

    2. 验证配置的权限是否可见。

      Microsoft Entra 应用注册 API 权限详细信息的屏幕截图。

  7. 从导航窗格中选择 “证书和机密 ”菜单项。

    Microsoft Entra 应用注册证书和机密菜单项的屏幕截图。

    1. 选择 “客户端机密 ”选项卡项。

    2. 选择“新客户端密码”按钮。

    3. “添加客户端密码”的弹出窗口。

      1. 输入 说明 和所需的过期时间。

      2. 选择 并添加

    4. 验证是否显示新的客户端密钥。

    5. 为新创建的密钥的选择“复制”按钮。 安全保存机密供以后使用,此值仅显示一次。

配置逻辑应用

  1. 在逻辑应用中,打开 设计器 视图。

  2. 选择所需的触发器(如果出现提示)。

  3. 添加新步骤并选择 HTTP 操作。

    Azure 逻辑应用触发器选项窗格的屏幕截图。

    1. 方法:选择要发送到内部 API 的所需 HTTP 方法。

    2. URI:填写在 Microsoft Entra ID 中注册的应用程序 的公共 完全限定域名(FQDN),以及 API 访问所需的其他 URI(例如 ,sampleapp1.msappproxy.net/api/1/status)。

      注释

      API 的特定值取决于内部应用程序。

    3. 标头:输入要发送到内部 API 的任何所需标头。

    4. 查询:输入要发送到内部 API 的任何所需查询。

    5. 正文:输入要发送到内部 API 的任何所需正文内容。

    6. Cookie:输入要发送到内部 API 的任何所需 Cookie。

    7. 选择 “添加新参数”,然后选中 “身份验证”。

    8. “身份验证类型”中,选择 Microsoft Entra ID OAuth

    9. 对于身份验证,请填写以下详细信息。

      1. 颁发机构:输入 https://login.chinacloudapi.cn

      2. 租户:输入“配置应用程序访问”中记录的目录(租户)ID

      3. 受众:输入您在 Microsoft Entra ID 中注册的应用程序的公共 FQDN(例如,sampleapp1.msappproxy.net)。

      4. 客户端 ID:输入“配置应用程序访问”中记录的应用程序(客户端)ID

      5. 凭据类型机密

      6. 机密:输入“配置应用程序访问”中记录的机密值

  4. 保存逻辑应用并使用触发器进行测试。

注意事项

使用此方法时,需要身份验证/授权的 API 需要特殊处理。 由于正在使用 Microsoft Entra ID OAuth 进行访问,因此发送的请求中已包含一个内部 API 无法使用的授权字段(除非配置了单点登录)。 解决方法是,某些应用程序提供使用 授权 标头以外的方法的身份验证或授权。 例如,GitLab 允许标题为 PRIVATE-TOKEN 的标头,Atlassian Jira 允许请求可在后续请求中使用的 Cookie。

逻辑应用的 HTTP 操作显示明文值。 但是,将应用注册密钥存储在 Azure Key Vault 中,以便安全检索和使用。

另请参阅