在第一个因素中为 WebAuth 配置适用于 Citrix Gateway 的 nFactor,在第二个因素中为密码更改配置 LDAP
下面的高级步骤涉及在第一因素中使用 WebAuth 为 Citrix Gateway 配置 nFactor,在第二因素中使用密码更改为 LDAP 配置 nFactor。
-
配置零 IP 的身份验证虚拟服务器。将证书绑定到身份验证虚拟服务器不是强制性的。
-
使用身份验证虚拟服务器名称配置身份验证配置文件。
-
配置 VPN 虚拟服务器。
-
在此 VPN 虚拟服务器上设置身份验证配置文件。
-
配置 WebAuth 操作和策略。
-
配置 LDAP 操作和策略。
-
为 LDAP 因素配置登录架构操作。
-
使用 LDAP 因素的登录架构操作为 LDAP 因素配置策略标签。
-
将 LDAP 策略绑定到 LDAP 策略标签。
-
将 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。
使用 CLI 进行配置
-
配置身份验证虚拟服务器。
add authentication vserver auth1 ssl <!--NeedCopy-->
在 GUI 中,导航到“安全”>“AAA-应用程序流量”>“虚拟服务器”,然后单击“添加”。
-
配置身份验证配置文件。
add authnProfile auth_profile –authnVsname auth1 <!--NeedCopy-->
在 GUI 中,导航到 安全性 > AAA-应用程序流量 > 身份验证配置文件 ,然后单击 添加。
-
配置 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 虚拟服务器上设置身份验证配置文件
set vpn vserver vpn1 –authnProfile auth_profile <!--NeedCopy-->
-
配置 WebAuth 操作和策略。
导航到 AppExpert > 表达式 > 高级表达式。
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-->
-
为密码更改配置 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 登录后启用用户启动的更改密码。
-
为 LDAP 因素配置登录架构操作。
add authentication loginSchema LDAP_schema -authenticationSchema /nsconfig/loginschema/LoginSchema/SingleAuth.xml <!--NeedCopy-->
LDAP 因素要求最终用户提供用户名和密码。向最终用户显示的登录表单必须描述用户名和密码字段。
Citrix ADC 有一些默认的登录架构 XML,它们存在于 NetScaler shell 上的 /nsconfig/ loginschema/LoginSchema 位置。您可以使用之前位置中存在的默认登录架构 XML 之一。
-
使用 LDAP 因素的登录架构操作为 LDAP 因素配置策略标签:
add authentication policylabel LDAP_factor -loginSchema LDAP_schema <!--NeedCopy-->
-
将 LDAP 策略绑定到 LDAP 策略标签。
bind authentication policylabel LDAP_factor –policyName ldap_policy –priority 10 <!--NeedCopy-->
-
将 WebAuth 策略绑定到使用 LDAP 策略标签作为下一个因素的身份验证虚拟服务器。
bind authentication vserver auth1 –policy webAuth_policy –nextFactor LDAP_factor –priority 10 <!--NeedCopy-->
前面的 nFactor 配置也可以使用 Citrix ADC 中的 nFirtor 可视化工具完成,该可从 13.0 固件版本开始使用。
使用 nFactor 可视化工具进行配置
这里的第一个因素是 Webauth,接着是启用密码更改选项的 LDAP。
-
导航到 Security(安全)> AAA-Application Traffic(AAA - 应用程序流量)> nFactor Visualizer(nFactor 可视化工具)> nFactor Flow(nFactor 流程),然后单击 Add(添加)。
-
单击 + 符号以添加 nFactor 流。
-
添加一个因素。您为此因素输入的名称是 nFactor 流的名称。
-
单击添加策略以添加 Webauth 策略和 Webauth 操作/服务器。
-
单击绿色 + 号以添加启用密码更改选项的 LDAP 身份验证的下一个因素。
-
单击添加架构以添加 LDAP 身份验证的登录架构。
-
单击添加策略以添加 LDAP 身份验证策略和 LDAP 操作/服务器。
要创建 LDAP 操作/服务器,请参阅文章https://support.citrix.com/article/CTX219939。
-
配置了这两个因素后,您必须将流程绑定到身份验证、授权和审核虚拟服务器。
调试 — 日志和计数器
使用 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