了解 Microsoft Entra 应用程序代理中的复杂应用程序

应用程序通常由多个单独的 Web 应用程序组成。 这些情况使用 URL 中的不同域后缀或不同的端口或路径。 单个 Web 应用程序实例必须在单独的Microsoft Entra 应用程序代理应用中发布。 在这些情况下,可能会出现以下问题:

  • 预身份验证: 客户端必须单独为每个 Microsoft Entra 应用程序代理应用获取访问令牌或 Cookie。 由于多次收购,登录microsoftonline.com时会导致多个重定向。
  • 跨域资源共享(CORS): 使用 OPTIONS 该方法的 CORS 调用用于验证调用方 Web 应用和目标 Web 应用之间的 URL 访问权限。 Microsoft Entra 应用程序代理云服务会阻止这些调用。 发生阻塞是因为请求不能包含身份验证信息。
  • 应用管理不佳: 创建多个企业应用,使用户能够访问专用应用,从而增加应用管理体验的摩擦。

下图显示了复杂应用程序域结构的示例。

复杂应用程序的域结构图,显示了主应用程序和辅助应用程序之间的资源共享。

使用 Microsoft Entra 应用程序代理,可以使用由多个域上的多个 URL 组成的复杂应用程序发布来解决此问题。

此图显示一个具有多应用程序段定义的复杂应用程序。

复杂应用具有多个应用段。 每个应用段都有一个内部和外部 URL。 一个条件访问策略与应用相关联。 对任何外部 URL 的访问都使用同一组策略的预身份验证。 为所有应用段强制实施这些策略。

复杂应用提供以下几个优势:

  • 用户身份验证
  • 缓解 CORS 问题
  • 对内部 URL 中不同域后缀或不同端口或路径的访问

本文介绍如何在您的环境中配置通配符应用程序发布。

复杂应用程序的应用程序段的特征。

  • 应用程序段仅配置通配符应用程序。
  • 外部和备用 URL 应分别与应用程序的通配符外部和备用 URL 域匹配。
  • 应用程序段 URL 的(内部和外部)需要跨复杂应用程序保持唯一性。
  • 可以为每个应用程序段配置 CORS 规则(可选)。
  • 仅向复杂应用程序定义的应用程序段授予访问权限。

    注释

    如果删除所有应用程序段,则复杂应用程序的行为类似于通配符应用程序,允许访问指定域下的任何有效 URL。

  • 可以将内部 URL 定义为应用程序段和常规应用程序。

    注释

    常规应用程序始终优先于复杂应用(通配符应用程序)。

先决条件

  • 启用应用程序代理,并安装一个能够直接连接到应用程序的连接器。 请参阅教程 :通过应用程序代理添加用于远程访问 的本地应用程序,了解如何准备本地环境、安装和注册连接器以及测试连接器。

为复杂应用程序配置应用程序段。

注释

Microsoft Entra ID P1 或 P2 订阅支持复杂分布式应用程序中的两个应用分段。

若要使用应用程序段通过应用程序代理发布复杂的分布式应用,请执行以下作:

  1. 创建一个通配符应用程序。

  2. 在应用程序代理基本设置页上,选择 “添加应用程序段”。

    用于添加应用程序段的链接的屏幕截图。

  3. 在“管理和配置应用程序段”页上,选择“ + 添加应用段”。

    “管理和配置应用程序段”页的屏幕截图。

  4. 输入 内部 URL

  5. “外部 URL ”下拉列表中选择自定义域。

  6. 添加 CORS 规则(可选)。 有关详细信息,请参阅 配置 CORS 规则

  7. 选择 创建

    添加或编辑应用程序段上下文平面的屏幕截图。

  8. 将用户分配给应用程序。

若要编辑/更新应用程序段,请从管理和配置应用程序段页上的列表中选择应用程序段。 根据需要上传更新的域的证书,并更新域名系统(DNS)记录。

配置单一登录 (SSO)

注释

使用集成 Windows 身份验证(IWA)的单一登录不支持通配符服务主体名称(SPN)。 例如,通配符http/*.contoso.com 使用单个配置的 SPN,例如http/app.contoso.com,用于所有段。

DNS 更新

使用自定义域时,使用外部 URL 的 CNAME 记录创建 DNS 条目。 例如,将 *.adventure-works.com 指向应用程序代理终结点的外部 URL。 对于通配符应用程序,请将 CNAME 记录指向相关的外部 URL: <yourAADTenantId>.tenant.runtime.msappproxy.net

或者,可以按如下所示创建具有每个应用程序段 CNAME 记录的专用 DNS 条目:

External URL of the application segment > <yourAADTenantId>.tenant.runtime.msappproxy.net

此外,还需要在同一 DNS 区域中为应用程序 ID 添加 CNAME 记录:

<yourAppId> > <yourAADTenantId>.tenant.runtime.msappproxy.net

如果分配给复杂应用的连接器组不在默认连接器组的区域,则必须在 DNS 条目中使用以下域后缀之一:

连接器分配的区域 外部链接
亚洲 <yourAADTenantId>.asia.tenant.runtime.msappproxy.net
澳大利亚 <yourAADTenantId>.aus.tenant.runtime.msappproxy.net
欧洲 <yourAADTenantId>.eur.tenant.runtime.msappproxy.net
北美洲 <yourAADTenantId>.nam.tenant.runtime.msappproxy.net

有关应用程序代理的更详细说明,请参阅 教程:在 Microsoft Entra ID 中添加用于通过应用程序代理进行远程访问的本地应用程序

后续步骤