安装和配置
安装和设置顺序
-
安装联合身份验证服务 (FAS)
安装联合身份验证服务
为安全起见,Citrix® 建议将联合身份验证服务 (FAS) 安装在专用服务器上,该服务器的保护方式应与域控制器或证书颁发机构类似。插入 ISO 后,可以从自动运行启动屏幕上的“联合身份验证服务”按钮安装 FAS。
这将安装以下组件:
-
联合身份验证服务
-
用于远程配置 FAS 的 PowerShell 管理单元 cmdlet
-
FAS 组策略模板 (CitrixFederatedAuthenticationService.admx/adml)
-
用于简单证书颁发机构配置的证书模板文件
在 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}] |
证书请求和密钥对生成
当 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}] |