Active Directory 联合身份验证服务代理集成协议合规性(技术预览)

注意 支持 Active Directory 联合身份验证服务代理集成协议是在技术预览版本中。

什么是 ADFS,为什么我们需要 ADFS 代理?

Active Directory 联合身份验证服务 (ADFS) 是一项 Microsoft 服务,该服务对企业数据中心外部的资源进行了活动目录身份验证的客户端启用单点登录 (SSO) 体验。ADFS 服务器场允许内部用户访问外部云托管服务。但是,当外部用户被引入混合时,必须为他们提供远程连接和通过联合身份访问基于云的服务的方法。大多数企业不希望将 ADFS 服务器保持在 DMZ 中,因此 ADFS 代理在远程用户连接和应用程序访问方面起着关键作用。

Citrix ADC 的内容是什么?

十多年来,Citrix ADC 一直扮演着类似的角色 —— 远程用户连接和应用访问。Citrix ADC 拥有实现安全连接、身份验证和处理联合身份的正确技术,因此它成为替换现有 ADFS 代理或支持新 ADFS 实现的首选解决方案。大多数企业都希望减少 DMZ 的占用空间,因此,他们理解这样一个事实:除了传统功能之外,Citrix ADC 还可以充当 ADFS 代理。这种方法避免了在 DMZ 中部署额外组件的需要。

为什么是亚太经合组织?

如果要使用第三方代理来代替 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 设备隧道客户端请求时,与 ADFSPIP 相关的 HTTP 标头将在将其发送到 ADFS 服务器时添加到数据包中。您可以根据这些标头值在 ADFS 服务器上实现访问控制。支持以下标头。
    • X-MS-Proxy
    • X-MS 端点-绝对路径
    • X-MS 转发客户端 IP
    • X-MS-Proxy
    • X-MS 目标角色
    • X-MS-ADFS 代理客户端 IP
  3. 管理最终用户流量 — 最终用户流量被安全地路由到所需资源。

    注意: 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 服务器上存在的管理员帐户的用户名

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

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

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

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

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

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

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

从 Windows 服务器 2016 年开始,微软引入了一种在通过代理服务器访问 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 设备上配置客户端证书的信息,请参阅 [使用高级策略配置客户端证书身份验证。