联合身份验证服务

Citrix联邦身份验证服务是一个特权组件,旨在与Active Directory证书服务集成。它动态地为用户颁发证书,允许用户像拥有智能卡一样登录到Active Directory环境。这允许StoreFront使用更广泛的身份验证选项,例如SAML(安全断言标记语言)断言。SAML通常被用作Internet上传统Windows用户帐户的替代方案。

下图显示了与Microsoft认证中心集成的联邦认证服务,并为StoreFront、XenApp和XenDesktop虚拟交付代理(VDAs)提供支持服务。

局部的图片

当用户请求访问Citrix环境时,受信任的StoreFront服务器与联邦身份验证服务(FAS)联系。FAS授予一张票,允许单个XenApp或XenDesktop会话使用该会话的证书进行身份验证。当VDA需要对用户进行身份验证时,它会连接到FAS并兑换票证。只有FAS可以访问用户证书的私钥;VDA必须将它需要使用证书执行的每一个签名和解密操作发送给FAS。

要求

Windows服务器(Windows Server 2008 R2及以上版本)支持联邦认证服务。

  • Citrix建议在不包含其他Citrix组件的服务器上安装FAS。
  • Windows Server应该是安全的。它将能够访问允许它自动为域用户颁发证书的注册机构证书和私钥,并且它将能够访问那些用户证书和私钥。
  • FAS的PowerShell SDK要求FAS服务器安装Windows PowerShell 64位。
  • 颁发用户证书需要微软企业认证机构。

在XenApp或XenDesktop站点中:

  • 交付控制器必须是最低版本7.15。
  • vda必须是最低版本7.15。在以通常的方式创建机器目录之前,检查联邦身份验证服务组策略配置是否已正确地应用到VDAs;具体请参见配置组策略章节。
  • StoreFront服务器必须是最低版本3.12(该版本是XenApp和XenDesktop 7.15 ISO提供的版本)。

在规划此服务的部署时,请参阅安全注意事项一节。

引用:

  • Active Directory证书服务

https://docs.microsoft.com/en - us/previous versions/windows/it pro/windows - server - 2012 r2 -和- 2012/hh831740 (v = ws.11) ? redirectedfrom = MSDN

  • 为证书登录配置Windows

https://support.citrix.com/article/ctx206156

安装和设置顺序

  1. 安装联邦身份验证服务
  2. 在StoreFront服务器上启用联邦身份验证服务插件
  3. 配置组策略
  4. 使用联邦身份验证服务管理控制台:(a)部署提供的模板, (b)建立证书权威机构, (c)授权联邦身份验证服务使用您的证书颁发机构
  5. 配置用户规则

安装联邦身份验证服务

出于安全考虑,Citrix建议将FAS安装在与域控制器或证书颁发机构类似的安全方式的专用服务器上。FAS可以从联合身份验证服务当ISO被插入时,自动运行启动画面上的按钮。

这将安装以下组件:

在StoreFront Store上启用联合身份验证服务插件

要在StoreFront Store上启用联邦身份验证服务集成,请以管理员帐户运行以下PowerShell cmdlets。如果您有多个商店,或者商店有不同的名称,下面的路径文本可能会不同。

“‘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 ""  ```

配置交付控制器

要使用联邦身份验证服务,请配置XenApp或XenDesktop交付控制器以信任可以连接到它的StoreFront服务器set-brokersite -t​​rustrustssentsenttothexmlserviceport $ truePowerShell cmdlet。

配置组策略

安装联邦认证服务后,必须使用安装中提供的组策略模板在组策略中指定FAS服务器的完整DNS地址。

重要的是:确保请求票据的StoreFront服务器和兑换票据的VDAs具有相同的DNS地址配置,包括Group Policy对象应用的自动服务器编号。

为简单起见,下面的示例在域级别配置适用于所有机器的单一策略;然而,这并不是必需的。只要StoreFront服务器、VDAs和运行FAS管理控制台的机器看到相同的DNS地址列表,FAS就可以正常工作。请注意,Group Policy对象为每个条目添加了一个索引号,如果使用多个对象,该索引号也必须匹配。

第1步。在安装FAS的服务器上,找到C:\Program Files\Citrix\Federated AuthenticationService \PolicyDefinitions\CitrixFederatedAuthenticationService。admx文件和en-US文件夹。

局部的图片

第2步。复制这些到您的域控制器,并将它们放在C:\Windows\策略定义和en-US子文件夹中。

步骤3。运行Microsoft Management Console (mmc.exe)。从菜单栏中选择文件>添加/删除管理单元.添加组策略管理编辑器

当提示输入组策略对象时,选择浏览然后选择默认域策略.或者,您可以使用所选择的工具为您的环境创建和选择适当的策略对象。该策略必须应用于所有运行受影响的Citrix软件的机器(VDAs、StoreFront服务器、管理工具)。

局部的图片

步骤4。导航到位于计算机配置/策略/管理模板/Citrix组件/身份验证中的联邦身份验证服务策略。

局部的图片

第5步。打开联邦身份验证服务策略并选择启用.这允许您选择显示按钮,在这里您可以配置您的FAS服务器的DNS地址。

局部的图片

步骤6。输入承载联邦身份验证服务的服务器的DNS地址。

记住:如果输入多个地址,则列表的顺序必须在StoreFront服务器和VDA之间保持一致。这包括空白或未使用的列表条目。

步骤7。点击好的退出“组策略”向导并应用组策略更改。您可能需要重新启动您的机器(或运行gpupdate /力从命令行),以使更改生效。

启用会话证书支持并在锁定时断开连接

局部的图片

在会话证书的支持

组策略模板支持在系统中配置会话证书。这将在登录后将证书放入用户的个人证书存储区,以供应用程序使用。例如,如果在VDA会话中需要对web服务器进行TLS认证,则ie浏览器可以使用该证书。默认情况下,VDAs将不允许登录后访问证书。

断开锁上

如果启用了此策略,用户锁定屏幕时会话将自动断开。此功能提供了与“智能卡移除断开连接”策略类似的行为,对于用户没有Active Directory登录凭据的情况非常有用。

注意:

断开锁定策略适用于VDA上的所有会话。

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

联邦身份验证服务管理控制台作为联邦身份验证服务的一部分安装。开始菜单中放置了一个图标(Citrix联邦身份验证服务)。

控制台尝试使用组策略配置自动定位您环境中的FAS服务器。如果失败,请参见配置组策略部分。

局部的图片

如果您的用户帐户不是运行联邦身份验证服务的机器上的Administrators组的成员,系统将提示您输入凭据。

局部的图片

第一次使用管理控制台时,它将指导您完成三个步骤的过程,即部署证书模板、设置证书颁发机构并授权联邦身份验证服务使用证书颁发机构。有些步骤也可以使用操作系统配置工具手动完成。

局部的图片

部署证书模板

为了避免与其他软件的互操作性问题,联邦身份验证服务提供了三个Citrix证书模板供自己使用。

  • Citrix_RegistrationAuthority_ManualAuthorization
  • Citrix_RegistrationAuthority
  • Citrix_SmartcardLogon

这些模板必须注册到Active Directory。如果控制台无法定位它们,则部署证书模板工具可以安装它们。此工具必须作为具有管理Enterprise林权限的帐户运行。

局部的图片

模板的配置可以在扩展名为.certificatetemplate的XML文件中找到,这些文件安装在联邦身份验证服务中:

C:\ Program Files \ Citrix \联合身份验证服务\ CertificateTemplates

如果您没有安装这些模板文件的权限,请将它们交给Active Directory管理员。

手动安装模板可以使用PowerShell命令:

````.gettemplates()。itembyIndex(0)$ WritableTemplate = new-object -comobject x509enrollment.cx509certificatemplatement.initialize($ comtemplate)$ writabletemplate.commit(1,$ null)<! -  caltcopy  - >```

设置Active Directory证书服务

安装Citrix证书模板后,必须将它们发布到一个或多个Microsoft证书颁发中心服务器上。关于如何部署Active Directory证书服务,请参阅Microsoft文档。

如果在至少一个服务器上没有发布模板,则设置证书颁发机构Tool提供了发布它们的服务。必须以具有管理证书颁发机构权限的用户运行此工具。

(证书模板也可以使用Microsoft证书颁发机构控制台发布。)

局部的图片

授权联邦身份验证服务

控制台中的最后一个设置步骤启动联邦身份验证服务的授权。管理控制台使用Citrix_RegistrationAuthority_ManualAuthorization模板生成证书请求,然后将其发送给发布该模板的证书颁发机构之一。

局部的图片

发送请求后,它会出现在挂起的请求Microsoft证书颁发机构控制台的列表。证书颁发机构管理员必须选择问题或者否认联邦身份验证服务配置之前的请求可以继续。请注意,授权请求显示为等待请求从FAS机器帐户。

局部的图片

右键单击所有任务然后选择问题或者否认用于证书请求。联邦身份验证服务管理控制台自动检测此流程何时完成。这可能需要几分钟。

局部的图片

配置用户规则

按照StoreFront的指示,用户规则授权颁发用于VDA登录和会话中使用的证书。每条规则都指定了被信任来请求证书的StoreFront服务器、可以请求证书的用户集以及允许使用证书的VDA机器集。

要完成联合身份验证服务的设置,管理员必须通过切换到FAS管理控制台的“用户规则”选项卡的“管理员”的“查阅”用户规则“选项卡来定义默认规则,从而选择要发布的Citrix_SmartCardlogon模板的证书颁发机构,并编辑StoreFront服务器列表。vdas列表默认为域计算机,用户列表默认为域用户;如果默认值不合适,则可以更改这些。

局部的图片

字段:

证书颁发机构和证书模板:用于颁发用户证书的证书模板和证书颁发机构。这应该是模板发布到的某个证书颁发机构上的Citrix_SmartcardLogon模板,或该模板的修改副本。

FAS支持使用PowerShell命令添加多个证书颁发机构,用于故障转移和负载平衡。类似地,可以使用命令行和配置文件配置更高级的证书生成选项。看到PowerShell硬件安全模块部分。

在会话证书:登录后可复选框控制证书是否也可用作会话内证书。如果不选中此复选框,则证书仅用于登录或重新连接,用户在身份验证后将无法访问该证书。

可以使用此规则的StoreFront服务器列表:授权为登录或重新连接用户请求证书的受信任的StoreFront服务器机器列表。注意,此设置对安全性至关重要,必须小心管理。

局部的图片

可以通过此规则登录的VDA桌面和服务器列表:可以使用联邦身份验证服务系统登录用户的VDA计算机列表。

局部的图片

可以使用此规则登录的用户列表:可以通过联合身份验证服务发出证书的用户列表。

局部的图片

先进的使用

您可以创建其他规则以引用不同的证书模板和权限,该机构可以配置为具有不同的属性和权限。这些规则可以配置为由不同的店面服务器使用,这需要配置为按名称请求新规则。默认情况下,店面请求默认的联系联邦身份验证服务时。这可以使用组策略配置选项进行更改。

若要创建新的证书模板,请在Microsoft Certification Authority控制台上复制Citrix_SmartcardLogon模板,将其重命名(例如Citrix_SmartcardLogon2),并根据需要进行修改。通过单击创建新用户规则添加引用新的证书模板。

升级注意事项

  • 在执行就地升级时,保留所有联合身份验证服务服务器设置。
  • 通过运行完整产品的XenApp和XenDesktop安装程序升级联邦身份验证服务。
  • 在将联邦认证服务从7.15 LTSR升级到7.15 LTSR CU2(或后续支持的CU)之前,请先将Controller和VDAs(及其他核心组件)升级到所需的版本。
  • 在升级联邦身份验证服务之前,确保联邦身份验证服务控制台已关闭。
  • 确保在任何时候都至少有一个联邦身份验证服务服务器可用。如果启用联合身份验证服务的StoreFront服务器无法访问服务器,则用户无法登录或启动应用程序。

安全注意事项

联邦身份验证服务有一个注册机构证书,允许它代表域用户自主地颁发证书。因此,开发和实现一个安全策略来保护FAS服务器并限制它们的权限是很重要的。

委托招生代理

FAS作为注册代理颁发用户证书。Microsoft Certification Authority允许控制FAS服务器可以使用哪些模板,以及限制FAS服务器可以为哪些用户颁发证书。

局部的图片

Citrix强烈建议配置这些选项,以便联合身份验证服务只能为预期用户发出证书。例如,良好的做法是为了防止联合身份验证服务向管理或受保护用户组中向用户发出证书。

访问控制列表配置

配置用户规则节中,您必须配置一个受信任的StoreFront服务器列表,以便在颁发证书时向联邦身份验证服务断言用户身份。类似地,您可以限制将向哪些用户颁发证书,以及可以向哪些VDA机器进行身份验证。这是对您配置的任何标准Active Directory或证书颁发机构安全特性的补充。

防火墙设置

所有与FAS服务器的通信都通过端口80使用相互认证的Windows communication Foundation (WCF) Kerberos网络连接。

事件日志监控

联邦身份验证服务和VDA将信息写入Windows事件日志。这可以用于监视和审计信息。的事件日志节列出可能生成的事件日志项。

硬件安全模块

所有私钥(包括联邦身份验证服务颁发的用户证书的私钥)都由Network Service帐户存储为不可导出的私钥。如果安全策略需要,联邦身份验证服务支持使用加密硬件安全模块。

在FederatedAuthenticationService.exe.config文件中可以使用低级加密配置。这些设置在首次创建私钥时应用。因此,注册机构私钥(例如,4096位,TPM保护)和运行时用户证书可以使用不同的设置。

参数 描述
ProviderLegacyCsp 当设置为true时,FAS将使用Microsoft CryptoAPI (CAPI)。否则,FAS将使用微软下一代加密API (CNG)。
ProviderName 使用的CAPI或CNG提供商的名称。
ProviderType 是指Microsoft KeyContainerpermissionAccessEntry.ProviderType属性prov_rsa_aes 24.除非您使用带有CAPI和HSM供应商的HSM指定,否则应始终为24。
重点保护 控制私钥的“可导出”标志。如果硬件支持,还允许使用可信平台模块(TPM)密钥存储。
KeyLength RSA私钥的密钥长度。支持的取值为“1024”、“2048”和“4096”,默认值为“2048”。

PowerShell SDK

尽管联邦身份验证服务管理控制台适用于简单的部署,但PowerShell接口提供了更高级的选项。当您使用控制台中没有的选项时,Citrix建议仅使用PowerShell进行配置。

下面的命令添加了PowerShell cmdlets:

Add-PSSnapin Citrix.Authentication.FederatedAuthenticationService.V1

得到帮助<cmdlet名字>显示cmdlet帮助。下表列出了几个命令,其中*表示一个标准的PowerShell谓词(如New、Get、Set、Remove)。

命令 概述
* -FasServer 列出并重新配置当前环境中的FAS服务器。
* -FasAuthorizationCertificate 管理注册机构证书。
* -FasCertificateDefinition 控制FAS用于生成证书的参数。
* -FasRule 管理在联合身份验证服务上配置的用户规则。
* -FasUserCertificate 列出和管理联邦身份验证服务缓存的证书。

通过指定FAS服务器的地址,可以远程使用PowerShell cmdlet。

你也可以下载一个包含所有FAS PowerShell cmdlet帮助文件的zip文件;看到PowerShell SDK篇文章。

性能计数器

联邦身份验证服务包括一组用于负载跟踪的性能计数器。

局部的图片

下表列出了可用的计数器。大多数计数器的滚动平均时间超过5分钟。

的名字 描述
活动会话 联邦身份验证服务跟踪的连接数。
并发csr 同时处理的证书请求数。
私钥行动 每分钟私钥操作次数。
请求时间 生成和签名证书的时间长度。
证书数 在联合身份验证服务中缓存的证书数。
CSR每分钟 每分钟处理的csr数量。
低/中/高 联邦身份验证服务可以接受的负载的估计(以“每分钟csr”为单位)。超过“高负载”阈值可能导致会话启动失败。

事件日志

下表列出了联邦身份验证服务生成的事件日志条目。

管理事件

[事件源:Citrix.Authentication.FederatedAuthenticationservice]

这些事件将被记录,以响应联邦身份验证服务服务器中的配置更改。

日志代码
[S001] ACCESS DENIED: User[{0}]不是Administrators组的成员
[S002] ACCESS DENIED: User [{0}] is not an Administrator of Role [{1}]
[S003]管理员[{0}]设置维护模式为[{1}]
[S004]管理员[{0}]注册CA[{1}]模板[{2}和{3}]
[S005] Administrator[{0}]去授权CA [{1}]
[S006]管理员[{0}]创建新的证书定义
[S007]管理员[{0}]更新证书定义[{1}]
[S008]管理员[{0}]删除证书定义[{1}]
[S009]管理员[{0}]创建新角色[{1}]
[S010] Administrator [{0}] updating角色[{1}]
[S011]管理员[{0}]删除角色[{1}]
[S012]管理员[{0}]创建证书[UPN:{0} SID:{1}角色:{2}] [证书定义:{3}]
[S013] Administrator[{0}]删除证书[upn: {0} role:{1}证书定义:{2}]
日志代码
[S401]执行配置升级- [From version {0}][to version {1}]
[S402] ERROR: The Citrix Federated Authentication Service must be run as Network Service [current running as:{0}]错误提示

创建身份断言[联邦认证服务]

当受信任服务器断言用户登录时,这些事件在运行时联邦身份验证服务服务器上被记录。

日志代码
[S101]服务器[{0}]未被授权在角色[{1}]中断言身份
[S102] Server [{0}] failed to assert UPN[{1}](异常:{2}{3})
[S103]服务器[{0}]请求UPN [{1}] SID{2},但查找返回SID {3}
[S104] Server [{0}] failed to assert UPN [{1}] (UPN not allowed by role[{2}])日志含义
[S105] Server [{0}] issue identity assertion [upn: {0}, role {1}, Security Context: [{2}]
[S120]向[upn: {0} role: {1} Security Context:[{2}]]颁发证书
[S121]代表{2}账户向[upn:{0}角色:{1}]颁发证书
[S122] Warning: Server is overloaded [upn: {0} role: {1}][Requests per minute{2}]告警解释

作为依赖方[联邦认证服务]

当VDA记录用户时,这些事件将在运行时在联邦身份验证服务服务器上记录。

日志代码
[S201]依赖方[{0}]没有访问密码的权限。
[S202]依赖方[{0}]无法访问证书。
[S203]依赖方[{0}]没有访问登录CSP的权限
[S204]依赖方[{0}]访问登录CSP[操作:{1}]
[S205]呼叫帐号[{0}]不是角色的依赖方[{1}]
[S206]呼叫帐号[{0}]不是依赖方
[S207]依赖方[{0}]主张身份[upn:{1}]角色:[{2}]
[S208] Private Key operation failed [operation: {0}][upn: {1} role: {2} certificateDefinition {3}][Error{4}{5}]。

会话证书服务器[联邦认证服务]

当用户使用会话内证书时,这些事件将被记录在联邦身份验证服务服务器上。

日志代码
[S301] Access Denied:用户[{0}]没有访问虚拟智能卡的权限
[S302]用户[{0}]请求未知虚拟智能卡[拇指指纹:{1}]
[S303]用户[{0}]不匹配虚拟智能卡[upn: {1}]
[S304]用户[{1}]在计算机[{3}]上运行程序[{2}]使用虚拟智能卡[upn: {4} role:{5}]进行私钥操作:[{6}]
[S305]私钥操作失败[operation: {0}][upn: {1} role: {2} containerName {3}][Error{4}{5}]。

登录(VDA)

【事件源:Citrix.Authentication.IdentityAssertion】

这些事件在登录阶段记录在VDA上。

日志代码
[S101] Identity断言登录失败。无法识别的联合身份验证服务[ID:{0}]
[S102]身份断言登录失败。无法查找{0}的SID[异常:{1}{2}]
[S103]身份断言登录失败。用户{0}的SID为{1},预期的SID为{2}
[S104]身份断言登录失败。连接联邦认证服务失败:{0}[Error: {1} {2}]
[S105]身份断言登录登录[用户名:{0}][域名:{1}]
[S106]身份断言登录登录[证书:{0}]
[S107]身份断言登录失败。(例外:{1}{2}]
[S108]标识断言子系统。ACCESS_DENIED(打电话者:{0})

在会话证书(VDA)

当用户尝试使用会话内证书时,这些事件将被记录在VDA上。

日志代码
[S201]虚拟智能卡授权[User: {0}][PID: {1} Name:{2}][Certificate {3}]
[S202]虚拟智能卡子系统在会话{0}中没有智能卡可用
[S203]虚拟智能卡子系统。访问被拒绝[调用者:{0},会话{1},预期:{2}]
[S204]虚拟智能卡子系统智能卡支持失效。

证书请求和生成代码[联邦认证服务]

【事件源:Citrix。TrustFabric]

当联邦身份验证服务服务器执行日志级加密操作时,将记录这些低级事件。

日志代码
[S0001]TrustArea::TrustArea:已安装的证书链
[S0002]TrustArea::Join: Callback已经授权了一个不受信任的证书
[S0003]TrustArea::Join:连接到受信任的服务器
[S0004] TrustArea::维护:更新证书
[S0005]TrustArea::Maintain:检索到的新证书链
[S0006] Trustarea :: Export:导出私钥
[S0007]TrustArea::Import:正在导入信任区域
[S0008]TrustArea::Leave:离开TrustArea
[S0009]TrustArea::SecurityDescriptor:设置安全描述符
[S0010]CertificateVerification:安装新的受信任证书
[S0011]CertificateVerification:卸载过期的受信任证书
[S0012]TrustFabricHttpClient:尝试单点登录{0}
[S0013]TrustFabricHttpClient:显式输入{0}的凭据
[S0014]Pkcs10Request::Create: Created PKCS10 request
[S0015]Pkcs10Request::Renew: Created PKCS10 request
[S0016] PrivateKey::创建
[S0017] PrivateKey::删除
[S0018]TrustArea::TrustArea: Waiting for Approval
[S0019] TrustArea::加入:推迟加入
[S0020] TrustArea::加入:推迟加入
[S0021] Trustarea ::维护:安装证书链
日志代码
[S0101] TrustAreaServer::创建根证书
[S0102] TrustAreaServer::下属:连接成功了
[S0103] TrustAreaServer:: PeerJoin:连接成功了
[S0104]MicrosoftCertificateAuthority::GetCredentials: Authorized to use {0}
[S0104] MicrosoftCertificateAuthority:: SubmitCertificateRequest错误{0}
[S0105] MicrosoftCertificateAuthority :: submitCertificateRequest发布证书{0}
[S0106] MicrosoftCertificateAuthority:: PublishCRL: CRL出版
[S0107] MicrosoftCertificateAuthority :: ReissueCertificate错误{0}
[S0108]MicrosoftCertificateAuthority:: reissuecercertificate颁发证书{0}
[S0109]MicrosoftCertificateAuthority::CompleteCertificateRequest -仍然等待批准
[S0110]MicrosoftCertificateAuthority::CompleteCertificateRequest -挂起的证书被拒绝
[S0111] MicrosoftCertificateAuthority:: CompleteCertificateRequest颁发的证书
[S0112]MicrosoftCertificateAuthority::SubmitCertificateRequest - Waiting for approval
[S0120]NativeCertificateAuthority::SubmitCertificateRequest颁发证书{0}
[S0121] NativeCertificateAuthority :: submiscertificateRquest错误
[S0122]NativeCertificateAuthority::RootCARollover新的根证书
[S0123] NativeCertificateAuthority:: ReissueCertificate新证书
[S0124] NativeCertificateAuthority:: RevokeCertificate
[S0125] NativeCertificateAuthority:: PublishCRL