Microsoft Entra 应用程序代理中的通配符应用程序

在 Microsoft Entra ID 中,配置大量本地应用程序后,如果其中许多应用程序需要相同的设置,则可能很快就会变得难以管理,并引入不必要的配置错误风险。 有了 Microsoft Entra 应用程序代理,可通过通配符应用程序发布功能一次性发布和管理多个应用程序,来解决此问题。 该解决方案提供:

  • 简化管理开销
  • 减少潜在的配置错误数
  • 确保更多资源的访问

本文提供在环境中配置通配符应用程序发布功能所需的信息。

创建通配符应用程序

如果一组应用程序采用相同的配置,可以创建一个通配符 (*) 应用程序。 通配符应用程序的潜在候选项为共享以下设置的应用程序:

  • 有权访问这些应用程序的用户组
  • 单一登录 (SSO) 方法
  • 访问协议(http、https)

如果内部和外部 URL 都采用以下格式,则可以使用通配符发布应用程序:

http(s)://*.<域名>

例如:http(s)://*.adventure-works.com

尽管内部和外部 URL 可以使用不同的域,但最佳做法是使它们保持相同。 发布应用程序时,如果某个 URL 没有通配符,则会出现错误。

创建通配符应用程序的过程基于适用于其他所有应用程序的相同应用程序发布流。 唯一的区别在于,需在 URL 中包含通配符,有时可以在 SSO 配置中包含通配符。

先决条件

若要开始,请确保满足要求。

自定义域

虽然 自定义域 对于所有其他应用程序都是可选的,但它们是通配符应用程序的先决条件。 创建自定义域时需要:

  1. 在 Azure 中创建已验证的域。
  2. 将个人信息交换(PFX)格式的传输层安全性(TLS)证书上传到应用程序代理。

应考虑使用通配符证书来匹配打算创建的应用程序。

出于安全原因,仅支持对外部 URL 使用自定义域的应用程序使用通配符。

域名系统 (DNS) 更新

使用自定义域时,需要创建包含外部 URL(例如 *.adventure-works.com)的 CNAME 记录的 DNS 条目并使其指向应用程序代理终结点的外部 URL。 对于通配符应用程序,CNAME 记录需要指向相关的外部 URL:

<yourAADTenantId>.tenant.runtime.msappproxy.net

请确认您已正确配置 CNAME,然后可以在例如之一的目标终结点上使用expenses.adventure-works.com。 响应应包含已提到的别名 (<yourAADTenantId>.tenant.runtime.msappproxy.net)。

使用分配给应用代理云服务区域而不是默认区域的连接器组

如果连接器安装在不同于默认租户区域的区域中,最好更改连接器组针对哪些区域进行优化以提高访问这些应用程序的性能。 若要了解详细信息,请参阅 优化连接器组以使用最近的应用程序代理云服务

如果分配给通配符应用程序的连接器组使用 与默认区域不同的区域,则需要更新 CNAME 记录以指向区域特定的外部 URL。 使用下表确定相关 URL:

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

注意事项

对于通配符应用程序,应考虑以下注意事项。

接受的格式

对于通配符应用程序,内部 URL 的格式必须为 http(s)://*.<domain>

对于内部 URL,请使用 http(s)://*.<domain> 格式

配置外部 URL 时,必须使用以下格式:https://*.<custom domain>

对于外部 URL,请使用 https://*.<custom domain> 格式

通配符的其他位置、多个通配符或其他正则表达式字符串均不受支持,并导致错误。

从通配符中排除应用程序

可通过以下方式从通配符应用程序中排除某个应用程序

  • 将例外的应用程序发布为普通应用程序
  • 通过 DNS 设置仅针对特定应用程序启用通配符

将应用程序发布为普通应用程序是从通配符中排除应用程序的首选方法。 应在通配符应用程序之前发布排除的应用程序,以确保首先实施例外的项。 始终是最具体的应用程序优先——发布为 budgets.finance.adventure-works.com 的应用程序优先于 *.finance.adventure-works.com 的应用程序,而后者又优先于 *.adventure-works.com 的应用程序。

还可以通过 DNS 管理将通配符限制为仅对特定的应用程序起作用。 最佳做法是,应创建包含通配符的 CNAME 条目,并匹配配置的外部 URL 的格式。 但是,可将特定应用程序的 URL 改为指向通配符。 例如,而不是指向*.adventure-works.com,请指向hr.adventure-works.comexpenses.adventure-works.comtravel.adventure-works.com individually,然后指向00001111-aaaa-2222-bbbb-3333cccc4444.tenant.runtime.msappproxy.net

如果使用此选项,则还需要为值 AppId.domain 创建另一个 CNAME 条目,例如,同样指向相同位置的 00001111-aaaa-2222-bbbb-3333cccc4444.adventure-works.com。 可以在通配符应用程序的应用程序属性页上找到 AppId

设置 MyApps 面板的主页 URL

MyApps 面板中,通配符应用程序只是以一个磁贴表示。 此磁贴默认已隐藏。 若要显示该磁贴并让用户首先看到特定的页面:

  1. 遵照有关设置主页 URL 的指导。
  2. 在应用程序属性页上将“显示应用程序”设置为“true”。

Kerberos 约束委派

对于使用 kerberos 约束委派(KCD)作为 SSO 方法的应用程序,为 SSO 方法列出的服务主体名称(SPN)需要通配符。 例如,SPN 可能是:HTTP/*.adventure-works.com。 仍需要在后端服务器上配置各个 SPN(例如 HTTP/expenses.adventure-works.com and HTTP/travel.adventure-works.com)。

方案 1:常规通配符应用程序

假设在此方案中,我们想要发布三个不同的应用程序:

  • expenses.adventure-works.com
  • hr.adventure-works.com
  • travel.adventure-works.com

所有三个应用程序:

  • 由所有用户使用
  • 使用集成 Windows 身份验证
  • 具有相同的属性

可按照使用 Microsoft Entra 应用程序代理发布应用程序中所述的步骤发布通配符应用程序。 此方案假设:

  • 具有以下 ID 租户:aaaabbbb-0000-cccc-1111-dddd2222eeee
  • 名为 adventure-works.com 的已验证域。
  • CNAME 条目指向*.adventure-works.com00001111-aaaa-2222-bbbb-3333cccc4444.tenant.runtime.msappproxy.net

可以遵照所述的步骤,在租户中创建新的应用程序代理应用程序。 在此示例中,通配符位于以下字段中:

  • 内部 URL:

    示例:内部 URL 中的通配符

  • 外部 URL:

    示例:外部 URL 中的通配符

  • 内部应用程序 SPN:

    示例:SPN 配置中的通配符

通过发布通配符应用程序,您现在可以通过导航到您熟悉的 URL(例如,travel.adventure-works.com)来访问您的三个应用程序。

该配置实现以下结构:

显示示例配置所实现的结构

颜色 说明
蓝色 显式发布并在 Microsoft Entra 管理中心中可见的应用程序。
灰色 可通过父应用程序访问的应用程序。

方案 2:带有例外项的常规通配符应用程序

除了这三个常规应用程序外,还有另一个应用程序, finance.adventure-works.com它只能由财务部门访问。 使用当前应用程序结构时,可通过通配符应用程序和访问财务应用程序,并且所有员工都可访问该应用程序。 若要进行更改,请将 Finance 配置为具有更严格的权限的独立应用程序,从而从通配符中排除应用程序。

确保有一条 CNAME 记录将 finance.adventure-works.com 指向在该应用程序的应用程序代理页面上指定的特定终结点。 对于这种情况,finance.adventure-works.com 指向 https://finance-awcycles.msappproxy.net/

按照 文档步骤,场景需要以下设置:

  • 在“内部 URL”中,设置 finance 而不是通配符。

    示例:在内部 URL 中设置 finance 而不是通配符

  • 在“外部 URL”中,设置 finance 而不是通配符。

    示例:在外部 URL 中设置 finance 而不是通配符

  • 在“内部应用程序 SPN”中,设置 finance 而不是通配符。

    示例:在 SPN 配置中设置 finance 而不是通配符

此配置实现以下方案:

显示示例方案所实现的配置

URL finance.adventure-works.com 是具体的。 URL *.adventure-works.com 不具体。 更具体的 URL 优先。 导航到 finance.adventure-works.com 的用户会获得 Finance Resources 应用程序中指定的体验。 只有财务员工才能访问 finance.adventure-works.com

如果为财务部门发布了多个应用程序,并且使用 finance.adventure-works.com 作为验证域,则可以发布另一个通配符应用程序 *.finance.adventure-works.com。 由于域比泛型 *.adventure-works.com更具体,因此当用户访问财务域中的应用程序时,该域优先。

后续步骤

  • 若要详细了解自定义域,请参阅使用 Microsoft Entra 应用程序代理中的自定义域
  • 若要详细了解如何发布应用程序,请参阅使用 Microsoft Entra 应用程序代理发布应用程序