安装和配置

Last published : Oct 24, 2026

安装和设置顺序

安装联合身份验证服务

为安全起见,Citrix® 建议将联合身份验证服务 (FAS) 安装在专用服务器上,该服务器的保护方式应与域控制器或证书颁发机构类似。插入 ISO 后,可以从自动运行启动屏幕上的“联合身份验证服务”按钮安装 FAS。
这将安装以下组件:

在 StoreFront™ 存储上启用 FAS 插件

要在 StoreFront 存储上启用 FAS 集成,请以管理员帐户运行以下 PowerShell cmdlet。如果您有多个存储,或者存储名称不同,则下面的路径文本可能会有所不同。
Get-Module "Citrix.StoreFront.*" -ListAvailable | Import-Module
$StoreVirtualPath = "/Citrix/Store"
$store = Get-STFStoreService -VirtualPath $StoreVirtualPath
$auth = Get-STFAuthenticationService -StoreService $store
Set-STFClaimsFactoryNames -AuthenticationService $auth -ClaimsFactoryName "FASClaimsFactory"
Set-STFStoreLaunchOptions -StoreService $store -VdaLogonDataProvider "FASLogonDataProvider"
要停止使用 FAS,请使用以下 PowerShell 脚本:
Get-Module "Citrix.StoreFront.*" -ListAvailable | Import-Module
$StoreVirtualPath = "/Citrix/Store"
$store = Get-STFStoreService -VirtualPath $StoreVirtualPath
$auth = Get-STFAuthenticationService -StoreService $store
Set-STFClaimsFactoryNames -AuthenticationService $auth -ClaimsFactoryName "standardClaimsFactory"
Set-STFStoreLaunchOptions -StoreService $store -VdaLogonDataProvider ""

配置 交付控制器™

要使用 FAS,请将 Citrix Virtual Apps 或 Citrix Virtual Desktops™ Delivery Controller 配置为信任可连接到它的 StoreFront 服务器:运行 Set-BrokerSite -TrustRequestsSentToTheXmlServicePort $true PowerShell cmdlet。

配置组策略

安装 FAS 后,您必须使用安装中提供的组策略模板在组策略中指定 FAS 服务器的完整 DNS 地址。
重要:
确保请求票据的 StoreFront 服务器以及兑换票据的 Virtual Delivery Agent (VDA) 具有相同的 DNS 地址配置,包括由组策略对象应用的自动服务器编号。
为简单起见,以下示例在域级别配置一个适用于所有计算机的策略;但这并非必需。只要 StoreFront 服务器、VDA 和运行 FAS 管理控制台的计算机看到相同的 DNS 地址列表,FAS 即可正常运行。请注意,组策略对象会为每个条目添加一个索引号,如果使用多个对象,该索引号也必须匹配。
步骤 1. 在安装 FAS 的服务器上,找到 C:\Program Files\Citrix\Federated Authentication Service\PolicyDefinitions\CitrixFederatedAuthenticationService.admx 和 CitrixBase.admx 文件以及 en-US 文件夹。
本地化图像
步骤 2. 将这些文件复制到您的域控制器,并将其放置在 C:\Windows\PolicyDefinitions 和 en-US 子文件夹中。
步骤 3. 运行 Microsoft 管理控制台(从命令行运行 mmc.exe)。从菜单栏中,选择 文件 > 添加/删除管理单元。添加 组策略管理编辑器。
当系统提示选择组策略对象时,选择“浏览”,然后选择“默认域策略”。或者,您可以使用所选工具为您的环境创建并选择适当的策略对象。必须将此策略应用于运行受影响的 Citrix 软件(VDA、StoreFront 服务器、管理工具)的所有计算机。
本地化图像
步骤 4. 导航到“计算机配置/策略/管理模板/Citrix 组件/身份验证”中的“联合身份验证服务”策略。
本地化图像
注意:
当您将 CitrixBase.admx/CitrixBase.adml 模板文件添加到 PolicyDefinitions 文件夹时,联合身份验证服务策略设置仅在域 GPO 上可用。联合身份验证服务策略设置随后会列在“管理模板”>“Citrix 组件”>“身份验证”文件夹中。
步骤 5. 打开联合身份验证服务策略并选择“已启用”。这将允许您选择“显示”按钮,您可以在其中配置 FAS 服务器的 DNS 地址。
本地化图像
步骤 6. 输入托管 FAS 的服务器的完全限定域名 (FQDN)。
请记住: 如果输入多个 FQDN,则列表的顺序在 StoreFront 服务器和 VDA 之间必须保持一致。这包括空白或未使用的列表条目。
步骤 7. 单击“确定”退出组策略向导并应用组策略更改。您可能需要重新启动计算机(或从命令行运行 gpupdate /force)才能使更改生效。

会话内证书支持和锁定后断开连接

本地化图像

会话内证书支持

默认情况下,VDA 在登录后不允许访问证书。如有必要,您可以使用组策略模板将会话内证书配置到系统中。这会在登录后将证书放置在用户的个人证书存储中,以供应用程序使用。例如,如果 VDA 会话中需要对 Web 服务器进行 TLS 身份验证,则 Internet Explorer 可以使用该证书。

锁定断开连接

如果启用此策略,则当用户锁定屏幕时,其会话会自动断开连接。此功能提供与“移除智能卡时断开连接”策略类似的行为,并且对于用户没有 Active Directory 登录凭据的情况很有用。
注意:
锁定断开连接策略适用于 VDA 上的所有会话。

使用联合身份验证服务管理控制台

FAS 管理控制台作为 FAS 的一部分安装。启动菜单中会放置一个图标(Citrix 联合身份验证服务)。
首次使用管理控制台时,它会引导您完成一个过程,该过程部署证书模板、设置证书颁发机构并授权 FAS 使用证书颁发机构。某些步骤也可以使用操作系统配置工具手动完成。
本地化图像

部署证书模板

为避免与其他软件的互操作性问题,FAS 提供了三个 Citrix 证书模板供其自身使用。
  • Citrix_RegistrationAuthority_ManualAuthorization
  • Citrix_RegistrationAuthority
  • Citrix_SmartcardLogon
这些模板必须在 Active Directory 中注册。如果控制台找不到它们,部署证书模板工具可以安装它们。此工具必须以具有管理企业林权限的帐户运行。
本地化图像
模板的配置可以在随 FAS 安装的扩展名为 .certificatetemplate 的 XML 文件中找到,路径为:
C:\Program Files\Citrix\Federated Authentication Service\CertificateTemplates
如果您没有安装这些模板文件的权限,请将其提供给您的 Active Directory 管理员。
要手动安装模板,可以使用以下 PowerShell 命令:
$template = [System.IO.File]::ReadAllBytes("$Pwd\Citrix_SmartcardLogon.certificatetemplate")
$CertEnrol = New-Object -ComObject X509Enrollment.CX509EnrollmentPolicyWebService
$CertEnrol.InitializeImport($template)
$comtemplate = $CertEnrol.GetTemplates().ItemByIndex(0)
$writabletemplate = New-Object -ComObject X509Enrollment.CX509CertificateTemplateADWritable
$writabletemplate.Initialize($comtemplate)
$writabletemplate.Commit(1, $NULL)

设置 Active Directory 证书服务

安装 Citrix 证书模板后,必须将其发布到一个或多个 Microsoft 证书颁发机构服务器上。有关如何部署 Active Directory 证书服务,请参阅 Microsoft 文档。
如果模板未发布到至少一个服务器上,则 设置证书颁发机构 工具会提供发布它们的选项。您必须以具有管理证书颁发机构权限的用户身份运行此工具。
(证书模板也可以使用 Microsoft 证书颁发机构控制台发布。)
本地化图像

授权联合身份验证服务

此步骤启动 FAS 的授权。管理控制台使用 Citrix_RegistrationAuthority_ManualAuthorization 模板生成证书请求,然后将其发送到发布该模板的其中一个证书颁发机构。
本地化图像
请求发送后,它会出现在 Microsoft 证书颁发机构控制台的 挂起请求 列表中。证书颁发机构管理员必须选择 颁发 或 拒绝 该请求,然后 FAS 的配置才能继续。请注意,授权请求显示为来自 FAS 计算机帐户的 挂起请求。
本地化图像
右键单击 所有任务,然后为证书请求选择 颁发 或 拒绝。FAS 管理控制台会自动检测此过程何时完成。这可能需要几分钟时间。
本地化图像

配置用户规则

用户规则授权根据 StoreFront 的指示颁发用于 VDA 登录和会话内使用的证书。每条规则都指定了受信任的 StoreFront 服务器(可请求证书)、可请求证书的用户集以及允许使用这些证书的 VDA 计算机集。
要完成 FAS 设置,必须定义默认规则。单击 创建 以创建规则,或切换到“规则”选项卡并单击 创建规则。向导会收集定义规则所需的信息。
本地化图像
向导会收集以下信息:
模板:用于颁发用户证书的证书模板。这应该是 Citrix_SmartcardLogon 模板,或者是其修改后的副本。
证书颁发机构:颁发用户证书的证书颁发机构。模板必须由证书颁发机构发布。FAS 支持添加多个证书颁发机构以实现故障转移和负载平衡。
会话内使用:允许会话内使用 选项控制证书是否可在登录到 VDA 后使用。仅当您希望用户在身份验证后访问证书时才选择此选项。如果未选择此选项,则证书仅用于登录或重新连接,并且用户在身份验证后无法访问证书。
访问控制:经授权可为用户登录或重新连接请求证书的受信任 StoreFront 服务器计算机列表。
重要:
访问控制 设置对安全性至关重要,必须谨慎管理。
本地化图像
限制:可使用 FAS 登录用户的 VDA 计算机列表以及可通过 FAS 颁发证书的用户列表。VDA 列表默认为“域计算机”,用户列表默认为“域用户”;如果默认值不合适,可以更改。
本地化图像
本地化图像
云规则:当前不支持。

高级用法

您可以创建其他规则来引用不同的证书模板和颁发机构,这些模板和颁发机构可以配置为具有不同的属性和权限。这些规则可以配置供不同的 StoreFront 服务器使用,这些服务器需要配置为按名称请求新规则。默认情况下,StoreFront 在联系 FAS 时请求 default。可以使用组策略配置选项更改此设置。
要创建新的证书模板,请在 Microsoft 证书颁发机构控制台中复制 Citrix_SmartcardLogon 模板,将其重命名(例如,Citrix_SmartcardLogon2),并根据需要进行修改。通过单击“添加”来创建新用户规则以引用新证书模板。

升级注意事项

  • 执行就地升级时,所有 FAS 服务器设置都将保留。
  • 通过运行完整产品 Virtual Apps and Desktops 安装程序来升级 FAS。
  • 在升级 FAS 之前,请将 Controller 和 VDA(以及其他核心组件)升级到所需版本。
  • 在升级 FAS 之前,请确保 FAS 管理控制台已关闭。
  • 确保始终至少有一个 FAS 服务器可用。如果没有服务器可由启用了 Federation Authentication Service 的 StoreFront 服务器访问,则用户无法登录或启动应用程序。

安全注意事项

FAS 具有注册颁发机构证书,允许其代表您的域用户自主颁发证书。因此,制定并实施安全策略以保护 FAS 服务器并限制其权限非常重要。

委派的注册代理

FAS 通过充当注册代理来颁发用户证书。Microsoft 证书颁发机构允许控制 FAS 服务器可以使用哪些模板,以及限制 FAS 服务器可以为哪些用户颁发证书。
本地化图像
Citrix 强烈建议配置这些选项,以便 FAS 仅向预期用户颁发证书。例如,最好阻止 FAS 向管理组或受保护用户组中的用户颁发证书。

访问控制列表配置

如 配置用户规则 部分所述,您必须配置一个 StoreFront 服务器列表,这些服务器在颁发证书时受信任可向 FAS 声明用户身份。同样,您可以限制哪些用户将获得证书,以及他们可以向哪些 VDA 计算机进行身份验证。这是您配置的任何标准 Active Directory 或证书颁发机构安全功能之外的补充。

防火墙设置

所有与 FAS 服务器的通信都使用通过端口 80 进行的相互身份验证的 Windows Communication Foundation (WCF) Kerberos 网络连接。

事件日志监视

FAS 和 VDA 将信息写入 Windows 事件日志。这可用于监视和审计信息。事件日志 部分列出了可能生成的事件日志条目。

硬件安全模块

所有私钥,包括 FAS 颁发的用户证书的私钥,都由网络服务帐户存储为不可导出的私钥。如果您的安全策略要求,FAS 支持使用加密硬件安全模块。
低级加密配置可在 FederatedAuthenticationService.exe.config 文件中找到。这些设置在首次创建私钥时应用。因此,注册机构私钥(例如,4096 位,受 TPM 保护)和运行时用户证书可以使用不同的设置。
参数 说明
ProviderLegacyCsp 设置为 true 时,FAS 使用 Microsoft CryptoAPI (CAPI)。否则,FAS 使用 Microsoft Cryptography Next Generation API (CNG)。
ProviderName 要使用的 CAPI 或 CNG 提供程序的名称。
ProviderType 指 Microsoft KeyContainerPermissionAccessEntry.ProviderType 属性 PROV_RSA_AES 24。应始终为 24,除非您将 HSM 与 CAPI 结合使用且 HSM 供应商另有规定。
KeyProtection 控制私钥的“可导出”标志。如果硬件支持,还允许使用可信平台模块 (TPM) 密钥存储。
KeyLength RSA 私钥的密钥长度。支持的值为 1024、2048 和 4096(默认值:2048)。

PowerShell SDK

尽管 FAS 管理控制台适用于简单部署,但 PowerShell 界面提供了更高级的选项。当您使用控制台中不可用的选项时,Citrix 建议仅使用 PowerShell 进行配置。
以下命令添加 PowerShell cmdlet:
Add-PSSnapin Citrix.Authentication.FederatedAuthenticationService.V1
使用 Get-Help \<cmdlet 名称> 显示 cmdlet 帮助。下表列出了几个命令,其中 * 表示标准 PowerShell 动词(例如 New、Get、Set、Remove)。
命令 概述
*-FasServer 列出并重新配置当前环境中的 FAS 服务器。
*-FasAuthorizationCertificate 管理注册机构证书。
*-FasCertificateDefinition 控制 FAS 用于生成证书的参数。
*-FasRule 管理在 FAS 上配置的用户规则。
*-FasUserCertificate 列出并管理 FAS 缓存的证书。
通过指定 FAS 服务器的地址,可以远程使用 PowerShell cmdlet。
有关 FAS PowerShell cmdlet 的信息,请参阅 PowerShell cmdlet。

性能计数器

FAS 包含一组用于负载跟踪的性能计数器。
本地化图像
下表列出了可用的计数器。大多数计数器是五分钟内的滚动平均值。
名称 描述
活动会话 FAS 跟踪的连接数。
并发 CSR 同时处理的证书请求数。
私钥操作 每分钟执行的私钥操作数。
请求时间 生成和签署证书所需的时间。
证书计数 FAS 中缓存的证书数。
每分钟 CSR 每分钟处理的证书签名请求数。
低/中/高 FAS 可接受的“每分钟 CSR 数”负载估算。超过“高负载”阈值可能会导致会话启动失败。

事件日志

下表列出了 FAS 生成的事件日志条目。

管理事件

这些事件是在 FAS 服务器配置更改后记录的。
日志代码
[S001] 访问被拒绝:用户 [{0}] 不是 Administrators 组的成员
[S002] 访问被拒绝:用户 [{0}] 不是角色 [{1}] 的管理员
[S003] 管理员 [{0}] 将维护模式设置为 [{1}]
[S004] 管理员 [{0}] 使用 CA [{1}] 模板 [{2} and {3}] 进行注册
[S005] 管理员 [{0}] 取消授权 CA [{1}]
[S006] 管理员 [{0}] 正在创建新的证书定义 [{1}]
[S007] 管理员 [{0}] 正在更新证书定义 [{1}]
[S008] 管理员 [{0}] 正在删除证书定义 [{1}]
[S009] 管理员 [{0}] 创建新角色 [{1}]
[S010] 管理员 [{0}] 更新角色 [{1}]
[S011] 管理员 [{0}] 删除角色 [{1}]
[S012] 管理员 [{0}] 创建证书 [upn: {1} sid: {2} role: {3} Certificate Definition: {4} Security Context: {5}]
[S013] 管理员 [{0}] 删除证书 [upn: {1} role: {2} Certificate Definition: {3} Security Context: {4}]
[S015] 管理员 [{0}] 创建证书请求 [TPM: {1}]
[S016] 管理员 [{0}] 导入授权证书 [Reference: {1}]
日志代码
[S401] 正在执行配置升级 -- [From version {0} to version {1}]
[S402] 错误:Citrix 联合身份验证服务必须以网络服务身份运行 [currently running as: {0}]
[S404] 强制擦除 Citrix 联合身份验证服务数据库
[S405] 将数据从注册表迁移到数据库时发生错误:[{0}]
[S406] 数据从注册表迁移到数据库已完成(注意:用户证书未迁移)
[S407] 基于注册表的数据未迁移到数据库,因为数据库已存在
[S408] 无法降级配置 -- [From version {0} to version {1}]
[S409] ThreadPool MinThreads 已从 [workers: {0} completion: {1}] 调整为:[workers: {2} completion: {3}]
[S410] 未能将 ThreadPool MinThreads 从 [workers: {0} completion: {1}] 调整为:[workers: {2} completion: {3}]

创建身份断言

当受信任的服务器断言用户登录时,这些事件会在 FAS 服务器运行时记录。
日志代码
[S101] 服务器 [{0}] 无权在角色 [{1}] 中断言身份
[S102] 服务器 [{0}] 未能断言 UPN [{1}] (异常:{2}{3})
[S103] 服务器 [{0}] 请求 UPN [{1}] SID {2},但查找返回 SID {3}
[S104] 服务器 [{0}] 未能断言 UPN [{1}] (角色 [{2}] 不允许此 UPN)
[S105] 服务器 [{0}] 发布身份断言 [upn: {1}, role {2}, Security Context: [{3}]]
[S120] 正在向 [upn: {0} role: {1} Security Context: [{2}]] 颁发证书
[S121] 证书已由 [certifcate authority: {2}] 颁发给 [upn: {0} role: {1}]
[S122] 警告:服务器过载 [upn: {0} role: {1}][每分钟请求数 {2}]。
[S123] 未能为 [upn: {0} role: {1}] [exception: {2}] 颁发证书
[S124] 未能为 [upn: {0} role: {1}] 在 [certifcate authority: {2}] [exception: {3}] 颁发证书

作为信赖方

当 VDA 登录用户时,这些事件会在 FAS 服务器上运行时记录。
日志代码
[S201] 信赖方 [{0}] 无权访问密码。
[S202] 信赖方 [{0}] 无权访问证书。
[S203] 信赖方 [{0}] 无权访问登录 CSP
[S204] 信赖方 [{0}] 正在访问 [upn: {1}] 的登录 CSP,角色为:[{2}] [Operation: {3}],由 [{4}] 授权
[S205] 调用帐户 [{0}] 不是角色 [{1}] 中的信赖方
[S206] 调用帐户 [{0}] 不是信赖方
[S208] 私钥操作失败 [Operation: {0} upn: {1} role: {2} certificateDefinition {3} Error {4} {5}]。

会话内证书服务器

当用户使用会话内证书时,这些事件会在 FAS 服务器上记录。
日志代码
[S301] 访问被拒绝:用户 [{0}] 无权访问虚拟智能卡
[S302] 用户 [{0}] 请求了未知的虚拟智能卡 [thumbprint: {1}]
[S303] 访问被拒绝:用户 [{0}] 与虚拟智能卡 [upn: {1}] 不匹配
[S304] 用户 [{0}] 在计算机 [{2}] 上运行程序 [{1}],使用虚拟智能卡 [upn: {3} role: {4} thumbprint: {5}] 进行私钥操作 [{6}]
[S305] 私钥操作失败 [Operation: {0} upn: {1} role: {2} containerName {3} Error {4} {5}]。

FAS 断言插件

这些事件由 FAS 断言插件记录。
日志代码
[S500] 未配置 FAS 断言插件
[S501] 无法加载已配置的 FAS 断言插件 [exception:{0}]
[S502] FAS 断言插件已加载 [pluginId={0}] [assembly={1}] [location={2}]
[S503] 服务器 [{0}] 未能断言 UPN [{1}](提供了登录凭据,但插件 [{2}] 不支持)
[S504] 服务器 [{0}] 未能断言 UPN [{1}](提供了登录凭据,但未配置 FAS 插件)
[S505] 服务器 [{0}] 未能断言 UPN [{1}] (插件 [{2}] 拒绝了登录凭据,状态为 [{3}],消息为 [{4}])
[S506] 插件 [{0}] 接受了来自服务器 [{1}] 的 UPN [{2}] 的登录凭据,消息为 [{3}]
[S507] 服务器 [{0}] 未能断言 UPN [{1}] (插件 [{2}] 抛出异常 [{3}])
[S507] 服务器 [{0}] 未能断言 UPN [{1}] (插件 [{2}] 抛出异常 [{3}])
[S508] 服务器 [{0}] 未能断言 UPN [{1}] (提供了访问处置,但插件 [{2}] 不支持它)
[S509] 服务器 [{0}] 未能断言 UPN [{1}] (提供了访问处置,但没有配置 FAS 插件)
[S510] 服务器 [{0}] 未能断言 UPN [{1}] (访问处置被插件 [{2}] 视为无效)

登录

这些事件在登录阶段记录在 VDA 上。
日志代码
[S101] 身份断言登录失败。无法识别的联合身份验证服务 [id: {0}]
[S102] 身份断言登录失败。无法查找 {0} 的 SID [Exception: {1}{2}]
[S103] 身份断言登录失败。用户 {0} 的 SID 为 {1},预期 SID 为 {2}
[S104] 身份断言登录失败。无法连接到联合身份验证服务: {0} [Error: {1} {2}]
[S105] 身份断言登录。正在登录 [Username: {0} Domain: {1}]
[S106] 身份断言登录。正在登录 [Certificate: {0}]
[S107] 身份断言登录失败。[Exception: {0}{1}]
[S108] 身份断言子系统。ACCESS_DENIED [Caller: {0}]

会话内证书

当用户尝试使用会话内证书时,这些事件会记录在 VDA 上。
日志代码
[S201] 虚拟智能卡访问已由 [{0}] 授权给 [PID: {1} Program Name: {2} Certificate thumbprint: {3}]
[S203] 虚拟智能卡子系统。访问被拒绝 [caller: {0}, session {1}]
[S204] 虚拟智能卡子系统。智能卡支持已禁用

证书请求和密钥对生成

当 FAS 服务器执行低级加密操作时,会记录这些事件。
日志代码
[S001] TrustArea::TrustArea: 已安装证书 [TrustArea: {0}] [Certificate {1} TrustAreaJoinParameters{2}
[S014] Pkcs10Request::Create: 已创建 PKCS10 请求 [Distinguished Name {0}]
[S016] PrivateKey::Create [Identifier {0} MachineWide: {1} Provider: {2} ProviderType: {3}EllipticCurve: {4} KeyLength: {5} isExportable: {6}]
[S017] 私钥::删除 [CspName: {0}, Identifier {1}]
日志代码
[S104] MicrosoftCertificateAuthority::GetCredentials: 授权使用 {0}
[S105] MicrosoftCertificateAuthority::SubmitCertificateRequest 提交响应错误 [{0}]
[S106] MicrosoftCertificateAuthority::SubmitCertificateRequest 已颁发证书 [{0}]
[S112] MicrosoftCertificateAuthority::SubmitCertificateRequest - 等待批准 [CR_DISP_UNDER_SUBMISSION] [Reference: {0}]

相关信息