符合活动目录联合服务代理集成协议
如果要使用第三方代理来代替Web应用程序代理,它们必须支持指定ADFS和WAP集成规则的MS-ADFSPIP协议。ADFSPIP将Active Directory Federation Services与身份验证和应用程序代理集成在一起,使位于该边界之外的客户端能够访问位于公司网络边界内的服务。
先决条件
要成功地在代理服务器和ADFS场之间建立信任关系,请检查Citrix ADC设备中的以下配置:
为后端创建一个SSL配置文件,并在SSL配置文件中启用SNI。禁用SSLv3 / TLS1。在命令提示符下,输入以下命令:
add ssl profile <新建ssl profile> -sniEnable ENABLED -ssl3 DISABLED -tls1 DISABLED -commonName < ADFS的FQDN >
关闭服务的SSLv3/TLS1。在命令提示符下,输入以下命令:
设置ssl服务
-sslProfile ns_default_ssl_profile_backend 启用SNI扩展后端服务器握手。在命令提示符下,输入以下命令:
set vpn parameter -backendServerSni ENABLED set ssl parameter - denysslreg NONSECURE
重要的
对于必须将身份验证卸载到ADFS服务器的Home Realm Discovery (HRD)场景,Citrix建议您在Citrix ADC设备上同时禁用身份验证和SSO。
身份验证机制
下面是用于身份验证的高级事件流。
与ADFS服务器建立信任关系—Citrix ADC服务器通过注册客户端证书与ADFS服务器建立Trust关系。建立信任后,Citrix ADC设备在重启后重新建立信任,无需用户干预。
证书到期后,必须通过删除并重新添加ADFS代理配置文件来重新建立信任。
发表的端点Citrix ADC设备在ADFS服务器信任建立后自动获取已发布端点的列表。这些发布的端点过滤转发到ADFS服务器的请求。
向客户端请求插入头文件—当Citrix ADC设备隧道客户端请求时,与ADFSPIP相关的HTTP头被添加到数据包中,同时将它们发送到ADFS服务器。您可以基于这些头值在ADFS服务器上实现访问控制。支持以下报头。
- X-MS-Proxy
- X-MS-Endpoint-Absolute-Path
- X-MS-Forwarded-Client-IP
- X-MS-Proxy
- X-MS-Target-Role
- X-MS-ADFS-Proxy-Client-IP
管理终端用户流量—终端用户流量安全路由到所需资源。
请注意
Citrix ADC设备使用基于表单的身份验证。
配置Citrix ADC支持ADFS服务器
先决条件
将CS (Context Switching)服务器配置为前端,认证、授权和审计服务器置于CS之后。在命令提示符下,输入:
add cs vserver
SSL 10.220.xxx. add cs vserver SSL 10.220.xxx. add cs vserverxx 443 -cltTimeout 180 -AuthenticationHost -Authentication OFF -persistenceType NONE add cs action
-targetLBVserver
add cs action
-targetLBVserver
添加cs policy
-rule " http.req.url.contains(\"/adfs/services/trust\") || http.req.url.contains(\"federationmetadata/2007-06/federationmetadata.xml\")"-action add cs policy
-rule "HTTP.REQ.URL.CONTAINS(\"/adfs/ls\")"-action 绑定cs vserver
-policyName <策略名称> -priority 100 绑定cs vserver
-policyName <策略名称e2> -priority 110 绑定cs vserver
-lbvserver
添加ADFS服务。在命令提示符下,输入:
add service
SSL 443 设置ssl服务
-sslProfile ns_default_ssl_profile_backend 添加负载均衡虚拟服务器。在命令提示符下,输入:
add lb vserver
SSL 0.0.0.0 0
set ssl vserver
-sslProfile ns_default_ssl_profile_frontend
将服务绑定到负载均衡服务器。在命令提示符下,输入:
绑定lb vserver
要配置Citrix ADC与ADFS服务器一起工作,您需要执行以下操作:
- 创建与ADFS代理配置文件一起使用的SSL CertKey配置文件密钥
- 创建ADFS代理配置文件
- 关联ADFS代理配置文件到LB虚拟服务器
创建带有私钥的SSL证书,用于ADFS代理配置文件
在命令提示符下,输入:
添加SSL certkey -cert <证书路径> -key
注意:证书文件和密钥文件必须存在于Citrix ADC设备中。该任务指导管理员通过CLI创建ADFS代理配置文件
在命令提示符下,输入:
add authentication adfsProxyProfile <配置文件名称> -serverUrl /> -username -password < admin用户密码> -certKeyName <上面创建的CertKey配置文件名称>
在那里;
配置文件名称—要创建的AFDS代理配置文件的名称
ServerUrl - ADFS服务的全限定域名,包括协议和端口。例如,https://adfs.citrix.com
用户名
—ADFS服务器上已存在的admin帐户的用户名
密码—admin帐号作为用户名的密码
certKeyName—之前创建的SSL CertKey配置文件的名称
使用CLI将ADFS代理配置文件与负载均衡虚拟服务器关联
在ADFS部署中,使用两个负载均衡虚拟服务器,一个用于客户端流量,另一个用于元数据交换。ADFS代理配置文件必须与位于ADFS服务器前端的负载平衡虚拟服务器相关联。
在命令提示符下,输入:
set lb vserver < ADFS -proxy-lb> -adfsProxyProfile < ADFS代理配置文件名称>
对ADFSPIP的信任更新支持
您可以更新即将到期的现有证书的信任,或者如果现有证书无效。证书的信任更新仅在Citrix ADC设备和ADFS服务器之间建立信任时进行。若要更新证书的信任,必须提供新证书。
重要的
新证书的信任更新需要手动干预。
更新证书信任的步骤示例如下:
- Citrix ADC设备在POST请求中将旧证书(SerializedTrustCertificate)和新证书(SerializedReplacementCertificate)发送到ADFS服务器以进行信任更新。
- 如果信任更新成功,ADFS服务器将响应200 OK success。
- 如果信任更新成功,Citrix ADC设备将状态更新为“ESTABLISHED_RENEW_SUCCESS”。如果信任更新失败,状态将更新为“ESTABLISHED_RENEW_FAILED”,Citrix ADC设备将继续使用旧证书。
请注意
如果已将证书密钥绑定到某些ADFS代理配置文件,则无法更新证书密钥。
使用实例通过CLI配置证书的信任更新
在命令提示符下,输入:
set authentication adfsProxyProfile [-CertKeyName ]
例子:
set authentication adfsProxyProfile adfs_2 -CertKeyName ca_cert1
基于ADFS服务器认证的客户端证书
从Windows server 2016开始,微软引入了一种通过代理服务器访问ADFS时验证用户身份的新方法。现在,终端用户可以使用证书登录,从而避免使用密码。
终端用户通常通过代理访问ADFS,特别是当他们不在办公场所时。因此,需要ADFS代理服务器支持通过ADFSPIP协议进行客户端证书认证。
当ADFS使用Citrix ADC设备进行负载平衡时,要在ADFS服务器上支持基于证书的身份验证,用户还需要使用证书登录到Citrix ADC设备。这允许Citrix ADC将用户证书传递给ADFS以提供到ADFS服务器的SSO。
客户端证书认证流程如下图所示。
使用客户端证书为ADFS服务器配置单点登录
要使用客户端证书为ADFS服务器配置SSO,必须首先在Citrix ADC设备上配置客户端证书身份验证。然后必须将证书身份验证策略绑定到身份验证、授权和审计虚拟服务器。
此外,还需要执行以下操作。
必须配置一个端口为49443的额外上下文切换虚拟服务器,这个上下文切换虚拟服务器必须指向前面创建的对所有端口开放的相同负载平衡虚拟服务器。
必须在Citrix ADC设备上打开端口49443进行身份验证。
上下文切换策略必须绑定到前面创建的端口为443的负载均衡虚拟服务器。
您必须将前面创建的相同SSL服务绑定到负载均衡虚拟服务器。
如果已经为后端创建了SSL配置文件,则必须使用该配置文件。
在命令提示符下,键入;
add cs vserver bind cs vserver (-lbvserver | -vServer | [-targetLBVserver ] set ssl vserver ] bind ssl vserver add authentication certAction add authentication Policy < Policy name> -rule -action add authentication policylable
例子:
add cs vserver srv123_adfsproxy_csvs_tls SSL $VIP_1 49443 bind cs vserver srv123_adfsproxy_csvs_tls -lbvserver srv123_adfsproxy_csvs_tls -sslProfile ns_default_ssl_profile_frontend bind SSL vserver srv123_adfsproxy_csvs_tls -certkeyName srv123_wildcardcert add authentication certAction adfsproxy-cert add authentication Policy cert1 -rule TRUE -action adfsproxy-cert add authentication policyable certfactor bind authentication policylabel certfactor-policyName cert1 -priority 100
有关在Citrix ADC设备上配置客户端证书的信息,请参见配置高级策略认证客户端证书.