ADC

在 Citrix ADC nFactor 身份验证中,将证书身份验证配置为第一个因素,将 LDAP 配置为第二个因素

以下部分介绍的用例的第一个因素中配置了证书身份验证,第二个因素中配置了 LDAP。否则,如果第一个因素中不存在用户证书,则配置 LDAP 和 OTP。

用例:证书身份验证作为第一个因素,后跟 LDAP 作为下一个因素

假设如下用例:管理员在第一个因素中配置了证书身份验证。如果证书存在,则在下一个因素中配置 LDAP 身份验证。如果用户证书不存在,则配置 LDAP 和 OTP。

  1. 访问流量管理虚拟服务器后,您将被重定向到登录页面。

  2. 如果客户端设备中存在用户证书,则会显示以下屏幕。

    用户证书

  3. 提交用户证书后,身份验证将继续执行下一个因素。此因素被配置为 LDAP。

    用户证书

  4. 如果第一个因素中不存在用户证书,则继续使用 LDAP 和 OTP。您有两个选项要实现。

    • LDAP 和 OTP 作为单独的登录页面,用户名从 LDAP 因素预填充。

      用户证书

      用户名值是使用表达式 ${http.req.user.name} 预填充的,该表达式从第一个因素中提取用户名。还可以自定义其他字段,例如用户名和密码的标签。

    • 双身份验证页面包含两个密码字段。此时将显示用于此特定表示方法的示例。

      用户证书

注意

也可以通过 Citrix ADC 版本 13.0 及更高版本中提供的 nFactor 可视化工具创建安装程序。

nFactor 可视化工具 LDAP 和 OTP

使用 CLI 执行以下操作

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

    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-->
    
  2. 将根证书绑定到虚拟服务器并启用客户端身份验证。

    bind ssl vserver auth_vserver -certkeyName Root_Cert -CA -ocspCheck Optional
    
    set ssl vserver auth_vserver -clientAuth ENABLED -clientCert Optional
    <!--NeedCopy-->
    
  3. 配置身份验证操作和策略。

    • 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-->
    
  4. 为第二个因素配置策略标签和架构。

    • 设备管理
    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-->
    
  5. 绑定在上述步骤中创建的策略。

    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 可视化工具进行配置

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

  2. 单击 + 以添加 nFactor 流。

    添加流程

  3. 添加一个因素。您输入的名称为 nFactor 流的名称。单击创建

    为流程添加名称

  4. 单击 Add Policy(添加策略)添加第一个因素身份验证策略。可以创建身份验证策略或从列表中选择现有身份验证策略。

    添加本地策略

  5. 添加注册检查策略。这种情况下的操作将是 NO_AUTHN。

  6. 表达式字段中,键入 HTTP.REQ.COOKIE.VALUE("NSC_TASS").EQ("manageotp") 并单击创建

    “Expression”(表达式)字段

  7. 单击 Add Policy(添加策略)以创建策略。单击 Create(创建),然后单击 Add(添加)。

    注册策略

  8. 单击绿色 + 在管理设备之前添加 LDAP 身份验证的下一个因素。

  9. 选择 Create Factor(创建因素)并键入此因素的名称,然后单击 Create(创建)。

    注册策略

  10. 单击 Add Schema(添加架构),然后添加以创建用于管理设备的架构。

    注册架构

  11. 选择在上一步中创建的架构,然后单击添加进行创建。

    添加 LDAP 身份验证策略

  12. 单击 Add Policy(添加策略),然后选择 LDAP 身份验证策略进行初始 LDAP 身份验证。

    注意

    有关详细信息,请参阅 使用配置实用程序配置 LDAP 身份验证

  13. 按照步骤 9 和 10 创建另一个因素来注册设备。

  14. 在此因素中不需要任何架构。单击 Add Policy(添加策略)添加设备注册策略。(在 CLI 配置步骤 4.b 中创建的策略)。

  15. 按照步骤 9 和 10 创建另一个因素来测试注册的设备。

  16. 单击 Add Policy(添加策略)以添加身份验证策略(在 CLI 配置步骤 4.c 中创建的策略)。

    添加 LDAP 身份验证策略

  17. 单击“Registration Policy”(注册策略)下的绿色 + 添加证书身份验证策略。

    添加 LDAP 身份验证策略

  18. 单击 Add(添加)添加证书策略。

    添加 LDAP 身份验证策略

    注意

    有关客户端证书身份验证的详细信息,请参阅 如何在 NetScaler 上启用 SSL 客户端证书身份验证

  19. 单击“证书策略”旁边的绿色标志,创建 LDAP 身份验证的下一个因素。

    添加 LDAP 因素

  20. 单击 Add Schema(添加架构)为预填充的用户名添加登录架构,单一身份验证。

    添加 LDAP 身份验证策略

  21. 选择创建的架构,然后单击 OK(确定)。

    选择 LDAP 架构

  22. 单击 Add Policy(添加策略)并添加 LDAP 身份验证。

    LDAP 策略

  23. 单击“Certificate Policy”(证书策略)旁边的红色 + 添加失败案例的下一个因素。失败案例适用于证书身份验证失败或设备上没有证书的情况。

  24. 选择 Create Factor(创建因素),后键入 Factor Name(因素名称)。

    LDAP OTP 因素

  25. 单击 Add Schema(添加架构)添加双重身份验证架构。

    双重身份验证架构

  26. 选择创建的架构,然后单击 OK(确定)。

    架构双重身份验证

  27. 单击 Add Policy(添加策略)并添加 LDAP 身份验证。

    LDAP 策略

  28. 选择用于验证 OTP 的身份验证策略,然后单击 OK(确定)

    LDAP 策略

  29. 单击 Done(完成)保存配置。

  30. 选择创建的 nFactor 流并将其绑定到身份验证、授权和审核虚拟服务器。单击 Bind to Authentication Server(绑定到身份验证服务器),然后单击 Create(创建)。

    LDAP 策略

    注意

    只能使用“nFactor Flows”(nFactor 流)页面通过 Show Bindings(显示绑定)绑定和取消绑定 nFactor。

取消绑定 nFactor 流程

  1. 在“nFactor Flows”(nFactor 流)页面,单击汉堡图标中的“Show Bindings”(显示绑定)。

  2. 在“Authentication Server Bindings”(身份验证服务器绑定)页面中,选择要取消绑定的身份验证服务器,然后单击“Unbind”(取消绑定)。单击关闭。

    LDAP 策略

在 Citrix ADC nFactor 身份验证中,将证书身份验证配置为第一个因素,将 LDAP 配置为第二个因素