联合身份验证服务

概述

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

下图显示了联合身份验证服务与 Microsoft 证书颁发机构的集成,并向 StoreFront、XenApp 和 XenDesktop VDA 提供支持服务。

本地化后的图片

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

要求

联合身份验证服务支持 Windows 服务器(Windows Server 2008 R2 或更高版本)。

  • Citrix 建议在不包含其他 Citrix 组件的服务器上安装 FAS。
  • Windows Server 必须受到保护。它将有权访问注册机构的证书和私钥,使其能够自动为域用户颁发证书,并将有权访问这些用户证书和私钥。

在 XenApp 或 XenDesktop 站点中:

  • 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 证书服务期间,请务必按如下所示选择以下选项:

本地化后的图片

本地化后的图片

本地化后的图片

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

本地化后的图片

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

无补充内容。请参阅该 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,且忽略密码身份验证方法。

本地化后的图片

本地化后的图片

本地化后的图片

启动 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 服务器上)

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

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

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

$StoreVirtualPath = “/Citrix/FAS

配置 Delivery Controller(在 Delivery Controller 上)

要使用联合身份验证服务,请配置 XenApp 或 XenDesktop Delivery Controller 以信任可与其连接的 StoreFront 服务器:运行 Set-BrokerSite -TrustRequestsSentToTheXmlServicePort $true PowerShell cmdlet。有时,可能需要先运行 asnp 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

要通过 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

安装根 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

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

sudo cp root.pem /etc/pki/CA/certs/

注意:

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

配置 FAS

运行以下脚本以配置 FAS 参数:

sudo /opt/Citrix/VDA/sbin/ctxfascfg.sh

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

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

限制

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

      Winbind SSSD Centriy
    RHEL 7.4
    RHEL 6.9 × × ×
    RHEL 6.8 × × ×
    Ubuntu 16.04(4.13 内核) ×
    SLES 12.3 ×
  • FAS 尚不支持锁屏界面。如果在会话中单击锁定按钮,则无法使用 FAS 重新登录该会话。
  • 此版本仅支持联合身份验证服务体系结构概述一文中概括的通用 FAS 部署,其中不包括 Windows 10 Azure AD 联接

故障排除

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

如果非 FAS 会话没有问题,请将登录类别的 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

解决方案

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

sudo /opt/Citrix/VDA/bin/ctxreg dump | grep "UserCredentialService"

如果现有设置不正确,请按照前面的设置 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

解决方案

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


 [realms]

EXAMPLE.COM = {

    ......

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

    ......

}  

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

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

重影帐户映射错误

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

本地化后的图片

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

解决方案

在 AD 上设置重影帐户。

未配置 ADFS

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

本地化后的图片

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

解决方案

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

相关信息

已知问题

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

本地化后的图片

解决方法

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

本地化后的图片