联合身份验证服务
概述
Citrix 联合身份验证服务 (FAS) 是一种特权组件,旨在与 Active Directory 证书服务集成。它为用户动态颁发证书,允许用户登录 Active Directory 环境,就像他们拥有智能卡一样。此功能允许 StoreFront™ 使用更广泛的身份验证选项,例如安全断言标记语言 (SAML) 断言。SAML 通常用作 Internet 上传统 Windows 用户帐户的替代方案。
注意:
要使用 SAML 身份验证,请在 VDA 上正确配置 FAS。
从 CU3 开始,Linux VDA 使用短连接与 FAS 服务器传输数据。
下图显示了 FAS 与 Microsoft 证书颁发机构集成,并为 StoreFront 和 VDA 提供支持服务。
-

-
当用户请求访问 Citrix 环境时,受信任的 StoreFront 服务器会联系 FAS。FAS 会授予一个票证,允许单个 Citrix Virtual Apps 或 Citrix Virtual Desktops™ 会话使用该会话的证书进行身份验证。当 VDA 需要对用户进行身份验证时,它会连接到 FAS 并兑换票证。只有 FAS 才能访问用户证书的私钥。VDA 必须将需要使用证书执行的每个签名和解密操作发送到 FAS。
-
要求
-
FAS 支持 Windows Server 2008 R2 及更高版本。
- 我们建议将 FAS 安装在不包含其他 Citrix 组件的服务器上。
- 必须保护 Windows Server,以访问注册机构证书和私钥,从而自动为域用户颁发证书,并访问这些用户证书和私钥。
在 Citrix Virtual Apps™ 或 Citrix Virtual Desktops 站点中:
- Delivery Controllers 必须至少为 7.9 版本。
- StoreFront 服务器必须至少为 3.6 版本(XenApp 和 XenDesktop 7.9 ISO 随附的版本)。
- Linux VDA 必须至少为 7.18 版本。在以常规方式创建计算机目录之前,请验证联合身份验证服务组策略配置是否已正确应用于 VDA。有关详细信息,请参阅本文中的配置组策略部分。
参考:
- Active Directory 证书服务 https://social.technet.microsoft.com/wiki/contents/articles/1137.active-directory-certificate-services-ad-cs-introduction.aspx
- 配置 Windows 以进行证书登录 http://support.citrix.com/article/CTX206156
- 安装联合身份验证服务 联合身份验证服务
配置 Windows 以进行证书登录
有关配置 Windows 以进行证书登录的信息,请打开知识中心文章 CTX206156 以下载并阅读 Smart_card_config_Citrix_Env.pdf 文件(以下简称“PDF 文件”)。请按照 PDF 文件中的以下步骤操作,同时注意每个步骤中给出的差异或补充。请特别注意您正在操作的目标计算机,例如 AD、Delivery Controller 或 StoreFront。
设置 Windows 域(在 AD 上)
安装域控制器角色
请参阅 PDF 文件中的安装域控制器角色部分。
在安装 Active Directory 证书服务期间,请确保选择以下选项:



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

准备证书颁发机构以供智能卡使用
无补充。请参阅 PDF 文件中的准备证书颁发机构以供智能卡使用部分。
颁发域控制器证书
无补充。请参阅 PDF 文件中的颁发域控制器证书部分。
配置 Microsoft IIS 以用于 HTTPS(在 StoreFront 上)
在 Microsoft IIS 上配置 HTTPS
无补充。请参阅 PDF 文件中的在 Microsoft IIS 上配置 HTTPS 部分。
非域加入计算机
请参阅 PDF 文件中的非域加入计算机部分。
从 Microsoft CA 检索 CA 证书(在 AD 上)
无补充。请参阅 PDF 文件中的从 Microsoft CA 检索 CA 证书部分。
在 Windows 上安装受信任的 CA 证书
无补充。请参阅 PDF 文件中的在 Windows 上安装受信任的 CA 证书部分。
配置 Citrix StoreFront(在 StoreFront 上)
创建应用商店
请参阅 PDF 文件中的创建应用商店部分。
在前面的 IIS 配置之后,通用应用商店的基本 URL 被强制设置为 https:// 而不是 http://。由于 FAS 不与智能卡共享应用商店,因此 FAS 需要一个新的应用商店。Linux VDA FAS 与任何 StoreFront 身份验证方法兼容。例如,FAS 应用商店可以配置为使用密码或 SAML,但不能同时使用两者。选择 SAML 时,StoreFront 的 URL 会自动重定向到 IdP,并且密码身份验证方法将被忽略。



启动 Internet Explorer 并打开 FAS 应用商店的 URL(例如,https://mzgwy-ddc.xd.local/Citrix/FASWeb)。
注意:FAS 应用商店的 URL 必须附加 Web。
安装和设置 FAS
安装和设置过程包括以下步骤:
- 安装联合身份验证服务
- 在 StoreFront 服务器上启用联合身份验证服务插件
- 配置组策略
- 使用联合身份验证服务管理控制台执行以下操作:(a) 部署提供的模板,(b) 设置证书颁发机构,以及 (c) 授权联合身份验证服务使用您的证书颁发机构
- 配置用户规则
有关每个步骤的说明,请参阅联合身份验证服务。请注意每个步骤中的以下差异或补充。请特别注意您正在操作的目标计算机,例如 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 策略已设置。

启用会话内证书支持
- 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_ADINTEGRATIONWAY,则CTX_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 再次登录到该会话。
- 此版本仅支持 Federated Authentication Service 体系结构概述 一文中所述的常见 FAS 部署,不包括 Windows 10 Azure AD Join。
故障排除
在对 FAS 进行故障排除之前,请确保 Linux VDA 已正确安装和配置,以便可以使用密码身份验证在常用应用商店中成功启动非 FAS 会话。
如果非 FAS 会话正常工作,请将 Login 类的 HDX 日志级别设置为 VERBOSE,并将 VDA 日志级别设置为 TRACE。有关如何为 Linux VDA 启用跟踪日志记录的信息,请参阅知识中心文章 CTX220130。
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 应用商店启动会话失败。灰屏窗口出现几秒钟后消失。

检查 /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-->
解决方案
验证根 CA 证书的完整路径是否在 /etc/krb5.conf 中正确设置。完整路径类似于以下内容:
[realms]
EXAMPLE.COM = {
......
pkinit_anchors = FILE:/etc/pki/CA/certs/root.pem
......
}
<!--NeedCopy-->
如果现有设置不正确,请按照前面的安装根 CA 证书步骤重新设置。
或者,检查根 CA 证书是否有效。
影子帐户映射错误
FAS 通过 SAML 身份验证进行配置。ADFS 用户在 ADFS 登录页面上输入用户名和密码后,可能会出现以下错误。

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

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

解决方法
在 CA 工具中右键单击 Manage Templates,将 Citrix_SmartcardLogon 模板从 Build from this Active Directory information 更改为 Supply in the request:
