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

如果要使用第三方代理来代替 Web 应用程序代理,则它们必须支持指定 ADFS 和 WAP 集成规则的 MS-ADFSPIP 协议。ADFSPIP 将 Active Directory 联合身份验证服务与身份验证和应用程序代理集成,以便为位于该边界之外的客户端访问位于公司网络边界内的服务。

本地化后的图片

必备条件

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

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

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

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

     set vpn parameter –backendServerSni ENABLED
    
     set ssl parameter -denySSLReneg NONSECURE
    

身份验证机制

下面是用于身份验证的高级事件流。

  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) 服务器配置为前端,使用 CS 后面的身份验证、授权和审核服务器。在命令提示窗口中,键入:

     add cs vserver <cs vserver name> SSL 10.220.xxx.xx 443
     -cltTimeout 180 -AuthenticationHost <adfs server hostname> -Authentication OFF -persistenceType NONE
    
     add cs action <action name1> -targetLBVserver <lb vserver name>
    
    
     add cs action <action name2> -targetLBVserver <lb vserver name>
    
     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>
    
     add cs policy <policy name2> -rule "HTTP.REQ.URL.CONTAINS("/adfs/ls")" -action <action name2>
    
     bind cs vserver <cs vserver name> -policyName <policy name1> -priority 100
    
     bind cs vserver <cs vserver name> -policyName <policy name2> -priority 110
    
     bind cs vserver <cs vserver name> -lbvserver <lb vserver name>
    
  • 添加 ADFS 服务。在命令提示窗口中,键入:

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

     add lb vserver <lb vserver name> SSL 0.0.0.0 0
    
     set ssl vserver <lb vserver name> -sslProfile ns_default_ssl_profile_frontend
    
  • 将服务绑定到负载平衡服务器。在命令提示窗口中,键入:

     bind lb vserver <lb vserver name> <adfs service name>
    

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

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

使用私钥创建 SSL 证书以便与 ADFS 代理配置文件一起使用

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

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

注意: 证书文件和密钥文件必须存在于 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>

在哪里;

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

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

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

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

certkeyName — 之前创建的 SSL 证书密钥配置文件的 名称

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

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

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

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

对 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>]

示例:

set authentication adfsProxyProfile adfs_2 –CertKeyName ca_cert1

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

自 Windows server 2016 起,Microsoft 引入了一种在通过代理服务器访问 ADFS 时对用户进行身份验证的新方法。现在,最终用户可以使用他们的证书登录,从而避免使用密码。

最终用户通常通过代理访问 ADFS,特别是当他们不在本地时。因此,ADFS 代理服务器需要通过 ADFSPIP 协议支持客户端证书身份验证。

使用 Citrix ADC 设备进行负载平衡时,要在 ADFS 服务器上支持基于证书的身份验证,用户还需要使用证书登录 Citrix ADC 设备。这允许 Citrix ADC 将用户证书传递给 ADFS,以便向 ADFS 服务器提供 SSO。

下图描述了客户端证书身份验证流程。

本地化后的图片

使用客户端证书为 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>

示例:

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

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