联合身份验证服务
您可以使用联合身份验证服务 (FAS) 对登录 Linux VDA 的用户进行身份验证。Linux VDA 使用与 Windows VDA 相同的 Windows 环境来实现 FAS 登录功能。有关配置 FAS 的 Windows 环境的信息,请参阅联合身份验证服务。本文提供了特定于 Linux VDA 的额外信息。
注意:
Linux VDA 不支持会话中行为策略。
Linux VDA 使用短连接与 FAS 服务器传输数据。
从 2206 版本开始,您可以通过 ctxsetup.sh 中的 CTX_XDL_FAS_LIST 在 Linux VDA 侧自定义 FAS 端口。有关详细信息,请参阅基于您的分发版的 Linux VDA 安装文章。
在 Linux VDA 上配置 FAS
RHEL 8.x 和 Rocky Linux 8.x 上的 FAS 支持
FAS 依赖于 pam_krb5 模块,该模块在 RHEL 8.x 和 Rocky Linux 8.x 上已弃用。如果您想在多会话操作系统模式下交付的 RHEL 8.x 和 Rocky Linux 8.x 计算机上使用 FAS,则需要执行以下步骤。对于在单会话操作系统 (VDI) 模式下交付的 RHEL 8.x 和 Rocky Linux 8.x 计算机上的 FAS,您可以跳过以下步骤。
-
从以下网站下载 pam_krb5-2.4.8-6 源代码:
https://centos.pkgs.org/7/centos-x86_64/pam_krb5-2.4.8-6.el7.x86_64.rpm.html。
-
在 RHEL 8.x 和 Rocky Linux 8.x 上构建并安装 pam_krb5 模块。
yum install make gcc krb5-devel pam-devel autoconf libtool rpm2cpio pam_krb5-2.4.8-6.el7.src.rpm | cpio -div tar xvzf pam_krb5-2.4.8.tar.gz cd pam_krb5-2.4.8 ./configure --prefix=/usr make make install <!--NeedCopy--> -
验证 pam_krb5.so 是否存在于 /usr/lib64/security/ 下。
ls -l /usr/lib64/security | grep pam_krb5 <!--NeedCopy-->
设置 FAS 服务器
要在全新的 Linux VDA 安装中使用 FAS,请在运行 ctxinstall.sh 或 ctxsetup.sh 时键入每个 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 ctxjproxy restart
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 ctxjproxy restart
service ctxvda restart
<!--NeedCopy-->
-
安装证书
- 为了验证用户证书,请在 VDA 上安装根 CA 证书和所有中间证书。例如,要安装根 CA 证书,请从前面的从 Microsoft CA(在 AD 上)检索 CA 证书步骤中获取 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 证书的权限。
运行 ctxfascfg.sh
- 运行 ctxfascfg.sh 脚本以配置 FAS:
sudo /opt/Citrix/VDA/sbin/ctxfascfg.sh
<!--NeedCopy-->
添加了环境变量,以便 ctxfascfg.sh 可以在静默模式下运行:
-
CTX_FAS_ADINTEGRATIONWAY=winbind | sssd | centrify | pbis:表示 Active Directory 集成方法,当指定
CTX_EASYINSTALL_ADINTEGRATIONWAY时,它等于CTX_EASYINSTALL_ADINTEGRATIONWAY。如果未指定CTX_EASYINSTALL_ADINTEGRATIONWAY,则CTX_FAS_ADINTEGRATIONWAY使用其自己的值设置。 -
CTX_FAS_CERT_PATH =<certificate path>:指定存储根证书和所有中间证书的完整路径。
-
CTX_FAS_KDC_HOSTNAME:当您选择 PBIS 时,指定密钥分发中心 (KDC) 的主机名。
-
CTX_FAS_PKINIT_KDC_HOSTNAME:指定 PKINIT KDC 主机名,除非另有指定,否则它等于 CTX_FAS_KDC_HOSTNAME。如果您有多个 Delivery Controller,请将域中所有 KDC 的主机名添加到 /etc/krb5.conf 文件中的 pkinit_kdc_hostname。有关详细信息,请参阅知识中心文章 CTX322129。
选择正确的 Active Directory 集成方法,然后键入正确的证书路径(例如,/etc/pki/CA/certs/)。
然后,该脚本会安装 krb5-pkinit 和 pam_krb5 软件包并设置相关的配置文件。
禁用 FAS
要在 Linux VDA 上禁用 FAS,请使用以下命令从 ConfDB 中删除所有 FAS 服务器:
sudo /opt/Citrix/VDA/bin/ctxreg create -k "HKLM\Software\Citrix\VirtualDesktopAgent\Authentication\UserCredentialService" -t "REG_SZ" -v "Addresses" -d "" --force
service ctxjproxy restart
service ctxvda restart
<!--NeedCopy-->
限制
-
FAS 支持有限的 Linux 平台和 AD 集成方法。请参阅以下矩阵:
Winbind SSSD Centrify PBIS Amazon Linux 2 Yes Yes Yes Yes Debian 11.3 Yes Yes Yes Yes RHEL 9.1/9.0 Yes Yes No No RHEL 8.7/8.6/8.4 Yes Yes Yes Yes RHEL 7.9, CentOS 7.9 Yes Yes Yes Yes Rocky Linux 9.1/9.0 Yes Yes No No Rocky Linux 8.7/8.6 Yes Yes No No SUSE 15.4 Yes Yes Yes No Ubuntu 22.04/20.04/18.04 Yes Yes Yes Yes - FAS 尚不支持锁屏。如果您在会话中单击锁定按钮,则无法使用 FAS 再次登录会话。
- 此版本仅支持 联合身份验证服务体系结构概述 文章中总结的常见 FAS 部署,不包括 Windows 10 Azure AD Join。
故障排除
在对 FAS 进行故障排除之前,请确保 Linux VDA 已正确安装和配置,并且可以使用密码身份验证在通用存储上成功启动非 FAS 会话。
如果非 FAS 会话正常工作,请将 Login 类的 HDX 日志级别设置为 VERBOSE,并将 VDA 日志级别设置为 TRACE。有关为 Linux VDA 启用跟踪日志记录的信息,请参阅知识中心文章 CTX220130。
您还可以使用 Linux XDPing 工具检查 Linux VDA 环境中可能存在的常见配置问题。有关详细信息,请参阅 XDPing。
FAS 服务器配置错误
从 FAS 存储启动会话失败。
检查 /var/log/xdl/hdx.log 并查找类似于以下内容的错误日志:
2021-01-28 01:42:16.164 <P26422:S4> citrix-ctxlogin: validate_user: [Logon Type] Federated Authentication Logon.
- 2021-01-28 01:42:16.164 <P26422:S4> citrix-ctxlogin: validate_fas: entry
2021-01-28 01:42:16.164 <P26422:S4> citrix-ctxlogin: connect_fas: start connect to server 0
2021-01-28 01:42:16.164 <P26422:S4> citrix-ctxlogin: connect_fas0: failed to connect: Connection refused.
2021-01-28 01:42:16.164 <P26422:S4> citrix-ctxlogin: validate_fas: failed to connect to server [0], please confirm if fas service list is well configurated in condb
2021-01-28 01:42:16.164 <P26422:S4> citrix-ctxlogin: validate_fas: exit, 43
2021-01-28 01:42:16.164 <P26422:S4> citrix-ctxlogin: validate_user: failed to validate fas credential
2021-01-28 01:42:16.164 <P26422:S4> citrix-ctxlogin: LoginBoxValidate: failed validation of user 'user1@CTXDEV.LOCAL', INVALID_PARAMETER
<!--NeedCopy-->
解决方案
运行以下命令以验证 Citrix 注册表值 “HKEY_LOCAL_MACHINE\SOFTWARE\Citrix\VirtualDesktopAgent\Authentication\UserCredentialService” 是否设置为 <您的 FAS 服务器列表>。
sudo /opt/Citrix/VDA/bin/ctxreg dump | grep "UserCredentialService"
<!--NeedCopy-->
如果现有设置不正确,请按照前面的设置 FAS 服务器步骤重新设置。
CA 证书配置不正确
从 FAS 存储启动会话失败。出现一个灰色窗口,并在几秒钟后消失。

检查 /var/log/xdl/hdx.log 并查找类似于以下内容的错误日志:
2021-01-28 01:47:46.210 <P30656:S5> citrix-ctxlogin: get_logon_certificate: entry
2021-01-28 01:47:46.210 <P30656:S5> citrix-ctxlogin: check_caller: current process: pid [30656], name [/opt/Citrix/VDA/bin/ctxlogin]
2021-01-28 01:47:46.210 <P30656:S5> citrix-ctxlogin: get_public_certificate: entry
2021-01-28 01:47:46.211 <P30656:S5> citrix-ctxlogin: query_fas: waiting for response...
2021-01-28 01:47:46.270 <P30656:S5> citrix-ctxlogin: query_fas: query to server success
2021-01-28 01:47:46.270 <P30656:S5> citrix-ctxlogin: get_public_certificate: exit
2021-01-28 01:47:46.270 <P30656:S5> citrix-ctxlogin: fas_base64_decode: input size 1888
2021-01-28 01:47:46.271 <P30656:S5> citrix-ctxlogin: fas_base64_decode: output size 1415
2021-01-28 01:47:46.271 <P30656:S5> citrix-ctxlogin: get_logon_certificate: get logon certificate success
2021-01-28 01:47:46.271 <P30656:S5> citrix-ctxlogin: cache_certificate: cache certificate success
2021-01-28 01:47:46.271 <P30656:S5> citrix-ctxlogin: get_logon_certificate: exit, 0
2021-01-28 01:47:48.060 <P30656:S5> citrix-ctxlogin: validate_user: pam_authenticate err,can retry for user user1@CTXDEV.LOCAL
<!--NeedCopy-->
解决方案
验证您是否已在 /etc/krb5.conf 中正确设置了存储根 CA 证书和所有中间证书的完整路径。完整路径类似于以下内容:
[realms]
EXAMPLE.COM = {
......
pkinit_anchors = DIR:/etc/pki/CA/certs/
......
}
<!--NeedCopy-->
如果现有设置不正确,请按照前面的安装证书步骤重新设置。
或者,检查根 CA 证书是否有效。
影子帐户映射错误
FAS 通过 SAML 身份验证进行配置。ADFS 用户在 ADFS 登录页面上输入用户名和密码后,可能会出现以下错误。

此错误表示 ADFS 用户已成功验证,但在 AD 上未配置影子用户。
解决方案
在 AD 上设置影子帐户。
未配置 ADFS
登录 FAS 存储时出现以下错误:

当 FAS 存储配置为使用 SAML 身份验证但缺少 ADFS 部署时,会出现此问题。
解决方案
为联合身份验证服务部署 ADFS IdP。有关详细信息,请参阅联合身份验证服务 ADFS 部署。
相关信息
- 常见的 FAS 部署在联合身份验证服务体系结构概述文章中进行了总结。
- 联合身份验证服务高级配置章节介绍了“操作方法”文章。
已知问题
正在使用 FAS 时,尝试启动包含非英文字符的已发布的桌面或应用程序会话可能会失败。

解决方法
右键单击 CA 工具中的管理模板,将 Citrix_SmartcardLogon 模板从从此 Active Directory 信息构建更改为在请求中提供:
