用于身份验证的原生 OTP 支持

Last published : Oct 14, 2026
NetScaler Gateway 支持一次性密码 (OTP),无需使用第三方服务器。一次性密码是向安全服务器进行身份验证的高度安全选项,因为生成的数字或密码是随机的。以前,像 RSA 这样的专业公司提供 OTP,它们使用生成随机数的特定设备。该系统必须与客户端保持持续通信,以生成服务器期望的数字。
除了降低资本和运营支出外,此功能还通过将整个配置保留在 NetScaler 设备上,增强了管理员的控制。
注意:
由于不再需要第三方服务器,NetScaler 管理员必须配置一个接口来管理和验证用户设备。
用户必须在 NetScaler Gateway 虚拟服务器上注册才能使用 OTP 解决方案。每个唯一设备只需注册一次,并且可以限制在特定环境中。配置和验证注册用户类似于配置额外的身份验证策略。

原生 OTP 支持的优势

  • 通过消除除了 Active Directory 之外,在身份验证服务器上额外基础设施的需求,从而降低运营成本。
  • 将配置仅整合到 NetScaler 设备上,从而为管理员提供强大的控制。
  • 消除了客户端对额外身份验证服务器的依赖,以生成客户端期望的数字。

原生 OTP 工作流

原生 OTP 解决方案是一个双重过程,其工作流分类如下:
  • 设备注册
  • 最终用户登录
重要提示: 如果您正在使用第三方解决方案或管理 NetScaler 设备之外的其他设备,则可以跳过注册过程。您添加的最终字符串必须采用 NetScaler 指定的格式。
下图描述了注册新设备以接收 OTP 的设备注册流程。
OTP 工作流程
注意:
设备注册可以使用任意数量的因素完成。单因素(如上图所示)用作解释设备注册过程的示例。
下图描述了通过已注册设备验证 OTP 的过程。
OTP 验证工作流程

先决条件

要使用本机 OTP 功能,请确保满足以下先决条件。
  • NetScaler 功能版本为 12.0 build 51.24 及更高版本。
  • NetScaler Gateway 上已安装 Advanced 或 Premium 版许可证。
  • NetScaler Gateway 配置了管理 IP,并且管理控制台可以通过浏览器和命令行访问。
  • NetScaler 配置了身份验证、授权和审计虚拟服务器以对用户进行身份验证。
  • NetScaler 设备配置了统一网关,并且身份验证、授权和审计配置文件已分配给网关虚拟服务器。
  • 本机 OTP 解决方案仅限于 nFactor 身份验证流程。需要高级策略来配置该解决方案。有关更多详细信息,请参阅文章 CTX222713。
此外,请确保 Active Directory 满足以下条件:
  • 属性的最小长度为 256 个字符。
  • 属性类型必须是“DirectoryString”,例如 UserParameters。这些属性可以保存字符串值。
  • 如果设备名称包含非英文字符,则属性字符串类型必须为 Unicode。
  • NetScaler LDAP 管理员必须对选定的 AD 属性具有写入权限。
  • NetScaler 设备和客户端计算机必须与公共网络时间服务器同步。

使用 GUI 配置本机 OTP

本机 OTP 注册不仅仅是单因素身份验证。以下部分将帮助您配置单因素和第二因素身份验证。

为第一因素创建登录架构

  1. 导航到 安全 AAA > 应用程序流量 > 登录架构。
  2. 转到 Profiles,然后单击 Add。
  3. 在 Create Authentication Login Schema 页面上,在 Name 字段下输入 lschema_single_auth_manage_otp,然后单击 noschema 旁边的 Edit。
  4. 单击 LoginSchema 文件夹。
  5. 向下滚动以选择 SingleAuth.xml,然后单击 Select。
  6. 单击 Create。
  7. 单击 Policies,然后单击 Add。
  8. 在“创建身份验证登录架构策略”屏幕上,输入以下值。
    名称: lpol_single_auth_manage_otp_by_url 配置文件: 从列表中选择 lpol_single_auth_manage_otp_by_url。 规则: HTTP.REQ.COOKIE.VALUE("NSC_TASS").EQ("manageotp")

配置身份验证、授权和审计虚拟服务器

  1. 导航到“安全 > AAA – 应用程序流量 > 身份验证虚拟服务器”。单击以编辑现有虚拟服务器。
  2. 单击右侧窗格中“高级设置”下的“登录架构”旁边的“+”图标。
  3. 选择“无登录架构”。
  4. 单击箭头并选择 lpol_single_auth_manage_otp_by_url 策略。
  5. 选择 lpol_single_auth_manage_otp_by_url 策略,然后单击“选择”。
  6. 单击“绑定”。
  7. 向上滚动并在“高级身份验证策略”下选择“1 身份验证策略”。
  8. 右键单击“nFactor 策略”并选择“编辑绑定”。
  9. 单击“选择下一个因子”下的“+”图标,创建一个下一个因子,然后单击“绑定”。
  10. 在“创建身份验证 PolicyLabel”屏幕上,输入以下内容,然后单击“继续”:
    名称:manage_otp_flow_label
    登录架构:Lschema_Int
  11. 在 Authentication PolicyLabel 屏幕上,单击 + 图标以创建策略。
  12. 在 Create Authentication Policy 屏幕上,输入以下内容:
    名称:auth_pol_ldap_otp_action
  13. 使用 Action Type 列表选择操作类型。
  14. 在 Action 字段中,单击 + 图标以创建操作。
  15. 在 Create Authentication LDAP server 页面中,选择 Server IP 单选按钮,取消选中 Authentication 旁边的复选框,输入以下值,然后选择 Test Connection。
    名称:ldap_otp_action
    IP 地址:192.168.10.11
    基本可分辨名称:DC=training, DC=lab
    管理员:Administrator@training.lab
    密码:xxxxx
  16. 向下滚动到 Other Settings 部分。使用下拉菜单选择以下选项。 将 Server Logon Name Attribute 设为 New 并键入 userprincipalname。
  17. 使用下拉菜单将 SSO Name Attribute 设为 New 并键入 userprincipalname。
  18. 在 OTP Secret 字段中输入“UserParameters”,然后单击 More。
  19. 输入以下属性。
    属性 1 = mail 属性 2 = objectGUID 属性 3 = immutableID
  20. 点击确定。
  21. 在创建身份验证策略页面上,将表达式设置为 true,然后点击创建。
  22. 在创建身份验证策略标签页面上,点击绑定,然后点击完成。
  23. 在策略绑定页面上,点击绑定。
  24. 在身份验证策略页面上,点击关闭,然后点击完成。
注意:
身份验证虚拟服务器必须绑定到 RFWebUI 门户主题。将服务器证书绑定到服务器。服务器 IP ‘1.2.3.5’ 必须具有相应的 FQDN,即 otpauth.server.com,以备后用。

为第二因素 OTP 创建登录架构

  1. 导航到安全 > AAA - 应用程序流量 > 虚拟服务器。选择要编辑的虚拟服务器。
  2. 向下滚动并选择1 登录架构。
  3. 点击添加绑定。
  4. 在策略绑定部分下,点击**+**图标以添加策略。
  5. 在创建身份验证登录架构策略页面上,将名称输入为 OTP,然后点击**+**图标以创建配置文件。
  6. 在创建身份验证登录架构页面上,将名称输入为 OTP,然后点击noschema旁边的图标。
  7. 单击 LoginSchema 文件夹,选择 DualAuthManageOTP.xml,然后单击 Select。
  8. 单击 Create。
  9. 在 Rule 部分中,输入 True。单击 Create。
  10. 单击 Bind。
  11. 请注意身份验证的两个因素。单击 Close,然后单击 Done。

配置用于管理 OTP 的内容切换策略

如果您正在使用 Unified Gateway,则需要以下配置。
  1. 导航到 Traffic Management > Content Switching > Policies。选择内容切换策略,右键单击并选择 Edit。
  2. 编辑表达式以评估以下 OR 语句,然后单击 OK:
is_vpn_url||HTTP.REQ.URL.CONTAINS(“manageotp”)

使用 CLI 配置本机 OTP

您必须具备以下信息才能配置 OTP 设备管理页面:
  • 分配给身份验证虚拟服务器的 IP
  • 与分配的 IP 对应的 FQDN
  • 用于身份验证虚拟服务器的服务器证书
注意:
原生 OTP 仅是基于 Web 的解决方案。

配置 OTP 设备注册和管理页面

创建身份验证虚拟服务器
add authentication vserver authvs SSL 1.2.3.5 443
bind authentication vserver authvs -portaltheme RFWebUI
bind ssl vserver authvs -certkeyname otpauthcert
注意:
身份验证虚拟服务器必须绑定到 RFWebUI 门户主题。将服务器证书绑定到服务器。服务器 IP ‘1.2.3.5’ 必须具有相应的 FQDN,即 otpauth.server.com,以供后续使用。

创建 LDAP 登录操作

add authentication ldapAction <LDAP ACTION NAME> -serverIP <SERVER IP> -  serverPort <SERVER PORT> -ldapBase <BASE> -ldapBindDn <AD USER> -ldapBindDnPassword <PASSWO> -ldapLoginName <USER FORMAT>
示例:
add authentication ldapAction ldap_logon_action -serverIP 1.2.3.4 -serverPort 636 -ldapBase "OU=Users,DC=server,DC=com" -ldapBindDn administrator@ctxnsdev.com -ldapBindDnPassword PASSWORD -ldapLoginName userprincipalname

添加 LDAP 登录的身份验证策略

add authentication Policy auth_pol_ldap_logon -rule true -action ldap_logon_action

通过 LoginSchema 显示 UI

登录时向用户显示用户名和密码字段
add authentication loginSchema lschema_single_auth_manage_otp -authenticationSchema "/nsconfig/loginschema/LoginSchema/SingleAuthManageOTP.xml"

显示设备注册和管理页面

Citrix® 建议通过两种方式显示设备注册和管理屏幕:URL 或主机名。
  • 使用 URL
    当 URL 包含 ‘/manageotp’ 时
    • add authentication loginSchemaPolicy lpol_single_auth_manage_otp_by_url -rule 'http.req.cookie.value("NSC_TASS").contains("manageotp")' -action lschema_single_auth_manage_otp
    • bind authentication vserver authvs -policy lpol_single_auth_manage_otp_by_url -priority 10 -gotoPriorityExpression END
  • 使用主机名
    当主机名为“alt.server.com”时
    • add authentication loginSchemaPolicy lpol_single_auth_manage_otp_by_host -rule 'http.req.header("host").eq("alt.server.com")' -action lschema_single_auth_manage_otp
    • bind authentication vserver authvs -policy lpol_single_auth_manage_otp_by_host -priority 20 -gotoPriorityExpression END

使用 CLI 配置用户登录页面

您必须具备以下信息才能配置用户登录页面:
  • 负载平衡虚拟服务器的 IP
  • 负载平衡虚拟服务器对应的 FQDN
  • 负载平衡虚拟服务器的服务器证书
    bind ssl vserver lbvs_https -certkeyname lbvs_server_cert
负载平衡中的后端服务表示如下:
add service iis_backendsso_server_com 1.2.3.210 HTTP 80
bind lb vserver lbvs_https iis_backendsso_server_com

创建 OTP 密码验证操作

add authentication ldapAction <LDAP ACTION NAME> -serverIP <SERVER IP> -serverPort <SERVER PORT> -ldapBase <BASE> -ldapBindDn <AD USER> -ldapBindDnPassword <PASSWORD> -ldapLoginName <USER FORMAT> -authentication DISABLED -OTPSecret <LDAP ATTRIBUTE>
示例:
add authentication ldapAction ldap_otp_action -serverIP 1.2.3.4 -serverPort 636 -ldapBase "OU=Users,DC=server,DC=com" -ldapBindDn administrator@ctxnsdev.com -ldapBindDnPassword PASSWORD -ldapLoginName userprincipalname -authentication DISABLED -OTPSecret userParameters
重要提示:
LDAP 登录和 OTP 操作之间的区别在于需要禁用身份验证并引入新参数 OTPSecret。请勿使用 AD 属性值。

添加用于 OTP 密码验证的身份验证策略

add authentication Policy auth_pol_otp_validation -rule true -action ldap_otp_action

通过 LoginSchema 呈现双因素身份验证

添加双因素身份验证的用户界面。
add authentication loginSchema lscheme_dual_factor -authenticationSchema "/nsconfig/loginschema/LoginSchema/DualAuth.xml"
add authentication loginSchemaPolicy lpol_dual_factor -rule true -action lscheme_dual_factor

通过策略标签创建密码验证因子

为下一个因子创建管理 OTP 流程策略标签(第一个因子是 LDAP 登录)
add authentication loginSchema lschema_noschema -authenticationSchema noschema
add authentication policylabel manage_otp_flow_label -loginSchema lschema_noschema

将 OTP 策略绑定到策略标签

bind authentication policylabel manage_otp_flow_label -policyName  auth_pol_otp_validation -priority 10 -gotoPriorityExpression NEXT

绑定 UI 流程

将 LDAP 登录和 OTP 验证绑定到身份验证虚拟服务器。
bind authentication vserver authvs -policy auth_pol_ldap_logon -priority 10 -nextFactor  manage_otp_flow_label -gotoPriorityExpression NEXT
bind authentication vserver authvs -policy lpol_dual_factor -priority 30 -gotoPriorityExpression END

向 NetScaler 注册您的设备

  1. 导航到您的 NetScaler FQDN(第一个面向公众的 IP),并带有 /manageotp 后缀。例如,<https://otpauth.server.com/manageotp> 使用用户凭据登录。
  2. 单击 + 图标以添加设备。
    网关登录页面
  3. 输入设备名称,然后按 Go。屏幕上会出现一个条形码。
  4. 单击 Begin Setup,然后单击 Scan Barcode。
  5. 将设备摄像头悬停在二维码上方。您可以选择输入代码。
    二维码
    注意:
    显示的二维码有效期为 3 分钟。
  6. 成功扫描后,您将看到一个 6 位数的有时效性的代码,可用于登录。
    登录成功消息
  7. 要测试,请在二维码屏幕上单击完成,然后单击右侧的绿色复选标记。
  8. 从下拉菜单中选择您的设备,然后输入 Google Authenticator 中的代码(必须是蓝色,而不是红色),然后单击Go。
  9. 请务必使用页面右上角的下拉菜单注销。

使用 OTP 登录 NetScaler

  1. 导航到您的第一个面向公众的 URL,然后输入 Google Authenticator 中的 OTP 进行登录。
  2. 对 NetScaler 启动页进行身份验证。
    ADC 身份验证页面