Citrix ADC

Active Directory 联合身份验证服务代理集成协议合规性

您可以使用第三方代理代理,而不是 Web 应用程序代理。在这种情况下,请确保第三方代理支持 MS-ADFSPIP 协议。此协议指定了 ADFS 和 WAP 集成规则。ADFSPIP 将 Active Directory 联合身份验证服务与身份验证和应用程序代理集成在一起。这种集成使位于公司网络之外的客户端能够访问服务。

ADFSPIP 示意图

必备条件

要在代理服务器和 ADFS 场之间成功建立信任,请查看 Citrix ADC 设备中的以下配置:

  • 为后端创建 SSL 配置文件并在 SSL 配置文件中启用 SNI。禁用 SSLv3/TLS1。在命令提示符下,键入以下命令:

     add ssl profile <new SSL profile> -sniEnable ENABLED -ssl3 DISABLED -tls1 DISABLED -commonName <FQDN of ADFS>
     <!--NeedCopy-->
    
  • 为服务禁用 SSLv3/TLS1。在命令提示符下,键入以下命令:

     set ssl service <adfs service name> -sslProfile ns_default_ssl_profile_backend
     <!--NeedCopy-->
    
  • 为后端服务器握手启用 SNI 扩展。在命令提示符下,键入以下命令:

     set vpn parameter –backendServerSni ENABLED
    
     set ssl parameter -denySSLReneg NONSECURE
     <!--NeedCopy-->
    

重要:

对于必须将身份验证卸载到 ADFS 服务器的家庭领域发现 (HRD) 方案,Citrix 建议您在 Citrix ADC 设备上同时禁用身份验证和 SSO。

身份验证机制

以下是身份验证的高级别事件流。

  1. 与 ADFS 服务器建立信任 — Citrix ADC 服务器通过注册客户端证书来建立与 ADFS 服务器的信任。建立信任后,Citrix ADC 设备将在重新启动后重新建立信任,而无需用户干预。证书过期后,您必须通过删除并再次添加 ADFS 代理配置文件来重新建立信任。

  2. 已发布的端点 -建立信任后,Citrix ADC 设备会自动获取 ADFS 服务器上的已发布端点列表。这些已发布的端点会过滤转发到 ADFS 服务器的请求。

  3. 将标头插入客户端请求 — 当 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
  4. 管理最终用户流量 — 最终用户流量安全地路由到所需的资源。

    注意

    Citrix ADC 设备使用基于表单的身份验证。

配置 Citrix ADC 设备以支持 ADFS 服务器

必备条件

  • 将上下文切换 (CS) 服务器配置为前端,并在上下文切换后使用身份验证、授权和审核服务器。在命令提示符下,键入:

     add cs vserver <cs vserver name> SSL 10.220.xxx.xx 443
     -cltTimeout 180 -AuthenticationHost <adfs server hostname> -Authentication OFF -persistenceType NONE
     <!--NeedCopy-->
    
     add cs action <action name1> -targetLBVserver <lb vserver name>
     <!--NeedCopy-->
    
    
     add cs action <action name2> -targetLBVserver <lb vserver name>
     <!--NeedCopy-->
    
     add cs policy <policy name1> -rule " http.req.url.contains("/adfs/services/trust") || http.req.url.contains("federationmetadata/2007-06/federationmetadata.xml")" -action <action name1>
     <!--NeedCopy-->
    
     add cs policy <policy name2> -rule "HTTP.REQ.URL.CONTAINS("/adfs/ls")" -action <action name2>
     <!--NeedCopy-->
    
     bind cs vserver <cs vserver name> -policyName <policy name1> -priority 100
     <!--NeedCopy-->
    
     bind cs vserver <cs vserver name> -policyName <policy name2> -priority 110
     <!--NeedCopy-->
    
     bind cs vserver <cs vserver name> -lbvserver <lb vserver name>
     <!--NeedCopy-->
    
  • 添加 ADFS 服务。在命令提示符下,键入:

     add service <adfs service name> <adfs server ip> SSL 443
     <!--NeedCopy-->
    
     set ssl service <adfs service name> -sslProfile ns_default_ssl_profile_backend
     <!--NeedCopy-->
    
  • 添加负载平衡的虚拟服务器。在命令提示符下,键入:

     add lb vserver <lb vserver name> SSL 0.0.0.0 0
     <!--NeedCopy-->
    
     set ssl vserver <lb vserver name> -sslProfile ns_default_ssl_profile_frontend
     <!--NeedCopy-->
    
  • 将服务绑定到负载均衡服务器。在命令提示符下,键入:

     bind lb vserver <lb vserver name> <adfs service name>
     <!--NeedCopy-->
    

要将 Citrix ADC 设备配置为与 ADFS 服务器配合使用,您需要执行以下操作:

  1. 创建一个 SSL certKey 配置文件密钥以与 ADFS 代理配置文件配合使用。
  2. 创建 ADFS 代理配置文件。
  3. 将 ADFS 代理配置文件与 LB 虚拟服务器关联。

创建带有私钥的 SSL 证书以用于 ADFS 代理配置文件

在命令提示符下,键入:

    add ssl certkey <certkeyname> –cert <certificate path> -key <keypath>
<!--NeedCopy-->

注意: 证书文件和密钥文件必须存在于 Citrix ADC 设备中。 使用 CLI 创建 ADFS 代理配置文件

在命令提示符下,键入:

add authentication adfsProxyProfile  <profile name> -serverUrl <https://<server FQDN or IP address>/> -username <adfs admin user name> -password <password for admin user> -certKeyName <name of the CertKey profile created above>
<!--NeedCopy-->

哪里;

profile name — 要创建的 AFDS 代理配置文件的名称

serverUrl — ADFS 服务的完全限定域名,包括协议和端口。例如, https://adfs.citrix.com

Username — ADFS 服务器上存在的管理员帐户的用户名

password — 用作用户名的管理员帐户的密码

certKeyName — 之前创建的 SSL certKey 配置文件的名称

使用 CLI 将 ADFS 代理配置文件与负载平衡虚拟服务器关联

在 ADFS 部署中,需要两个负载平衡虚拟服务器,一个用于客户端流量,另一个用于元数据交换。ADFS 代理配置文件必须与前端 ADFS 服务器的负载平衡虚拟服务器关联。

在命令提示符下,键入:

set lb vserver <adfs-proxy-lb> -adfsProxyProfile <name of the ADFS proxy profile>
<!--NeedCopy-->

ADFSPIP 的信托续订支持

您可以续订即将过期的现有证书的信任,或者如果现有证书无效,则可以续订该证书的信任。只有在 Citrix ADC 设备和 ADFS 服务器之间建立信任关系时,才会执行证书的信任续订。要续订证书的信任,您必须提供新证书。

以下示例列出了证书信任续订涉及的步骤:

  1. Citrix ADC 设备将 POST 请求中的旧(序列化信任证书)和新证书(序列化替换证书)发送到 ADFS 服务器以进行信任续订。
  2. 如果成功续订信任,ADFS 服务器将响应 200 OK 成功。
  3. 如果信任续订成功,Citrix ADC 设备会将状态更新为“ESTABLISHED_RENEW_SUCCESS”。如果信托续订失败,状态将更新为“ESTABLISHED_RENEW_FAILED”。然后,Citrix ADC 设备使用旧证书。

注意

如果证书密钥绑定到 ADFS 代理配置文件,则无法更新证书密钥。

使用 CLI 配置证书的信任续订

在命令提示符下,键入:

set authentication adfsProxyProfile <name> [-CertKeyName <string>]
<!--NeedCopy-->

示例:

set authentication adfsProxyProfile adfs_2 –CertKeyName ca_cert1
<!--NeedCopy-->

信托续订新证书

当需要续订信托时,需要手动干预。当证书即将过期或管理员想要更改证书时,需要续订信任。这些证书可以是自签名证书,也可以是管理员生成的证书,其详细信息与以前的证书相同。要创建证书,请完成以下步骤。

  1. 创建一个 SSL certKey 配置文件密钥以与 ADFS 代理配置文件配合使用。
  2. 创建 ADFS 代理配置文件。
  3. 将 ADFS 代理配置文件与负载平衡虚拟服务器关联。

    有关详细信息,请参阅 创建证书签名请求并在 Citrix ADC 设备上使用 SSL 证书

创建证书后,可以使用以下 CLI 命令设置证书。

set authentication adfsProxyProfile <name> [-CertKeyName <string>]
<!--NeedCopy-->

ADFS 服务器上基于客户端证书的身份验证

从 Windows Server 2016 开始,Microsoft 推出了一种在通过代理服务器访问 ADFS 时对用户进行身份验证的新方法。最终用户可以使用其证书而不是密码登录。

最终用户通常通过代理访问 ADFS,尤其是在公司网络之外时。ADFS 代理服务器需要通过 ADFSPIP 协议支持客户端证书身份验证。

使用 Citrix ADC 设备对 ADF 进行负载平衡时,用户还必须使用证书登录 Citrix ADC 设备。用户必须登录才能在 ADFS 服务器上支持基于证书的身份验证。然后,Citrix ADC 设备将用户证书传递给 ADFS,以提供对 ADFS 服务器的单点登录。

下图显示了客户端证书身份验证流程。

客户端证书身份验证流程

使用客户端证书为 ADFS 服务器配置 SSO

要使用客户端证书为 ADFS 服务器配置 SSO,必须首先在 Citrix ADC 设备上配置客户端证书身份验证。然后将证书身份验证策略绑定到身份验证、授权和审核虚拟服务器。

在命令提示窗口中,键入:

add authentication certAction <action name>

add authentication Policy <policy name> -rule <expression> -action <action name>

add authentication policylable <label Name>

bind authentication policylabel <label Name> -policyName <name of the policy> -priority<integer>

<!--NeedCopy-->

示例:

add authentication certAction adfsproxy-cert

add authentication Policy cert1 -rule TRUE -action adfsproxy-cert

add authentication policylable certfactor

bind authentication policylabel certfactor –policyName cert1 –priority 100

<!--NeedCopy-->

有关配置客户端证书的信息,请参阅 使用高级策略配置客户端证书身份验证

Active Directory 联合身份验证服务代理集成协议合规性