联合身份验证服务
您可以使用联合身份验证服务 (FAS) 对登录到 Linux VDA 的用户进行身份验证。Linux VDA 使用与 Windows VDA 相同的 Windows 环境来实现 FAS 登录功能。有关配置 FAS 的 Windows 环境的信息,请参阅 联合身份验证服务。本文提供了特定于 Linux VDA 的额外信息。
注意:
Linux VDA 不支持会话中行为策略。
Linux VDA 使用短连接与 FAS 服务器传输数据。
支持的发行版
FAS 支持有限的 Linux 发行版和域加入方法。请参阅下表:
| Winbind | SSSD | Centrify | PBIS | |
|---|---|---|---|---|
| Amazon Linux 2 | 是 | 是 | 是 | 是 |
| Debian 11.7/11.3 | 是 | 是 | 是 | 是 |
| RHEL 9.2/9.0 | 是 | 是 | 否 | 否 |
| RHEL 8.8/8.6 | 是 | 是 | 是 | 是 |
| RHEL 7.9, CentOS 7.9 | 是 | 是 | 是 | 是 |
| Rocky Linux 9.2/9.0 | 是 | 是 | 否 | 否 |
| Rocky Linux 8.8/8.6 | 是 | 是 | 否 | 否 |
| SUSE 15.5 | 是 | 是 | 是 | 否 |
| Ubuntu 22.04/20.04 | 是 | 是 | 是 | 是 |
在 Linux VDA 上配置 FAS
在 RHEL/Rocky Linux 8.x 及更高版本上支持 FAS
FAS 依赖于 pam_krb5 模块,该模块在 RHEL/Rocky Linux 8.x 及更高版本上已弃用。如果您想在多会话操作系统模式下交付的 RHEL/Rocky Linux 8.x 或更高版本计算机上使用 FAS,则需要执行以下步骤。对于在单会话操作系统 (VDI) 模式下交付的 RHEL/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。
-
构建并安装 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-->
安装证书
-
为了验证用户证书,请在 VDA 上安装根 CA 证书和所有中间证书。例如,要安装根 CA 证书,请从前面的从 Microsoft CA (在 AD 上) 检索 CA 证书步骤中获取 AD 根证书,或者从根 CA 服务器
http://CA-SERVER/certsrv下载。 -
注意:
-
以下命令也适用于配置中间证书。
例如,要将 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。
-
CTX_FAS_SERVER_LIST=’list-fas-servers’ – 联合身份验证服务 (FAS) 服务器通过 AD 组策略进行配置。有关域 GPO 上的 FAS 策略设置的信息,请参阅 配置组策略。Linux VDA 不支持 AD 组策略,但您可以提供以分号分隔的 FAS 服务器列表。序列必须与 AD 组策略中配置的序列相同。如果删除了任何服务器地址,请用文本字符串 ’<none>‘ 填充其空白,并且不要修改服务器地址的顺序。为了与 FAS 服务器正确通信,请确保附加与 FAS 服务器上指定的端口号一致的端口号,例如,CTX_XDL_FAS_LIST=’fas_server_1_url:port_number; fas_server_2_url: port_number; fas_server_3_url: port_number’。
要升级现有的 Linux VDA 安装,您可以运行以下命令来设置 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 systemctl restart ctxjproxy systemctl restart ctxvda <!--NeedCopy-->要通过
ctxreg更新 FAS 服务器,请运行以下命令:sudo /opt/Citrix/VDA/bin/ctxreg update -k "HKLM\Software\Citrix\VirtualDesktopAgent\Authentication\UserCredentialService" -v "Addresses" -d "<Your-FAS-Server-List>" systemctl restart ctxjproxy systemctl restart ctxvda <!--NeedCopy-->
选择正确的 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
systemctl restart ctxjproxy
systemctl restart ctxvda
<!--NeedCopy-->
限制
- 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 环境中可能存在的常见配置问题。
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” 是否设置为 <Your-FAS-Server-List>。
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 工具中右键单击 Manage Templates(管理模板),将 Citrix_SmartcardLogon 模板从 Build from this Active Directory information(从此 Active Directory 信息构建)更改为 Supply in the request(在请求中提供):
