应用程序通常由多个单独的 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 订阅支持复杂分布式应用程序中的两个应用分段。
若要使用应用程序段通过应用程序代理发布复杂的分布式应用,请执行以下作:
在应用程序代理基本设置页上,选择 “添加应用程序段”。
在“管理和配置应用程序段”页上,选择“ + 添加应用段”。
输入 内部 URL。
从 “外部 URL ”下拉列表中选择自定义域。
添加 CORS 规则(可选)。 有关详细信息,请参阅 配置 CORS 规则。
选择 创建。
将用户分配给应用程序。
若要编辑/更新应用程序段,请从管理和配置应用程序段页上的列表中选择应用程序段。 根据需要上传更新的域的证书,并更新域名系统(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 中添加用于通过应用程序代理进行远程访问的本地应用程序。