在 Citrix ADC nFactor 身份验证中,将证书身份验证配置为第一个因素,将 LDAP 配置为第二个因素
以下部分介绍的用例的第一个因素中配置了证书身份验证,第二个因素中配置了 LDAP。否则,如果第一个因素中不存在用户证书,则配置 LDAP 和 OTP。
用例:证书身份验证作为第一个因素,后跟 LDAP 作为下一个因素
假设如下用例:管理员在第一个因素中配置了证书身份验证。如果证书存在,则在下一个因素中配置 LDAP 身份验证。如果用户证书不存在,则配置 LDAP 和 OTP。
-
访问流量管理虚拟服务器后,您将被重定向到登录页面。
-
如果客户端设备中存在用户证书,则会显示以下屏幕。
-
提交用户证书后,身份验证将继续执行下一个因素。此因素被配置为 LDAP。
-
如果第一个因素中不存在用户证书,则继续使用 LDAP 和 OTP。您有两个选项要实现。
-
LDAP 和 OTP 作为单独的登录页面,用户名从 LDAP 因素预填充。
用户名值是使用表达式 ${http.req.user.name} 预填充的,该表达式从第一个因素中提取用户名。还可以自定义其他字段,例如用户名和密码的标签。
-
双身份验证页面包含两个密码字段。此时将显示用于此特定表示方法的示例。
-
注意
也可以通过 Citrix ADC 版本 13.0 及更高版本中提供的 nFactor 可视化工具创建安装程序。
使用 CLI 执行以下操作
-
配置身份验证虚拟服务器。
add authentication vserver auth_vserver SSL 10.217.28.152 443 add lb vserver lbvs1 HTTP 10.217.28.152 80 -AuthenticationHost auth1.nsi-test.com -Authentication ON bind ssl vserver auth_vserver -certkeyName gateway.angiras.lab <!--NeedCopy-->
-
将根证书绑定到虚拟服务器并启用客户端身份验证。
bind ssl vserver auth_vserver -certkeyName Root_Cert -CA -ocspCheck Optional set ssl vserver auth_vserver -clientAuth ENABLED -clientCert Optional <!--NeedCopy-->
-
配置身份验证操作和策略。
- LDAP 身份验证
add authentication ldapAction LDAP_Action -serverIP XX.XX.XX.XX -ldapBase "dc=citrix,dc=lab" -ldapBindDn administrator@citrix.lab -ldapBindDnPassword 97526a31c6e2e380f7b3a7e5aa53dc498c5b25e9b84e856b438b1c61624b5aad -encrypted -encryptmethod ENCMTHD_3 -ldapLoginName sAMAccountName -groupAttrName memberOf -subAttributeName cn` add authentication Policy LDAP_Pol -rule true -action LDAP_Action` <!--NeedCopy-->
- 设备管理
add authentication ldapAction OTP_manage_Act -serverIP XX.XX.XX.XX -ldapBase "dc=citrix,dc=lab" -ldapBindDn administrator@citrix.lab -ldapBindDnPassword 3e10c1df11a9cab239cff2c9305743da76068600a0c4359603abde04f28676ae -encrypted -encryptmethod ENCMTHD_3 -ldapLoginName sAMAccountName -groupAttrName memberOf -subAttributeName cn -authentication DISABLED -OTPSecret userParameters add authentication Policy manage_OTP -rule TRUE -action OTP_manage_Act <!--NeedCopy-->
- OTP 验证
add authentication ldapAction LDAP_OTP_Act -serverIP XX.XX.XX.XX -ldapBase "dc=citrix,dc=lab" -ldapBindDn administrator@citrix.lab -ldapBindDnPassword e79a8ebf93fdb7e7438f44c076350c6ec9ad1269ef0528d55640c7c86d3490dc -encrypted -encryptmethod ENCMTHD_3 -ldapLoginName sAMAccountName -searchFilter "userParameters>=#@" -groupAttrName memberOf -subAttributeName cn -authentication DISABLED -OTPSecret userParameters add authentication Policy OTP_Pol -rule true -action LDAP_OTP_Act <!--NeedCopy-->
- 证书身份验证
add authentication certAction Certificate_Profile -twoFactor ON -userNameField SubjectAltName:PrincipalName add authentication policy Cert_Pol -rule true -action Certificate_Profile` <!--NeedCopy-->
- 当证书身份验证失败或证书不存在时,对双重身份验证使用无身份验证的策略。
add authentication Policy Cert_Pol_NOAUTH_ -rule true -action NO_AUTHN <!--NeedCopy-->
-
为第二个因素配置策略标签和架构。
- 设备管理
add authentication policylabel manage_otp_label -loginSchema LSCHEMA_INT bind authentication policylabel manage_otp_label -policyName manage_OTP -priority 100 -gotoPriorityExpression END <!--NeedCopy-->
- 证书身份验证成功后的 LDAP 身份验证
add authentication loginSchema lschema_LDAP_Only -authenticationSchema "/nsconfig/loginschema/LoginSchema/PrefilUserFromExpr.xml" add authentication policylabel LDAP_Only -loginSchema lschema_LDAP_Only bind authentication policylabel LDAP_Only -policyName LDAP_Pol -priority 100 -gotoPriorityExpression END <!--NeedCopy-->
- 当认证不存在或证书身份验证失败时进行双重身份验证
add authentication loginSchema lschema_dual_auth -authenticationSchema "/nsconfig/loginschema/LoginSchema/DualAuth.xml" add authentication policylabel Dual_Auth_Label -loginSchema lschema_dual_auth bind authentication policylabel Dual_Auth_Label -policyName LDAP_Pol -priority 100 -gotoPriorityExpression END bind authentication policylabel Dual_Auth_Label -policyName OTP_Pol -priority 110 -gotoPriorityExpression END <!--NeedCopy-->
-
绑定在上述步骤中创建的策略。
bind authentication vserver auth_vserver -policy Manage_OTP -priority 100 -nextFactor manage_otp_label -gotoPriorityExpression NEXT bind authentication vserver auth_vserver -policy Cert_Pol -priority 110 -nextFactor LDAP_Only -gotoPriorityExpression NEXT bind authentication vserver auth_vserver -policy Cert_Pol_NOAUTH_ -priority 120 -nextFactor Dual_Auth_Label -gotoPriorityExpression NEXT <!--NeedCopy-->
使用 nFactor 可视化工具进行配置
-
导航到 Security(安全)> AAA-Application Traffic(AAA - 应用程序流量)> nFactor Visualizer(nFactor 可视化工具)> nFactor Flows(nFactor 流程),然后单击 Add(添加)。
-
单击 + 以添加 nFactor 流。
-
添加一个因素。您输入的名称为 nFactor 流的名称。单击创建。
-
单击 Add Policy(添加策略)添加第一个因素身份验证策略。可以创建身份验证策略或从列表中选择现有身份验证策略。
-
添加注册检查策略。这种情况下的操作将是 NO_AUTHN。
-
在表达式字段中,键入
HTTP.REQ.COOKIE.VALUE("NSC_TASS").EQ("manageotp")
并单击创建。 -
单击 Add Policy(添加策略)以创建策略。单击 Create(创建),然后单击 Add(添加)。
-
单击绿色 + 在管理设备之前添加 LDAP 身份验证的下一个因素。
-
选择 Create Factor(创建因素)并键入此因素的名称,然后单击 Create(创建)。
-
单击 Add Schema(添加架构),然后添加以创建用于管理设备的架构。
-
选择在上一步中创建的架构,然后单击添加进行创建。
-
单击 Add Policy(添加策略),然后选择 LDAP 身份验证策略进行初始 LDAP 身份验证。
注意
有关详细信息,请参阅 使用配置实用程序配置 LDAP 身份验证。
-
按照步骤 9 和 10 创建另一个因素来注册设备。
-
在此因素中不需要任何架构。单击 Add Policy(添加策略)添加设备注册策略。(在 CLI 配置步骤 4.b 中创建的策略)。
-
按照步骤 9 和 10 创建另一个因素来测试注册的设备。
-
单击 Add Policy(添加策略)以添加身份验证策略(在 CLI 配置步骤 4.c 中创建的策略)。
-
单击“Registration Policy”(注册策略)下的绿色 + 添加证书身份验证策略。
-
单击 Add(添加)添加证书策略。
注意
有关客户端证书身份验证的详细信息,请参阅 如何在 NetScaler 上启用 SSL 客户端证书身份验证。
-
单击“证书策略”旁边的绿色标志,创建 LDAP 身份验证的下一个因素。
-
单击 Add Schema(添加架构)为预填充的用户名添加登录架构,单一身份验证。
-
选择创建的架构,然后单击 OK(确定)。
-
单击 Add Policy(添加策略)并添加 LDAP 身份验证。
-
单击“Certificate Policy”(证书策略)旁边的红色 + 添加失败案例的下一个因素。失败案例适用于证书身份验证失败或设备上没有证书的情况。
-
选择 Create Factor(创建因素),后键入 Factor Name(因素名称)。
-
单击 Add Schema(添加架构)添加双重身份验证架构。
-
选择创建的架构,然后单击 OK(确定)。
-
单击 Add Policy(添加策略)并添加 LDAP 身份验证。
-
选择用于验证 OTP 的身份验证策略,然后单击 OK(确定)
-
单击 Done(完成)保存配置。
-
选择创建的 nFactor 流并将其绑定到身份验证、授权和审核虚拟服务器。单击 Bind to Authentication Server(绑定到身份验证服务器),然后单击 Create(创建)。
注意
只能使用“nFactor Flows”(nFactor 流)页面通过 Show Bindings(显示绑定)绑定和取消绑定 nFactor。
取消绑定 nFactor 流程
-
在“nFactor Flows”(nFactor 流)页面,单击汉堡图标中的“Show Bindings”(显示绑定)。
-
在“Authentication Server Bindings”(身份验证服务器绑定)页面中,选择要取消绑定的身份验证服务器,然后单击“Unbind”(取消绑定)。单击关闭。