Linux Virtual Delivery Agent 2503

联合身份验证服务

您可以使用联合身份验证服务 (FAS) 对登录到 Linux VDA 的用户进行身份验证。Linux VDA 使用与 Windows VDA 相同的 Windows 环境来实现 FAS 登录功能。有关为 FAS 配置 Windows 环境的信息,请参阅联合身份验证服务。本文提供了特定于 Linux VDA 的额外信息。

注意:

  • Linux VDA 不支持会话中行为策略。

  • Linux VDA 使用短连接与 FAS 服务器传输数据。

支持的发行版

FAS 支持有限的 Linux 发行版和域加入方法。请参阅以下矩阵:

  Winbind SSSD Centrify PBIS Quest
Debian 12.9/11.11 Yes Yes Yes Yes No
RHEL 9.6/9.4/9.2 Yes Yes Yes No Yes
RHEL 8.10/8.8 Yes Yes Yes Yes Yes
Rocky Linux 9.6/9.4/9.2 Yes Yes Yes No No
Rocky Linux 8.10/8.8 Yes Yes Yes No No
SUSE 15.6 Yes Yes Yes No No
Ubuntu 24.04 Yes Yes Yes No No
Ubuntu 22.04 Yes Yes Yes Yes Yes

在 Linux VDA 上配置 FAS

安装证书

为了验证用户证书,请在 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 | quest:表示 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 和 Quest 时,指定密钥分发中心 (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 软件包,并设置相关的配置文件。对于 RHEL 8 及更高版本,由于 PAM_KRB5 已移至 EPEL 存储库,因此该脚本会尝试在这些发行版中启用 EPEL。

禁用 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 SSO 故障启用辅助身份验证

Linux VDA 通过提供辅助身份验证方法来增强登录弹性,尤其是在 FAS 单点登录 (SSO) 失败时。借助此功能,如果 FAS SSO 遇到问题,系统会提示用户手动输入其凭据以进行密码身份验证。要启用此功能,请运行以下命令:

create -k "HKLM\System\CurrentControlSet\Control\Citrix\AccessControl\Login\Global" -t "REG_DWORD" -v "SecondaryAuthEnabled" -d "0x00000001" --force
<!--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 并查找类似于以下内容的错误日志:

Your-FAS-Server-List 2021-01-28 01:42:16.164 citrix-ctxlogin: validate_user: [Logon Type] Federated Authentication Logon.

2021-01-28 01:42:16.164 citrix-ctxlogin: validate_fas: entry

2021-01-28 01:42:16.164 citrix-ctxlogin: connect_fas: start connect to server 0

2021-01-28 01:42:16.164 citrix-ctxlogin: connect_fas0: failed to connect: Connection refused.

  • 2021-01-28 01:42:16.164 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 citrix-ctxlogin: validate_user: failed to validate fas credential

2021-01-28 01:42:16.164 citrix-ctxlogin: LoginBoxValidate: failed validation of user '<user1@CTXDEV.LOCAL>', INVALID_PARAMETER


#### 解决方案

运行以下命令以验证 Citrix 注册表值 "HKEY\_LOCAL\_MACHINE\\SOFTWARE\\Citrix\\VirtualDesktopAgent\\Authentication\\UserCredentialService" 是否设置为 \<您的FAS服务器列表\>。

<!--NeedCopy-->
sudo /opt/Citrix/VDA/bin/ctxreg dump grep “UserCredentialService”

如果现有设置不正确,请按照前面的 [设置 FAS 服务器](/en-us/linux-virtual-delivery-agent/2503/configure/authentication/federated-authentication-service.html) 步骤再次进行设置。

### CA 证书配置不正确

从 FAS 存储启动会话失败。灰屏窗口出现并在几秒钟后消失。

![由于根 CA 证书配置不正确导致的登录无效](/en-us/linux-virtual-delivery-agent/2503/media/incorrect-root-ca-cert-config.png)

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

<!--NeedCopy-->

2021-01-28 01:47:46.210 citrix-ctxlogin: get_logon_certificate: entry

2021-01-28 01:47:46.210 citrix-ctxlogin: check_caller: current process: pid [30656], name [/opt/Citrix/VDA/bin/ctxlogin]

2021-01-28 01:47:46.210 citrix-ctxlogin: get_public_certificate: entry

2021-01-28 01:47:46.211 citrix-ctxlogin: query_fas: waiting for response...

2021-01-28 01:47:46.270 citrix-ctxlogin: query_fas: query to server success

2021-01-28 01:47:46.270 citrix-ctxlogin: get_public_certificate: exit

2021-01-28 01:47:46.270 citrix-ctxlogin: fas_base64_decode: input size 1888

2021-01-28 01:47:46.271 citrix-ctxlogin: fas_base64_decode: output size 1415

2021-01-28 01:47:46.271 citrix-ctxlogin: get_logon_certificate: get logon certificate success

2021-01-28 01:47:46.271 citrix-ctxlogin: cache_certificate: cache certificate success

2021-01-28 01:47:46.271 citrix-ctxlogin: get_logon_certificate: exit, 0

2021-01-28 01:47:48.060 citrix-ctxlogin: validate_user: pam_authenticate err,can retry for user <user1@CTXDEV.LOCAL>


#### 解决方案

验证您是否已在 `/etc/krb5.conf` 中正确设置了存储根 CA 证书和所有中间证书的完整路径。完整路径类似于以下内容:

<!--NeedCopy-->

[realms]

EXAMPLE.COM = {

......

pkinit_anchors = DIR:/etc/pki/CA/certs/

......

}


如果现有设置不正确,请按照前面的 [安装证书](/en-us/linux-virtual-delivery-agent/2503/configure/authentication/federated-authentication-service.html#install-certificates) 步骤再次进行设置。

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

### 影子帐户映射错误

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

![影子帐户映射错误](/en-us/linux-virtual-delivery-agent/2503/media/shadow-account-mapping-error.png)

该错误表明:

-  ADFS 用户已成功验证,但 AD 上未配置影子用户。

#### 解决方案

在 AD 上设置影子帐户。

### 未配置 ADFS

在登录 FAS 存储期间出现以下错误:

![未配置 ADFS](/en-us/linux-virtual-delivery-agent/2503/media/adfs-not-configured.png)

当您将 FAS 存储配置为使用 SAML 身份验证但 ADFS 部署缺失时,会出现此问题。

#### 解决方案

为联合身份验证服务部署 ADFS IdP。有关详细信息,请参阅 [联合身份验证服务 ADFS 部署](/en-us/federated-authentication-service/2503/deployment-architectures/adfs.html)。

## 相关信息

-  常见的 FAS 部署在 [联合身份验证服务体系结构概述](/en-us/federated-authentication-service/2503/deployment-architectures.html) 文章中进行了总结。
-  “操作方法”文章在 [联合身份验证服务高级配置](/en-us/federated-authentication-service/2503/config-manage.html) 一章中介绍。

## 已知问题

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

![启动包含非英文字符的会话失败](/en-us/linux-virtual-delivery-agent/2503/media/launching-nonenglish-session-fails.png)

### 解决方法

右键单击 CA 工具中的 **管理模板**,将 **Citrix\_SmartcardLogon** 模板从 **从此 Active Directory 信息构建** 更改为 **在请求中提供**:

![在请求中提供选项](/en-us/linux-virtual-delivery-agent/2503/media/supply-in-the-request.png)
<!--NeedCopy-->
联合身份验证服务