Linux Virtual Delivery Agent

联合身份验证服务

概述

Citrix 联合身份验证服务 (FAS) 是一个特权组件,可与 Active Directory 证书服务集成。它动态地为用户颁发证书,以便用户能够登录到 Active Directory 环境,就如同他们具有智能卡一样。此功能使得 StoreFront 能够使用范围更广的身份验证选项,例如安全声明标记语言 (SAML) 声明。SAML 常用于替代 Internet 上的传统 Windows 用户帐户。

注意:

要使用 SAML 身份验证,请在 VDA 上正确配置 FAS。

从 CU3 开始,Linux VDA 会使用短连接与 FAS 服务器传输数据。

下图显示了 FAS 与 Microsoft 证书颁发机构的集成,并为 StoreFront 和 VDA 提供支持服务。

FAS 体系结构

当用户请求访问 Citrix 环境时,可信 StoreFront 服务器会联系 FAS。FAS 将授予一个票据,允许单个 Citrix Virtual Apps 或 Citrix Virtual Desktops 会话使用该会话的证书进行身份验证。当 VDA 需要对用户进行身份验证时,它会连接到 FAS 并找回票据。仅 FAS 有权访问用户证书的私钥。VDA 必须向 FAS 发送需要执行的每个签名和解密操作以及证书。

要求

在 Windows Server 2008 R2 及更高版本上支持 FAS。

  • 我们建议在不包含其他 Citrix 组件的服务器上安装 FAS。
  • 必须确保 Windows Server 访问注册颁发机构证书和私钥的安全,才能自动为域用户颁发证书以及颁发用于访问这些用户证书和私钥的证书。

在 Citrix Virtual Apps 或 Citrix Virtual Desktops 站点中:

  • Delivery Controller 的版本必须至少为 7.9。
  • StoreFront 服务器的版本必须至少为 3.6(随 XenApp 和 XenDesktop 7.9 ISO 提供的版本)。
  • Linux VDA 的版本必须至少为 7.18。在以通常方式创建计算机目录之前,验证已向 VDA 正确应用联合身份验证服务组策略配置。有关详细信息,请参阅本文中的配置组策略部分。

参考:

配置 Windows 进行证书登录

有关配置 Windows 进行证书登录的信息,请打开知识中心文章 CTX206156 以下载并阅读 Smart_card_config_Citrix_Env.pdf 文件(下文称为“PDF 文件”)。请根据该 PDF 文件执行以下步骤,同时注意每个步骤中列出的差异或补充内容。应特别注意执行操作的目标计算机,例如 AD、Delivery Controller 或 StoreFront。

设置 Windows 域(在 AD 上)

安装域控制器角色

请参阅该 PDF 文件中的 Installing Domain Controller Roles(安装域控制器角色)部分。

在安装 Active Directory 证书服务期间,请务必选择以下选项:

选择角色服务的示意图

配置 Active Directory 证书服务的示意图

AD CS 配置窗口的示意图

打开 http://localhost/certsrv/ 以检查是否显示以下欢迎页面。如果显示,则已成功安装 Active Directory 证书服务。

成功安装 AD 证书服务时显示的欢迎页面的示意图

准备证书颁发机构以使用智能卡

无补充内容。请参阅该 PDF 文件中的 Preparing the Certificate Authority for Smart card usage(准备证书颁发机构以使用智能卡)部分。

颁发域控制器证书

无补充内容。请参阅该 PDF 文件中的 Issuing a Domain Controller Certificate(颁发域控制器证书)部分。

为 Microsoft IIS 配置 HTTPS(在 StoreFront 上)

在 Microsoft IIS 中配置 HTTPS

无补充内容。请参阅该 PDF 文件中的 Configuring HTTPS on Microsoft IIS(在 Microsoft IIS 中配置 HTTPS)部分。

未加入域的计算机

请参阅该 PDF 文件中的 Non-Domain Joined Computers(未加入域的计算机)部分。

从 Microsoft CA 检索 CA 证书(在 AD 上)

无补充内容。请参阅该 PDF 文件中的 Retrieving the CA Certificate from the Microsoft CA(从 Microsoft CA 中获取 CA 证书)部分。

在 Windows 上安装可信的 CA 证书

无补充内容。请参阅该 PDF 文件中的 Installing the Trusted CA Certificate on Windows(在 Windows 上安装可信的 CA 证书)部分。

配置 Citrix StoreFront(在 StoreFront 上)

创建应用商店

请参阅该 PDF 文件中的 Creating the Store(创建应用商店)部分。

完成前面的 IIS 配置后,常用应用商店的基本 URL 强制设置为 https:// 而非 http://。由于 FAS 不与智能卡共享应用商店,因此 FAS 需要新的应用商店。Linux VDA FAS 与任何 StoreFront 身份验证方法都兼容。例如,FAS 应用商店可以配置为使用密码或 SAML,但不能同时使用两者。选择了 SAML 时,StoreFront 的 URL 将自动重定向到 IdP,且忽略密码身份验证方法。

创建 FAS 应用商店的示意图

管理智能卡身份验证方法的示意图

已创建 FAS 应用商店的示意图

启动 Internet Explorer 并打开 FAS 应用商店的 URL(例如 https://mzgwy-ddc.xd.local/Citrix/FASWeb)。

注意: FAS 应用商店的 URL 必须附加 Web

安装和设置 FAS

安装和设置过程包括以下步骤:

  1. 安装联合身份验证服务
  2. 在 StoreFront 服务器上启用“联合身份验证服务”插件
  3. 配置组策略
  4. 使用“联合身份验证服务”管理控制台执行以下操作:(a) 部署所提供的模板,(b) 设置证书颁发机构,以及 (c) 授权联合身份验证服务使用您的证书颁发机构
  5. 配置用户规则

有关每个步骤的说明,请参阅联合身份验证服务。请注意每个步骤中的以下差异或补充内容。应特别注意执行操作的目标计算机,例如 AD、Delivery Controller、StoreFront 或 FAS 服务器。

安装联合身份验证服务(在 FAS 服务器上)

出于安全考虑,请将 FAS 安装在专用服务器上,并且此服务器应受到与域控制器或证书颁发机构类似的保护。

在 StoreFront 应用商店上启用联合身份验证服务插件(在 StoreFront 上)

请确保以下命令使用在配置 StoreFront 时键入的同一 FAS 应用商店名称。例如,在此示例中,FAS 是应用商店名称:

$StoreVirtualPath = “/Citrix/FAS

配置 Delivery Controller(在 Delivery Controller 上)

要使用联合身份验证服务,请配置 Delivery Controller 以信任可与其连接的 StoreFront 服务器:运行 Set-BrokerSite -TrustRequestsSentToTheXmlServicePort $true PowerShell cmdlet。有时,您可能需要先运行 Add-PSSnapin citrix.*

配置组策略(在 FAS 服务器上和 AD 上)

您必须是管理员,才能执行此部分中的步骤 1-7。步骤 1 必须在 FAS 服务器上完成,步骤 2-7 必须在 AD 上完成。

完成步骤 1-7 后, 在 FAS 服务器的注册表编辑器中检查以确认是否设置了 FAS 策略。

设置 FAS 策略的示意图

启用会话中证书支持

Linux VDA 不支持会话中证书。

使用联合身份验证服务管理控制台(在 FAS 服务器上)

无补充内容。请参阅联合身份验证服务一文。

部署证书模板(在 FAS 服务器上)

无补充内容。请参阅联合身份验证服务一文。

设置 Active Directory 证书服务(在 FAS 服务器上)

无补充内容。请参阅联合身份验证服务一文。

授权联合身份验证服务(在 FAS 服务器上)

无补充内容。请参阅联合身份验证服务一文。

配置用户规则(在 FAS 服务器上)

无补充内容。请参阅联合身份验证服务一文。

有关详细信息,另请参阅联合身份验证服务一文的安全注意事项部分中的委派注册代理访问控制列表配置部分。

联合身份验证服务 ADFS 部署

有关如何为联合身份验证服务部署 ADFS IdP 的信息,请参阅联合身份验证服务 ADFS 部署

配置 Linux VDA

设置 FAS 服务器

如果是全新安装 Linux VDA,要使用 FAS,请在执行 ctxinstall.sh 或 ctxsetup.sh 过程中看到要求提供 CTX_XDL_FAS_LIST 时,键入每个 FAS 服务器的 FQDN。由于 Linux VDA 不支持 AD 组策略,您可以改为提供以分号分隔的 FAS 服务器的列表。如果删除了任何服务器地址,则使用 <none> 文本字符串填充空白处,并使服务器地址的顺序保持不变。

如果是升级现有的 Linux VDA 安装,可以重新运行 ctxsetup.sh 来设置 FAS 服务器。或者,也可以运行以下命令来设置 FAS 服务器,并重新启动 ctxvda 服务以使设置生效。

sudo /opt/Citrix/VDA/bin/ctxreg create -k "HKLM\Software\Citrix\VirtualDesktopAgent\Authentication\UserCredentialService" -t "REG_SZ" -v "Addresses" -d "<Your-FAS-Server-List>" --force

service ctxvda restart
<!--NeedCopy-->

要通过 ctxreg 更新 FAS 服务器,请运行以下命令:

sudo /opt/Citrix/VDA/bin/ctxreg update -k "HKLM\Software\Citrix\VirtualDesktopAgent\Authentication\UserCredentialService" -v "Addresses" -d "<Your-FAS-Server-List>"

service ctxvda restart
<!--NeedCopy-->

安装根 CA 证书

要验证用户证书,请在 VDA 上安装根 CA 证书。从前面的 从 Microsoft CA 中获取 CA 证书(在 AD 中) 步骤中获取 AD 根证书,也可以从根 CA 服务器 http://CA-SERVER/certsrv 下载 DER 格式的该证书。

注意:

以下命令也适用于配置中间证书。

运行类似如下的命令将 DER 文件(.crt、.cer、.der)转换为 PEM:

sudo openssl x509 -inform der -in root.cer -out root.pem
<!--NeedCopy-->

然后,运行类似如下的命令将根 CA 证书安装到 openssl 目录:

sudo cp root.pem /etc/pki/CA/certs/
<!--NeedCopy-->

注意:

请勿将根 CA 证书置于 /root 路径下。否则,FAS 无权读取根 CA 证书。

配置 FAS

运行以下脚本以配置 FAS:

sudo /opt/Citrix/VDA/sbin/ctxfascfg.sh
<!--NeedCopy-->

注意:

上述脚本仅处理使用单个根 CA 证书的场景。

如果您的环境中存在中间证书,请将中间证书的路径添加到 /etc/krb5.conf,如下所示:

[realms]
EXAMPLE.COM = {

pkinit_anchors = FILE:/etc/pki/CA/certs/root.pem
pkinit_pool = FILE:/etc/pki/CA/certs/intermediate.pem

}

添加两个环境变量,以便 ctxfascfg.sh 可以在静默模式下运行:

  • CTX_FAS_ADINTEGRATIONWAY=winbind | sssd | centrify – 表示 Active Directory 集成方法,相当于在指定 CTX_EASYINSTALL_ADINTEGRATIONWAY 时使用 CTX_EASYINSTALL_ADINTEGRATIONWAY 。如果未指定CTX_EASYINSTALL_ADINTEGRATIONWAYCTX_FAS_ADINTEGRATIONWAY 将使用自己的值设置。

  • CTX_FAS_ROOT_CA_PATH=<root_CA_certificate> – 指定根 CA 证书的完整路径。

选择正确的 Active Directory 集成方法,然后键入正确的根 CA 证书路径(例如 /etc/pki/CA/certs/root.pem)。

脚本随后安装 krb5-pkinit 和 pam_krb5 软件包,并设置相关的配置文件。

限制

  • FAS 支持有限的平台和 AD 集成方法,请参阅下表:

      Winbind SSSD Centrify
    RHEL 7.7 /CentOS 7.7
    Ubuntu 18.04 ×
    Ubuntu 16.04 ×
    SLES 12.3 ×
  • FAS 尚不支持锁屏界面。如果在会话中单击锁定按钮,则无法使用 FAS 重新登录该会话。
  • 此版本仅支持联合身份验证服务体系结构概述一文中概括的常见 FAS 部署,不包括 Windows 10 Azure AD 联接

故障排除

在对 FAS 进行故障排除之前,请确保已安装并正确配置 Linux VDA,以便可以使用密码身份验证在常用应用商店中成功启动非 FAS 会话。

如果非 FAS 会话正常运行,请将登录类别的 HDX 日志级别设置为“VERBOSE”,将 VDA 日志级别设置为“TRACE”。有关如何为 Linux VDA 启用跟踪日志记录的信息,请参阅知识中心文章 CTX220130

FAS 服务器配置错误

从 FAS 应用商店启动会话失败。有关示例,请参见以下屏幕截图:

从 FAS 应用商店启动会话失败的示意图

检查 /var/log/xdl/hdx.log 并查找类似如下内容的错误日志:

2018-03-27 10:17:56.722 <P10122:S2> citrix-ctxlogin: query2fas: failed to retrieve data: No such file or directory.

2018-03-27 10:17:56.722 <P10122:S2> citrix-ctxlogin: sayhello2fas_internal: Failed to query.

2018-03-27 10:17:56.722 <P10122:S2> citrix-ctxlogin: sayhello2fas_convertcredential: exit.

2018-03-27 10:17:56.722 <P10122:S2> citrix-ctxlogin: LoginFasValidate: Failed to start FAS.

2018-03-27 10:17:56.722 <P10122:S2> citrix-ctxlogin: receive_data: LoginFASValidate - parameters check error.

2018-03-27 10:17:56.722 <P10122:S2> citrix-ctxlogin: receive_data: Exit FAILURE

2018-03-27 10:17:56.722 <P10122:S2> citrix-ctxlogin: main: EXITING login process..., FAILURE
<!--NeedCopy-->

解决方案

运行以下命令以确认 Citrix 注册表值“HKEY_LOCAL_MACHINE\SOFTWARE\Citrix\VirtualDesktopAgent\Authentication\UserCredentialService”是否设置为 <Your-FAS-Server-List>。

sudo /opt/Citrix/VDA/bin/ctxreg dump | grep "UserCredentialService"
<!--NeedCopy-->

如果现有设置不正确,请按照前面的设置 FAS 服务器步骤操作以重新设置。

根 CA 证书配置错误

从 FAS 应用商店启动会话失败。将显示一个灰色窗口,并且几秒钟后消失。

因根 CA 证书配置错误而使登录无效的示意图

检查 /var/log/xdl/hdx.log 并查找类似如下内容的错误日志:

2018-03-27 10:15:52.227 <P9099:S3> citrix-ctxlogin: validate_user: pam_authenticate err,can retry for user user1@CTXFAS.LAB

2018-03-27 10:15:52.228 <P9099:S3> citrix-ctxlogin: logout_user: closing session and pam transaction

2018-03-27 10:15:52.228 <P9099:S3> citrix-ctxlogin: validate_user: Exit (user=user1@CTXFAS.LAB)=INVALID_PASSWORD

2018-03-27 10:15:52.228 <P9099:S3> citrix-ctxlogin: LoginBoxValidate: failed validation of user 'user1@CTXFAS.LAB', INVALID_PASSWORD

2018-03-27 10:15:52.228 <P9099:S3> citrix-ctxlogin: Audit_login_failure: Not yet implemented
<!--NeedCopy-->

解决方案

确认是否在 /etc/krb5.conf 中正确设置了根 CA 证书的完整路径。完整路径如下所示:


 [realms]

EXAMPLE.COM = {

    ......

    pkinit_anchors = FILE:/etc/pki/CA/certs/root.pem

    ......

}  
<!--NeedCopy-->

如果现有设置不正确,请按照前面的安装根 CA 证书步骤操作以重新设置。

或者,检查根 CA 证书是否有效。

重影帐户映射错误

FAS 配置了 SAML 身份验证。ADFS 用户在 ADFS 登录页面上输入用户名和密码后,可能会出现以下错误。

重影帐户映射错误的示意图

此错误表明已成功验证 ADFS 用户,但在 AD 上没有配置任何重影用户。

解决方案

在 AD 上设置重影帐户。

未配置 ADFS

尝试登录 FAS 应用商店过程中出现以下错误:

未配置 ADFS 的示意图

这是因为 FAS 应用商店配置为使用 SAML 身份验证,但缺少 ADFS 部署。

解决方案

为联合身份验证服务部署 ADFS IdP。有关详细信息,请参阅联合身份验证服务 ADFS 部署

相关信息

已知问题

如果正在使用 FAS,则尝试启动包含非英语字符的已发布桌面或应用程序会话时,可能会失败。

启动包含非英语的会话失败的示意图

解决方法

在 CA 工具中右键单击 Manage Templates(管理模板)以将 Citrix_SmartcardLogon 模板从 Build from this Active Directory information(基于此 Active Directory 信息构建)更改为 Supply in the request(在请求中提供):

“在请求中提供”选项的示意图

联合身份验证服务