Citrix Cloud

配置简化的 SAML 以供本地和来宾 SAML 用户使用

在阅读本文之前,必须了解“简化的 SAML”是否适合您的身份验证用例。在决定实施这个特定的特殊情况 SAML 解决方案之前,请仔细阅读用例描述和常见问题解答。 在继续操作之前,请确保您完全了解简化的 SAML 的适用场景以及需要使用哪些类型的身份。大多数 SAML 用例可以通过关注其他 SAML 文章并发送所有四个 cip_* 属性进行身份验证来实现。

注意:

使用“简化的 SAML”会增加 Citrix Cloud Connector 的负载,因为他们必须为每个 Workspace 最终用户登录查询用户邮箱、SID 和 OID,而不是 SAML 断言提供这些值。如果实际上并不需要简化的 SAML,则从 Citrix Cloud Connector 性能的角度来看,最好在 SAML 断言中发送所有四个 cip_* 属性。

必备条件

  • 专门配置为与简化的 SAML 一起使用的 SAML 应用程序,它仅在 SAML 断言中发送 cip_upn 进行身份验证。
  • 您的 SAML 提供商中的前端用户。
  • 包含两个 Citrix Cloud Connector 的资源位置,这些连接器加入了 AD 林和创建 AD 影子帐户的域。
  • 备用 UPN 后缀添加到创建 AD 影子帐户的后端 AD 林中。
  • 具有匹配的 UPN 的后端 AD 影子帐户。
  • 映射到 AD 影子帐户用户的 DaaS 或 CVAD 资源。
  • 一个或多个 FAS 服务器链接到同一个资源位置。

常见问题解答

我为什么要使用简化的 SAML

大型组织邀请承包商和临时员工加入他们的身份平台是很常见的。目标是授予承包商使用用户的现有身份(例如承包商电子邮件地址或组织外部的电子邮件地址)临时访问 Citrix Workspace 的权限。简化的 SAML 允许使用在发布 DaaS 资源的 AD 域中不存在的本机或来宾前端身份。

什么是简化的 SAML

通常,登录 Citrix Workspace 时,使用四个 SAML 属性 cip_* 及其相应的 AD 用户属性对最终用户进行身份验证。这四个 SAML 属性预计将出现在 SAML 断言中,并使用 AD 用户属性进行填充。简化的 SAML 是指仅需要 cip_upn SAML 属性即可成功进行身份验证的事实。

AD 属性 SAML 断言中的默认属性名称
userPrincipalName cip_upn
邮件 cip_email
objectSID cip_sid
objectGUID cip_oid

身份验证所需的其他三个 AD 用户属性 objectSID、objectGUID 和 mail 是使用加入到 AD 影子帐户所在的 AD 域的 Citrix Cloud Connector 获取的。在 Workspace 或 Citrix Cloud 的 SAML 登录流程中,不再需要将它们包含在 SAML 断言中。

AD 属性 SAML 断言中的默认属性名称
userPrincipalName cip_upn

重要:

仍然需要为包括简化的 SAML 在内的所有 SAML 流程发送 displayName。Workspace 用户界面要求 displayName 才能正确显示 Workspace 用户的全名。

什么是本机 SAML 用户身份

本机 SAML 用户是仅存在于您的 SAML 提供商目录中的用户身份,例如 Entra ID 或 Okta。这些身份不包含本地用户属性,因为它们不是通过 Entra ID connect 等 AD 同步工具创建的。它们需要匹配的 AD 后端影子帐户才能枚举和启动 DaaS 资源,本机 SAML 用户必须映射到 Active Directory 中的相应帐户。

本机样本

本地本机示例

什么是 AD 支持的 SAML 用户身份

AD 支持的 SAML 用户是存在于您的 SAML 提供商目录(如 Entra ID 或 Okta)中的用户身份,也存在于您的本地 AD 林中。这些身份包含本地用户属性,因为它们是通过 Entra ID connect 等 AD 同步工具创建的。这些用户不需要 AD 后端影子帐户,因为它们包含本地 SID 和 OID,因此可以枚举和启动 DaaS 资源。

AD 支持的 SAML

AD 支持的 SAML 用户身份

什么是前端身份

前端身份是用于登录 SAML 提供商和 Workspace 的身份。 前端身份具有不同的用户属性,具体取决于它们是如何在 SAML 提供商中创建的。

  1. 本机 SAML 用户身份
  2. AD 支持的 SAML 用户身份

您的 SAML 提供商可能混合使用这两种类型的身份。例如,如果您的身份平台内既有承包商又有长期员工,则简化的 SAML 适用于两种类型的前端身份,但仅当您的某些帐户类型为本机 SAML 用户身份时才是强制性的。

前端身份

什么是后端 AD 影子帐户

后端 AD 影子帐户是 DaaS 使用的 AD 帐户,它映射到您的 SAML 提供商中相应的前端身份。

为什么需要后端 AD 影子帐户

为了枚举使用 AD 域加入的 VDA 发布的 DaaS 或 CVAD 资源,需要加入 VDA 的 Active Directory 林中的 AD 帐户。将您的 DaaS 交付组中的资源映射到影子帐户用户,以及包含您加入 VDA 的 AD 域中的影子帐户的 AD 组。

重要:

只有没有 AD 域属性的本地 SAML 用户才需要匹配的 AD 影子帐户。如果您的前端身份是从 Active Directory 导入的,那么您不需要使用简化的 SAML,也不需要创建后端 AD 影子帐户。

我们如何将前端身份关联到相应的后端 AD 影子帐户

用于关联前端身份和后端身份的方法是使用匹配的 UPN。这两个关联的身份应具有相同的 UPN,这样 Workspace 就可以知道它们代表的是需要登录 Workspace、枚举和启动 DaaS 资源的同一个最终用户。

简化的 SAML 是否需要 Citrix FAS

是。当使用任何联合身份验证方法登录 Workspace 时,SSON 在 VDA 启动期间都需要 FAS。

什么是“SID 不匹配问题”?何时会发生

当 SAML 断言包含前端用户的 SID 与 AD 影子帐户用户的 SID 不匹配时,就会出现“SID 不匹配问题”。当登录到您的 SAML 提供商的帐户具有本地 SID(与影子帐户用户的 SID 不同)时,就会发生这种情况。 只有当前端身份由 Entra ID connect 等 AD 同步工具进行配置,并且来自与创建影子帐户时不同的 AD 林时,才会发生这种情况。

简化的 SAML 可防止“SID 不匹配问题”的发生。 始终通过加入后端 AD 域的 Citrix Cloud Connector 为影子帐户用户获取正确的 SID。使用前端用户的 UPN 执行影子帐户用户查询,然后将其与相应的后端影子帐户用户进行匹配。

SID 不匹配问题示例: 前端用户由 Entra ID connect 创建,并从 AD 林 1 同步。 S-1-5-21-000000000-0000000000-0000000001-0001

后端影子帐户用户是在 AD 森林 2 中创建的,并映射到 DaaS 资源 S-1-5-21-000000000-0000000000-0000000002-0002

SAML 断言包含所有四个 cip_* 属性,cip_sid 包含值 S-1-5-21-000000000-0000000000-0000000001-0001,该值与影子帐户的 SID 不匹配并会触发错误。

使用 Entra ID 为外部来宾帐户配置简化的 SAML

  1. 登录 Azure 门户。
  2. 在门户菜单中,选择 Entra ID
  3. 在左侧窗格的“管理”下,选择“企业应用程序”。
  4. 选择“创建自己的应用程序”。
  5. 为 SAML 应用程序输入合适的名称,例如 Citrix Cloud SAML SSO Production Simplified SAML

    创建自己的应用程序

  6. 在左侧导航窗格中,选择单点登录,然后在工作窗格中单击 SAML
  7. 在“基本 SAML 配置”部分中,单击“编辑”并配置以下设置:
    1. 标识符(实体 ID) 部分,选择 添加标识符 ,然后输入与您的 Citrix Cloud 租户所在区域关联的值:
      • 对于欧洲、美国和亚太南部地区,请输入 https://saml.cloud.com
      • 对于日本区域,请输入 https://saml.citrixcloud.jp
      • 对于 Citrix Cloud Government 区域,请输入 https://saml.cloud.us
    2. 在“回复 URL(断言消费者服务 URL)”部分,选择“添加回复 URL”,然后输入与 Citrix Cloud 租户所在区域关联的值:
      • 对于欧洲、美国和亚太南部地区,请输入 https://saml.cloud.com/saml/acs
      • 对于日本区域,请输入 https://saml.citrixcloud.jp/saml/acs
      • 对于 Citrix Cloud Government 区域,请输入 https://saml.cloud.us/saml/acs
    3. 在“登录 URL”部分,输入您的 Workspace URL。
    4. 注销 URL(可选)部分,输入与您的 Citrix Cloud 租户所在区域关联的值:
      • 对于欧洲、美国和亚太南部地区,请输入 https://saml.cloud.com/saml/logout/callback
      • 对于日本区域,请输入 https://saml.citrixcloud.jp/saml/logout/callback
      • 对于 Citrix Cloud Government 区域,请输入 https://saml.cloud.us/saml/logout/callback
    5. 在命令栏上,单击“保存”。“基本 SAML 配置”部分显示如下:

      基本 SAML 配置

  8. 在“属性和声明”部分,单击“编辑”以配置以下声明。这些声明出现在 SAML 响应中的 SAML 断言中。创建 SAML 应用程序后,配置以下属性。

    属性和声明

    1. 对于 唯一用户标识符(姓名 ID) 声明,请保留默认值 user.userprincipalname
    2. 对于 cip_upn 声明,请保留 user.userprincipalname 的默认值。
    3. 对于 displayName,请保留 user.displayname 的默认值。
    4. 在“其他声明”部分中,对于 http://schemas.xmlsoap.org/ws/2005/05/identity/claims 命名空间的所有剩余声明,请单击省略号 (…) 按钮,然后单击“删除”。无需包含这些声明,因为它们是上述用户属性的重复。

      完成后,“属性和声明”部分将显示如下所示:

      属性和声明

    5. 使用此第三方在线工具获取 Citrix Cloud SAML 签名证书的副本。
    6. 在 URL 字段中输入 https://saml.cloud.com/saml/metadata 并单击“加载”。

    “删除”菜单突出显示

  9. 滚动到页面底部,然后单击“下载”。

    下载元数据证书

    下载证书

  10. 配置 Azure Active Directory SAML 应用程序签名设置。
  11. 在 Azure Active Directory SAML 应用程序中上载步骤 10 中获得的生产 SAML 签名证书
    1. 启用“需要验证证书”。

    验证证书

    验证证书

配置 Citrix Cloud 简化的 SAML 连接

默认情况下,Citrix Cloud 预计在 SAML 断言中会出现 cip_upn、cip_email、cip_sid 和 cip_oid,如果不发送这些属性,SAML 登录将失败。为防止出现这种情况,请在创建新的 SAML 连接时取消对这些属性的检查。

  1. 使用默认设置创建新的 SAML 连接。
  2. 导航到底部的“SAML 属性映射配置”部分,在保存新的 SAML 配置之前进行更改。
  3. 从每个 cip_emailcip_sidcip_oid 字段中删除 SAML 属性名称。
  4. 不要从其字段中删除 cip_upn
  5. 不要从各自的字段中移除任何其他属性。Workspace 用户界面仍然需要 displayName,不应进行更改。

简化的 SAML 连接 UPN

配置您的 AD 影子帐户资源位置和连接器

后端影子帐户 AD 林中的资源位置和连接器对是必需的。当 SAML 断言中直接提供 cip_upn 时,Citrix Cloud 要求此 AD 林中的连接器查找影子帐户用户的身份和属性,例如 cip_email、cip_sid 和 cip_oid。

  1. 创建一个新的资源位置,其中将包含加入后端影子帐户 AD 林的 Citrix Cloud Connector。

    AD 影子帐户

  2. 命名资源位置以匹配 AD 林,其中包含您要使用的后端 AD 影子帐户。
  3. 在新创建的资源位置内配置一对 Citrix Cloud Connector。

举个例子 ccconnector1.shadowaccountforest.com ccconnector2.shadowaccountforest.com

在后端 AD 林中配置 FAS

承包商前端用户肯定需要FAS。在 DaaS 启动期间,承包商用户将无法手动输入 Windows 凭据来完成启动,因为他们可能不知道 AD 影子帐户的密码。

  1. 在创建影子帐户的后端 AD 林中配置一个或多个 FAS 服务器。
  2. 将 FAS 服务器链接到包含两个 Citrix Cloud Connector 的同一个资源位置,这些连接器已连接到创建影子帐户的后端 AD 林。

配置 FAS

在 AD 域中配置备用 UPN 后缀

重要:

UPN 与用户的电子邮件地址不同。在许多情况下,为了便于使用,它们具有相同的值,但是 UPN 和电子邮件具有不同的内部用途,并且定义在不同的 active Directory 属性中。

用户主体名称 (UPN) 后缀是 AD 中登录名称的一部分。当您创建新帐户时,它会默认使用您的 AD 林的隐式 UPN 后缀,例如 yourforest.com。您需要为您希望邀请加入Okta或Azure AD租户的每位外部前端用户添加匹配的备用UPN后缀。

例如,如果您邀请外部用户 contractoruser@hotmail.co.uk 并希望将其与后端 AD 影子帐户 contractoruser@yourforest.com 关联起来,则在您的 AD 林中添加 yourforest.com 作为 ALT UPN 后缀。

使用 Active Directory 域和信任 UI 在 Active Directory 中添加备用 UPN 后缀

  1. 登录您的后端 AD 林中的域控制器。
  2. 打开“运行”对话框,键入 domain.msc,然后单击“确定”。
  3. 在 Active Directory 域和信任窗口中,右键单击 Active Directory 域和信任,然后选择“属性”。
  4. UPN 后缀选项卡上的“备用 UPN 后缀”框中,添加备用 UPN 后缀,然后选择“添加”。

    AD 域和信任用户界面

  5. 单击确定

使用 PowerShell 管理您的后端 AD 林的 UPN 后缀

您可能需要向后端 AD 林中添加大量新的 UPN 后缀,才能创建必要的影子帐户 UPN。您需要向后端 AD 林中添加备用 UPN 后缀的数量将取决于您选择邀请多少不同的外部用户加入 SAML 提供商租户。

如果需要创建大量新的备用 UPN 后缀,以下是一些可以实现此目的的 PowerShell。

# Get the list of existing ALT UPN suffixes within your AD Forest
(Get-ADForest).UPNSuffixes

# Add or remove ALT UPN Suffixes
$NewUPNSuffixes = @("yourforest.com","externalusers.com")

# Set action to "add" or "remove" depending on the operation you wish to perform.
$Action = "add"
foreach($NewUPNSuffix in $NewUPNSuffixes)
{
    Get-ADForest | Set-ADForest -UPNSuffixes @{$Action=$NewUPNSuffix}
}
<!--NeedCopy-->

在您的后端 AD 林中配置 AD 影子帐户

  1. 创建新的 AD 影子帐户用户。
  2. 默认情况下,新的 AD 用户会选择 AD 林隐式 UPN,例如 yourforest.local。选择您之前创建的相应备用 UPN 后缀。例如,选择 yourforest.com 作为影子帐户用户的 UPN 后缀。

    新对象用户

    影子帐户用户的 UPN 也可以通过 PowerShell 更新。

    Set-ADUser "contractoruser" -UserPrincipalName "contractoruser@yourforest.com"
    <!--NeedCopy-->
    
  3. 影子帐户用户的 UPN 应与外部前端身份用户的 UPN 完全匹配。
  4. 测试前端用户登录 Workspace 的情况。
  5. 验证登录成功后,在 Workspace 中枚举了所有预期的资源。映射到 AD 影子帐户的资源应显示出来。

配置来宾输入 ID 用户 UPN 以匹配 AD 影子帐户 UPN

当邀请外部来宾用户加入 Entra ID 租户时,会创建一个自动生成的 UPN,表明该用户是外部用户。将自动为外部 Entra ID 用户分配 @Entra IDtenant.onmicrosoft.com UPN 后缀,该后缀不适合与简化的 SAML 一起使用,也与您的 AD 影子帐户不匹配。需要对其进行更新,以匹配 Entra ID 中导入的 DNS 域以及您在 AD 林中创建的备用 UPN 后缀。

  1. 将与您添加到 AD 林中的备用 UPN 后缀相匹配的自定义域名导入 Entra ID。

    自定义域名

  2. 邀请来宾用户(例如 contractoruser@hotmail.co.uk)并确保受邀来宾用户接受 Entra ID 租户的 Microsoft 邀请。

    Microsoft 生成的外部来宾用户 UPN 格式示例。 contractoruser_hotmail.co.uk#EXT#@yourEntra IDtenant.onmicrosoft.com

    MD omnisoft

    MD guest

    重要:

    Citrix Cloud 和 Workspace 不能使用包含 # 字符的 UPN 进行 SAML 身份验证。

  3. 安装必要的 Azure PowerShell Graph 模块以允许您管理 Entra ID 用户。

    Install-Module -Name "Microsoft.Graph" -Force
    Get-InstalledModule -Name  "Microsoft.Graph"
    <!--NeedCopy-->
    
  4. 使用全局管理员帐户和 Directory.AccessAsUser.All 作用域登录到您的 Entra ID 租户。

    重要:

    如果您使用权限较低的帐户或未指定 Directory.AccessAsUser.All 作用域,则将无法完成步骤 4 和更新来宾用户的 UPN。

    $EntraTenantID = "<yourEntraTenantID>"
    Connect-MgGraph -Tenant $EntraTenantID -Scopes "Directory.AccessAsUser.All"
    <!--NeedCopy-->
    
  5. 获取 Entra ID 租户中外部来宾用户的完整列表(可选)。

    外部来宾用户

    Get-MgUser -filter "userType eq 'Guest'" | Select Id,DisplayName,UserPrincipalName,Mail
    <!--NeedCopy-->
    
  6. 获取需要更新 UPN 的来宾用户身份,然后更新其 UPN 后缀。

    $GuestUserId = (Get-MgUser -UserId "contractoruser_hotmail.co.uk#EXT#@yourEntra IDtenant.onmicrosoft.com").Id
    
    Update-MgUser -UserId $GuestUserId -UserPrincipalName "contractoruser@yourforest.com"
    <!--NeedCopy-->
    
  7. 检查来宾用户身份可以使用其最新更新的 UPN 找到。

    Get-MgUser -UserId "contractoruser@yourforest.com"
    <!--NeedCopy-->
    

测试简化的 SAML 解决方案

在 AD、Citrix Cloud 和您的 SAML 提供商中完成所有记录的步骤后,您需要测试登录并验证在 Workspace 中为来宾用户显示的资源列表是否正确。

Citrix 建议在所有 SAML 调试中使用 SAML-Tracer 浏览器扩展程序。此扩展程序适用于大多数常见的网络浏览器。该扩展程序将 Base64 编码的请求和响应解码为 SAML XML,这样它们便于人类阅读。

SAML tracer

使用 SAML tracer 捕获的仅使用 cip_upn 进行身份验证的简化的 SAML 断言示例。

简化的 SAML 示例

测试前端

  1. 将正确的 DaaS 资源映射到由 AD 支持的和影子帐户用户或包含这些资源的组。

  2. 启动 SAML tracer 浏览器扩展程序并捕获整个登录和注销流程。

  3. 使用表中为要测试的前端用户类型指定的属性登录到 Workspace。

    来宾 Entra ID 用户登录: 您作为来宾用户邀请加入 Entra ID 租户的承包商用户拥有该电子邮件地址 contractoruser@hotmail.co.uk

    Entra ID 提示时,输入来宾用户的电子邮件地址

    AD 支持的 EntraID 用户/本地 EntraID 用户登录: 这些 Entra ID 用户将拥有格式为 adbackeduser@yourforest.comnativeuser@yourforest.com 的 UPN。

    当出现 Entra ID 提示时,输入用户的 UPN

  4. 检查断言仅包含用于身份验证的 cip_upn 属性,并且它还包含 Workspace 用户界面要求的 displayName 属性。

  5. 检查用户能否在用户界面中看到所需的 DaaS 资源。

对简化的 SAML 解决方案进行故障排除

缺少 cip_* 属性错误

对简化的 SAML 解决方案进行故障排除

原因 1:SAML 断言中不存在 SAML 属性,但是 Citrix Cloud 配置为期望接收该属性。您未能在 SAML 属性部分中从 Citrix Cloud SAML 连接中删除不必要的 cip_* 属性。断开连接并重新连接 SAML 以删除对不必要的 cip_* 属性的引用。

原因 2:如果 Citrix Cloud Connector 在您的后端 AD 林中没有相应的 AD 影子帐户可供查找,也可能发生此错误。您可能已正确配置了前端身份,但带有匹配的 UPN 的后端 AD 影子帐户身份不存在或找不到。

登录成功,但在用户登录 Workspace 后不显示 DaaS 资源

原因:这很可能是由不正确的前端到后端身份 UPN 映射造成的。

确保前端和后端身份的 2 个 UPN 完全匹配并代表登录到 Workspace 的同一最终用户。检查 DaaS 交付组是否包含指向正确 AD 影子帐户用户或包含这些用户的 AD 组的映射。

在启动 DaaS 资源期间,加入了 AD 域的 FAS SSON 出现故障

尝试启动 DaaS 资源时,系统会提示 Workspace 最终用户在 GINA 中输入其 Windows 凭据。此外,事件 ID 103 出现在您的 FAS 服务器的 Windows 事件日志中。

[S103] Server [CC:FASServer] requested UPN [frontenduser@yourforest.com] SID S-1-5-21-000000000-0000000000-0000000001-0001, but lookup returned SID S-1-5-21-000000000-0000000000-0000000001-0002. [correlation: cc#967472c8-4342-489b-9589-044a24ca57d1]

原因:您的简化的 SAML 部署出现“SID 不匹配问题”。您的前端身份包含来自 AD 林的 SID,该林与后端影子帐户 AD 林不同。
不要在 SAML 断言中发送 cip_sid

当多个连接的 AD 林中存在相同的 UPN 后缀时,支持 AD 的用户登录失败

Citrix Cloud 有多个资源位置和连接器连接到不同的 AD 林。当 AD 支持的用户从与影子 accountAD 林不同的 AD 林导入 Entra ID 时,登录失败。

AD 林 1 与 Entra ID 同步,使用 UPN 创建前端用户,例如 frontenduser@yourforest.com

AD 林 2 包含带有 UPN 的后端影子帐户,例如 frontenduser@yourforest.com

原因:您的简化的 SAML 部署遇到“UPN 歧义问题”。Citrix Cloud 无法确定使用哪些连接器来查找用户的后端身份。

不要在 SAML 断言中发送 cip_sid
您的用户的 UPN 存在于连接到 Citrix Cloud 的多个 AD 林中。