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

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

  • 简化管理开销
  • 减少潜在的配置错误
  • 使用户能够安全访问更多资源

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

创建通配符应用程序

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

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

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

http(s)://*.<domain>

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

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

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

先决条件

若要开始使用,请确保已满足下列要求。

自定义域

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

  1. 在 Azure 中创建已验证的域。
  2. 将 PFX 格式的 TLS/SSL 证书上传到应用程序代理。

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

出于安全原因,这是一项硬性要求,对于无法将自定义域用于外部 URL 的应用程序,我们不支持通配符。

DNS 更新

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

<yourAADTenantId>.tenant.runtime.msappproxy.net

若要确认是否已正确配置 CNAME,可以在某个目标终结点上使用 nslookup,例如 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 改为指向通配符。 而不是,将 hr.adventure-works.comexpenses.adventure-works.comtravel.adventure-works.com individually 指向 00001111-aaaa-2222-bbbb-3333cccc4444.tenant.runtime.msappproxy.net,而不是 *.adventure-works.com

如果使用此选项,则还需要为值 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 的验证域。
  • 已创建将 *.adventure-works.com 指向 00001111-aaaa-2222-bbbb-3333cccc4444.tenant.runtime.msappproxy.netCNAME 条目。

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

  • 内部 URL:

    示例:内部 URL 中的通配符

  • 外部 URL:

    示例:外部 URL 中的通配符

  • 内部应用程序 SPN:

    示例:SPN 配置中的通配符

发布通配符应用程序后,可以通过导航到过去经常使用的 URL(例如 travel.adventure-works.com)来访问上述三个应用程序。

该配置实现以下结构:

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

Color 说明
蓝色 显式发布并在 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 更具体,因此,此应用程序在用户访问财务域中的应用程序时优先。

后续步骤