ADC

在第一个因素中为 WebAuth 配置适用于 Citrix Gateway 的 nFactor,在第二个因素中为密码更改配置 LDAP

下面的高级步骤涉及在第一因素中使用 WebAuth 为 Citrix Gateway 配置 nFactor,在第二因素中使用密码更改为 LDAP 配置 nFactor。

  1. 配置零 IP 的身份验证虚拟服务器。将证书绑定到身份验证虚拟服务器不是强制性的。

  2. 使用身份验证虚拟服务器名称配置身份验证配置文件。

  3. 配置 VPN 虚拟服务器。

  4. 在此 VPN 虚拟服务器上设置身份验证配置文件。

  5. 配置 WebAuth 操作和策略。

  6. 配置 LDAP 操作和策略。

  7. 为 LDAP 因素配置登录架构操作。

  8. 使用 LDAP 因素的登录架构操作为 LDAP 因素配置策略标签。

  9. 将 LDAP 策略绑定到 LDAP 策略标签。

  10. 将 WebAuth 策略绑定到身份验证虚拟服务器,并使用 LDAP 策略标签作为下一个因素。

工作原理

  • 用户在浏览器中输入 Citrix Gateway FQDN,并重定向到/登录/登录点/tmindex.html 页面。

  • 此页面显示绑定到身份验证虚拟服务器的登录架构。如果没有绑定到身份验证虚拟服务器的登录模式(如在我们的配置中),则会显示默认模式。

  • 用户输入第一个因素的凭据,在这种情况下是 WebAuth。

  • Citrix Gateway 检查 WebAuth 操作并联系 WebAuth 服务器。它将参数 fullReqExpr 中提到的 HTTP 请求发送到 WebAuth 服务器。如果 WebAuth 服务器的响应满足 WebAuth 操作的 successRule 参数中提到的表达式,则此策略将通过。

  • 现在,Citrix Gateway 移动到第二个因素。它检查绑定为下一个因素的策略标签 LDAP_F因素的配置。由于此策略标签中提到了登录架构,Citrix Gateway 将该 XML 架构发送到客户端。

  • 客户端接收架构并输入 LDAP 凭据进行第二因素身份验证。

  • Citrix Gateway 尝试访问 LDAP 服务器并验证客户端凭据是否正确。如果正确,身份验证阶段将完成,用户将登录到配置的 VPN 模式。

下图显示了 nFactor 身份验证序列,其中第一个因素是 WebAuth,第二个因素是 LDAP。

Nfactor-auth-sequence

使用 CLI 进行配置

  1. 配置身份验证虚拟服务器。

    add authentication vserver auth1 ssl
    <!--NeedCopy-->
    

    在 GUI 中,导航到“安全”>“AAA-应用程序流量”>“虚拟服务器”,然后单击“添加”。

    添加身份验证虚拟服务器

  2. 配置身份验证配置文件。

    add authnProfile auth_profile –authnVsname auth1
    <!--NeedCopy-->
    

    在 GUI 中,导航到 安全性 > AAA-应用程序流量 > 身份验证配置文件 ,然后单击 添加。

    创建身份验证配置文件

  3. 配置 VPN 虚拟服务器。

    add vpn vserver vpn1 ssl 10.1.1.1 443
    
    add ssl certkey ckp –cert test.cer –key test.key
    
    bind ssl vserver vpn1 –certKey ckp
    <!--NeedCopy-->
    

    导航到 Citrix Gateway > 虚拟服务器 ,然后单击 添加。

    添加 VPN 虚拟服务器

    VPN 虚拟服务器创建后,将证书绑定在同一个上。

    在 VPN 虚拟服务器上设置身份验证配置文件

    set vpn vserver vpn1 –authnProfile auth_profile
    <!--NeedCopy-->
    

    设置身份验证配置文件

  4. 配置 WebAuth 操作和策略。

    导航到 AppExpert > 表达式 > 高级表达式。

    配置 webauth 策略

    add policy expression post_data ""myusername=" +
    
    http.REQ.BODY(3000).SET_TEXT_MODE(IGNORECASE).AFTER_STR("login=").BEFORE_STR("&") + "&mypassword=" +
    
    http.REQ.BODY(3000).SET_TEXT_MODE(IGNORECASE).AFTER_STR("passwd=")"
    <!--NeedCopy-->
    

    创建表达式

    add policy expression length_post_data "("myusername=" +
    
    http.REQ.BODY(1000).SET_TEXT_MODE(IGNORECASE).AFTER_STR("login=").BEFORE_STR("&") + "&mypassword=" +
    
    \http.REQ.BODY(1000).SET_TEXT_MODE(IGNORECASE).AFTER_STR("passwd=")).length"
    <!--NeedCopy-->
    

    通过使用 CLI 配置 nFactor:

    add authentication webAuthAction webAuth_action -serverIP 10.102.39.132 -serverPort 443 -fullReqExpr q{"POST /customAuth.aspx HTTP/" + http.req.version.major + "." + http.req.version.minor + "\r\nAccept: \*/\*\r\nHost: 10.102.39.132\r\nUser-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)\r\nContent-Type: application/x-www-form-urlencoded\r\n" + "Content-Length: " + length_post_data + "\r\nConnection: Keep-Alive\r\n\r\n" + post_data} -scheme https -successRule "http.RES.STATUS.EQ(200)"
    
    add authentication policy webAuth_policy –rule TRUE –action webAuth_action
    <!--NeedCopy-->
    

    之前配置的 webAuth 操作使用两个策略表达式。一个策略表达式(post_data)创建 POST 正文。另一个(length_post_data)计算 POST 正文的长度,该正文用于填充 POST 请求中的内容长度标头。

    创建 POST 正文的策略表达式解析登录请求并提取用户输入的用户名和密码。然后,它使用从登录请求中提取的用户名密码以 WebAuth 服务器期望的格式创建 POST 正文。

    最后,WebAuth 操作创建以下请求,请求发送到 WebAuth 服务器。

    POST /customAuth.aspx HTTP/1.1
    Accept: \*/\*
    Host: 10.102.39.132
    Accept-Language: en-US
    User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)
    Content-Type: application/x-www-form-urlencoded
    Content-Length:43
    Connection: Keep-Alive
    
    myusername=test_user&mypassword=test_passwd
    <!--NeedCopy-->
    
  5. 为密码更改配置 LDAP 操作和策略。

    add authentication ldapAction ldap_action -serverIP 10.102.39.133 -serverPort 636 -secType SSL -ldapBase "dc=domain,dc=com" -ldapBindDn administrator -ldapBindDnPassword password -ldapLoginName samAccountName -passwdChange ENABLED
    add authentication policy ldap_policy –rule TRUE –action ldap_action
    <!--NeedCopy-->
    

    LDAP 操作配置为 — PasswdChange 已启用,这样可以在 VPN 登录后启用用户启动的更改密码。

  6. 为 LDAP 因素配置登录架构操作。

    add authentication loginSchema LDAP_schema -authenticationSchema /nsconfig/loginschema/LoginSchema/SingleAuth.xml
    <!--NeedCopy-->
    

    LDAP 因素要求最终用户提供用户名和密码。向最终用户显示的登录表单必须描述用户名和密码字段。

    Citrix ADC 有一些默认的登录架构 XML,它们存在于 NetScaler shell 上的 /nsconfig/ loginschema/LoginSchema 位置。您可以使用之前位置中存在的默认登录架构 XML 之一。

  7. 使用 LDAP 因素的登录架构操作为 LDAP 因素配置策略标签:

    add authentication policylabel LDAP_factor -loginSchema LDAP_schema
    <!--NeedCopy-->
    
  8. 将 LDAP 策略绑定到 LDAP 策略标签。

    bind authentication policylabel LDAP_factor –policyName ldap_policy –priority 10
    <!--NeedCopy-->
    
  9. 将 WebAuth 策略绑定到使用 LDAP 策略标签作为下一个因素的身份验证虚拟服务器。

    bind authentication vserver auth1 –policy webAuth_policy –nextFactor LDAP_factor –priority 10
    <!--NeedCopy-->
    

    前面的 nFactor 配置也可以使用 Citrix ADC 中的 nFirtor 可视化工具完成,该可从 13.0 固件版本开始使用。

使用 nFactor 可视化工具进行配置

在 nfactor 可视化工具中表示配置

这里的第一个因素是 Webauth,接着是启用密码更改选项的 LDAP。

  1. 导航到 Security(安全)> AAA-Application Traffic(AAA - 应用程序流量)> nFactor Visualizer(nFactor 可视化工具)> nFactor Flow(nFactor 流程),然后单击 Add(添加)。

  2. 单击 + 符号以添加 nFactor 流。

    添加 nFactor 流

  3. 添加一个因素。您为此因素输入的名称是 nFactor 流的名称。

    nFactor 流的名称

  4. 单击添加策略以添加 Webauth 策略和 Webauth 操作/服务器。

    单击添加策略

    选择策略

    创建身份验证策略

  5. 单击绿色 + 号以添加启用密码更改选项的 LDAP 身份验证的下一个因素。

    添加下一个 LDAP 因素

  6. 单击添加架构以添加 LDAP 身份验证的登录架构。

    添加 LDAP 身份验证的架构

  7. 单击添加策略以添加 LDAP 身份验证策略和 LDAP 操作/服务器。

    添加 LDAP 身份验证策略

    要创建 LDAP 操作/服务器,请参阅文章https://support.citrix.com/article/CTX219939

  8. 配置了这两个因素后,您必须将流程绑定到身份验证、授权和审核虚拟服务器。

    单击绑定到身份验证服务器

    选择因素并绑定到身份验证服务器

调试 — 日志和计数器

使用 WebAuth 和 LDAP 成功登录后可以看到日志。要查看以下大部分日志,请将审核日志级别设置为全部,以便它也显示调试日志。

set audit syslogparams –loglevel ALL
<!--NeedCopy-->

注意: 为简洁起见,将从日志中删除时间戳。

示例日志

使用 WebAuth 和 LDAP 成功登录后,以下计数器会递增。

  • pcp_hits authn(webAuth_policy)
  • aaa_tot_webauth_primary_auth
  • aaa_tot_webauth_prim_auth_success
  • aaa_tot_webauth_prim_succ_check_thru
  • pcp_hits authn(webAuth_policy)
  • pcp_hits authn(ldap_policy)
  • aaa_auth_succ
在第一个因素中为 WebAuth 配置适用于 Citrix Gateway 的 nFactor,在第二个因素中为密码更改配置 LDAP