Citrix Cloud™

高级 SAML 场景以及在 SAML 断言中正确使用 cip_forest 和 cip_domain

本文介绍了涉及多个连接的 Active Directory 林和域的 Citrix Cloud 或 Storefront 高级 SAML 配置。本文适用于具有复杂 AD 部署的大型企业,应由架构师级别的 Citrix Cloud、IdP 和 AD 管理员实施。此高级 SAML 配置最常见的用途是在并购场景中,其中大型企业由许多具有不同 AD 基础架构、多个林以及具有不同 UPN 的不同 AD 后端用户群体的较小组织组成。并购场景中也经常需要条件身份验证。

可选的 cip_forest 和 cip_domain 声明使 Citrix Cloud 管理员能够更好地控制在 SAML 身份验证期间使用哪些 Citrix Cloud Connector 来查找 AD 后端用户帐户。Citrix Cloud 与 SAML 支持许多高级帐户映射用例,而其他 Citrix Cloud 联合 OIDC 身份验证方法(例如 Okta IdP 或 Entra ID IdP)无法实现这些用例。

先决条件

  • 使用默认的 Citrix Cloud SAML 流程,该流程使用 AD 身份验证最终用户。
  • 深入了解您的 AD 林或域基础架构以及您的 Storefront 最终用户身份所在的位置。
  • Citrix Cloud Connector 已加入正确的 AD 林和域,并以正确的 AD 域级别加入。
  • 了解您的 Citrix Cloud 租户中已配置的现有资源位置和 Citrix Cloud Connector。
  • 连接到 Citrix Cloud 的多个 AD 林之间不应存在任何 Active Directory 信任关系。
  • 了解前端(Entra ID、Okta、Duo)和后端用户 (AD) 身份的含义。
  • 前端和后端用户身份必须通过匹配的 UPN 进行链接。不支持链接一对不具有匹配 UPN 的前端和后端用户身份。
  • 了解每个 UPN 后缀在 Active Directory 中的位置,以及特定 UPN 后缀是否模糊不清并存在于多个连接的 AD 林中。
  • DaaS VDA 应加入 AD 域。
  • DaaS 应用程序和桌面应发布到 AD 身份。
  • 在 DaaS 中将交付组资源映射到 AD 组时,通用 AD 组是强制性的。
  • DaaS 交付组必须设置为“限制资源使用”,并且应分配给正确的通用 AD 组。DaaS 交付组中不支持使用“允许任何经过身份验证的用户使用资源”。

    编辑交付组

  • FAS 服务器已加入正确的 AD 林,并在正确的 AD 级别加入域。在 DaaS 启动期间,SSON 到已加入 AD 域的 VDA 需要 FAS 服务器。

    林资源位置

  • 如果您有多个 SAML 应用程序,并且每个连接的 AD 林需要一个 SAML 应用程序,则可能还需要实施条件身份验证。在并购场景中,每个 SAML 应用程序可能需要 cip_forest 和 cip_domain 的不同值集。

常见问题

如果我在 SAML 断言中发送 cip_sid,是否还需要发送 cip_forest 和 cip_domain 可选声明?

不需要。如果您的 SAML 应用程序配置为发送 cip_sid 声明并将其包含在 SAML 断言中,则 Citrix Cloud 将始终能够正确识别 AD 后端用户所在的林和域。cip_forest 和 cip_domain 不是必需的。

重要提示:

  • 在 SAML 断言中无法发送 cip_sid 的 SAML 场景,可能需要使用 cip_forest 和 cip_domain。
  • 包含不正确 SID 的前端用户,该 SID 与 DaaS 交付组中映射的后端 AD 用户的 SID 不匹配。
  • 完全没有嵌入 SID 的前端用户,例如未通过 AD 导入工具在 IdP 中创建的本机 Okta、Entra ID 或 Duo 用户。

什么是 AD 隐式 UPN 后缀?

隐式 UPN 由 Active Directory 自动创建,并基于用户的 sAMAccountName 和林的 DNS 名称。隐式 UPN 在 AD 林中始终是唯一的,因为它们派生自 sAMAccountName 和域的 DNS 名称,而这些在 AD 林中是唯一的。例如 @rootforestdomain.local

什么是 AD 显式 (ALT) UPN 后缀?

显式 UPN 后缀是 AD 管理员在 Active Directory 域和信任中添加的自定义域名。例如 @rootforestdomain.local

备用 UPN 后缀列表

备用 UPN 后缀列表2

重要提示:

Windows AD PowerShell 允许您使用指定的任何 UPN 后缀创建 AD 用户,即使该 UPN 后缀不存在于您的 AD 林中。您要使用的备用 UPN 后缀必须存在于 AD 林中,因为 Citrix Cloud Connector 依赖此列表来查找后端帐户用户。如果备用 UPN 后缀未按上述屏幕截图所示在 AD 林中配置,那么 Citrix Cloud 将无法将您的前端身份与相应的后端 AD 帐户匹配。

什么是 UPN 歧义,以及它为何对 Citrix Cloud 和 DaaS 构成问题?

UPN 歧义是一种可能出现的情况,如果 duplicateuser@domain.com 存在于连接到 Citrix Cloud 的 2 个或更多 AD 林中。仅凭 UPN 后缀 @domain.com 无法在存在两个版本的 duplicateuser@domain.com 时确定正确的 AD 后端用户。这可能导致 DaaS 资源完全无法枚举,或者使用加入 AD 域的 VDA 发布的错误 DaaS 资源可能会显示在商店中。

为什么通用 AD 组是一项要求?

通用 AD 组存储在全局编录 (GC) 中,使它们对整个林中的所有域控制器可见。这使得它们可以用于向同一林中任何域内的资源分配权限。

重要提示:

使用 AD 通用组是一项要求,适用于所有 SAML 配置,而不仅仅是涉及 cip_forest 和 cip_domain 的高级配置。使用其他 AD 组类型(例如全局组)可能导致商店中的资源枚举失败。

建议您阅读这篇 Microsoft 文章,了解 AD 组范围。

为什么不建议在 DaaS 交付组中使用“允许任何经过身份验证的用户使用资源”?

配置“允许任何经过身份验证的用户使用资源”将导致使用加入 AD 域的 VDA 发布的资源在商店中显示给 AD 用户身份,而这些身份不在同一域和林中。使用林 1 中的商店 AD 最终用户身份从林 2 中加入域的 VDA 启动资源将不会成功。

在 SAML 断言中单独发送 cip_forest 或 cip_domain?

不。如果您想为后端用户查找指定特定的 AD 林和域上下文,则必须在 SAML 断言中提供这两个可选声明。

为 cip_forest 指定值时应使用的 UPN 后缀?

应使用 AD 林的隐式 UPN 后缀。请勿在 cip_forest 声明中指定已添加到 AD 林的 ALT UPN 后缀的值。这是因为在某些 AD 拓扑中,相同的 ALT UPN 后缀可能已添加到连接到 Citrix Cloud 的多个 AD 林中。隐式 UPN 后缀和 DN 对 Citrix Cloud 来说永远不会模棱两可,除非两个具有相同 DN(例如 DC=duplicate,DC=com)的不同 AD 林连接到 Citrix Cloud(这种情况不太可能发生)。

cip_forest 和 cip_domain 的值何时应该相同或不同?

场景 1: 您的 Citrix Cloud Connector 在林根级别加入域,并且后端 AD 帐户用户位于连接的 AD 林中的根域内。

cip_domain 和 cip_forest 应具有相同的值。

cip_forest = “forestrootdomain.com”

cip_domain = “forestrootdomain.com”

场景 2: 您的 Citrix Cloud Connector 加入到 AD 林层次结构中的子域。后端 AD 用户存在于您的 AD 林中的“childdomain.forestrootdomain.com”内。

cip_domain 和 cip_forest 应具有不同的值。

cip_forest = “forestrootdomain.com”

cip_domain = “childdomain.forestrootdomain.com”

我可以在 SAML 断言中硬编码 cip_forest 和 cip_domain 的值吗?

可以,但前提是映射到 DaaS 资源的整个后端 AD 用户群体都位于同一个 AD 林中。硬编码 cip_forest 和 cip_domain 的值要求每个前端用户在同一个 AD 林和域中拥有其相应的后端 AD 帐户。

我可以在 SAML 断言中动态指定 cip_forest 和 cip_domain 的不同值?

可以,如果您的 SAML 提供程序通过声明转换规则允许这样做。如果您有不同 UPN 后缀的不同前端用户群,则可以使用组员资格等切换条件动态指定 cip_forest 和 cip_domain 的值。这在 Entra ID SAML 应用程序中是可能的,在支持声明转换规则的其他 SAML IdP 中也可能实现。

我应该将 FAS 服务器放在哪里,才能成功启动对已加入 AD 域的 VDA 的 SSON?

FAS 服务器应加入域,并在后端 AD 帐户所在的每个后端 AD 林中进行配置。建议您在 AD 林根域级别将 FAS 服务器加入域。

SAML 断言中需要 cip_forest 和 cip_domain 的 AD 拓扑

场景 1:SAML 最终用户的 UPN 不明确,并且存在于连接到 Citrix Cloud 的多个 AD 林中

  • Citrix Cloud 租户有两个或更多资源位置,以及连接到 Citrix Cloud 的多个 AD 林或域。

    林资源位置

  • ResourceLocation1 包含 Citrix Cloud Connector,它们在根林级别加入 AD forestrootdomain1.com 域。
  • ResourceLocation2 包含 Citrix Cloud Connector,它们在根林级别加入 AD forestrootdomain2.com 域。
  • forestrootdomain1.com 和 forestrootdomain2.com 都具有相同的 UPN @domain.com 后缀。
  • forestrootdomain1.com 和 forestrootdomain2.com 中也可能存在具有相同 UPN duplicateuser@domain.com 但 SID 和 OID 值不同的重复用户。

问题: 由于 UPN 不明确,尝试使用 username@duplicatesuffix.com 查找正确的后端 AD 帐户并不总是返回正确的 AD 后端用户。Citrix Cloud 无法确定要使用哪个 AD 林和 Citrix Cloud Connector,因此商店中可能会显示错误的 DaaS 资源,或者根本不返回任何 DaaS 资源。

解决方案: 配置两个不同的 SAML 应用程序,每个连接的 AD 林一个,并在 SAML 断言中包含相应 AD 林的 cip_domain 和 cip_forest 值。这为 Citrix Cloud 提供了额外的林和域上下文,以确保当 username@duplicatesuffix.com 存在于多个连接的林中时,能够“查找”到正确的后端 AD 用户。

SAML 应用程序 1 forestrootdomain1.com:

林根域 1

SAML 应用程序 2 forestrootdomain2.com:

林根域2

使用正确的 AD 后端组正确映射两个 DaaS 交付组。

场景 2:Cloud Connector 在子域级别加入,并将用户存储在子域级别

Citrix Cloud 租户有一个资源位置,其中包含两个 Citrix Cloud Connector,它们在“childdomain.forestrootdomain.com”级别而不是推荐的“forestrootdomain.com”级别加入域。存储用户存在于 childdomain.forestrootdomain.com 子域中。用户配置为使用根域 UPN 后缀,例如 username@forestrootdomain.com

问题: Citrix Cloud 使用“forestrootdomain.com”执行 AD 帐户查找,但这与连接的 AD 域不匹配。

解决方案: 在 SAML 断言中指定子域上下文,以便从正确的 AD 子域和林上下文“查找”AD 帐户用户。

cip_forest = forestrootdomain.com

cip_domain = childdomain.forestrootdomain.com

属性和声明

高级 SAML 场景以及在 SAML 断言中正确使用 cip_forest 和 cip_domain