网关身份验证的 nFactor

Last published : Oct 14, 2026
nFactor 身份验证为身份验证带来了全新的可能性。使用 nFactor 的管理员在为虚拟服务器配置身份验证因子时,可享有身份验证、授权和审计的灵活性。
两个策略库或两个因子不再限制管理员。策略库的数量可以扩展以适应不同的需求。nFactor 根据先前的因子确定身份验证方法。通过使用 nFactor,可以实现动态登录表单和故障时操作。
重要提示:
  • 从版本 13.0 build 67.x 开始,nFactor 身份验证仅在 Standard 许可证下支持网关/VPN 虚拟服务器,而不支持身份验证虚拟服务器。在 Standard 许可证中,nFactor 可视化工具 GUI 无法用于在 nFactor 流程中创建 EPA。此外,您不能编辑登录架构,而必须按原样使用开箱即用的登录架构。
  • NetScaler 要支持 nFactor 身份验证,需要 Advanced 许可证或 Premium 许可证。有关 NetScaler nFactor 身份验证的更多信息,请参阅 nFactor 身份验证。

身份验证、授权和审计功能许可要求

下表列出了可用身份验证、授权和审计功能的许可要求。
Standard 许可证 Advanced 许可证 Premium 许可证
本地身份验证 是 是 是
LDAP 身份验证 是 是 是
RADIUS 身份验证 是 是 是
TACACS 身份验证 是 是 是
Web 身份验证 是 是 是
客户端证书身份验证 是 是 是
协商身份验证 是 是 是
SAML 身份验证 是 是 是
OAuth 身份验证 否 是 是
本机 OTP 否 是 是
电子邮件 OTP 否 是 是
OTP 推送通知 否 否 是
基于知识的问题和答案(KBA 身份验证) 否 是 是
自助服务密码重置 (SSPR) 否 是 是
nFactor 可视化工具 是 是 是
注意
  • 有关为 NetScaler Standard 许可证配置 nFactor 的步骤,请参阅 创建虚拟服务器 部分。
  • 在 NetScaler Standard 许可证中,只有不可寻址的身份验证、授权和审计虚拟服务器才能绑定到 Gateway/VPN 虚拟服务器。
  • NetScaler Standard 许可证不允许自定义 LoginSchema。nFactor 支持是基本的,仅包含设备附带的默认和已添加的登录架构。管理员可以在其配置中使用它们,但不能添加登录架构。因此,GUI 选项被禁用。

用例

nFactor 身份验证可根据用户配置文件启用动态身份验证流。有时,这些流程对用户来说可能简单直观。在其他情况下,它们可以与保护 Active Directory 或其他身份验证服务器结合使用。以下是 Gateway 的一些特定要求:
  1. 动态用户名和密码选择。 传统上,客户端(包括浏览器和接收器)使用 Active Directory (AD) 密码作为第一个密码字段。第二个密码保留用于一次性密码 (OTP)。但是,为了保护 AD 服务器,需要首先验证 OTP。nFactor 无需客户端修改即可完成此操作。
  2. 多租户身份验证端点。 一些组织对证书用户和非证书用户使用不同的 Gateway 服务器。随着用户使用自己的设备登录,用户在 NetScaler 设备上的访问级别会因所使用的设备而异。Gateway 可以满足不同的身份验证需求。
  3. 基于组成员身份的身份验证。 一些组织从 AD 服务器获取用户属性以确定身份验证要求。身份验证要求可能因个人用户而异。
  4. 身份验证协同因素。 有时,不同的身份验证策略对用于对不同的用户集进行身份验证。提供配对策略可提高有效身份验证。可以从一个流中创建依赖策略。通过这种方式,独立的策略集成为自己的流,从而提高效率并降低复杂性。

身份验证响应处理

NetScaler Gateway 回调注册处理身份验证响应。AAAD(身份验证守护程序)响应以及成功/失败/错误/对话代码被馈送到回调句柄。成功/失败/错误/对话代码指示 Gateway 采取适当的操作。

客户端支持

下表详细介绍了配置详细信息。
客户端 nFactor 支持 身份验证策略绑定点 EPA
浏览器 是 身份验证 是
Citrix Workspace 应用程序 是 VPN 是
Gateway 插件 是 VPN 是
注意:
  • Citrix Workspace 应用程序支持以下列出的版本中受支持操作系统的 nFactor 身份验证。
    • Windows 4.12 版本
    • Linux 13.10 版本
    • Mac 1808
    • iOS 2007
    • 安卓 1808
    • HTML5: 通过 Store Web 支持
    • Chrome: 通过 Store Web 支持

WebView 凭据类型对身份验证机制的支持

注意:
阻止表达式(例如 ns 变量)在支持 WebView 的 VPN 会话策略中不受支持。有关阻止表达式的更多信息,请联系 Citrix 支持。
NetScaler 身份验证支持 AUTHv3 协议。AUTHv3 协议中的 WebView 凭据类型支持所有类型的身份验证机制(包括 SAML 和 OAuth)。WebView 凭据类型是 AUTHv3 的一部分,由 Citrix Workspace 应用程序和 Web 应用程序中的浏览器实现。
以下示例解释了 WebView 事件通过 NetScaler Gateway 和 Citrix Workspace 应用程序的流程:
  1. Citrix Workspace 应用程序与 NetScaler Gateway 协商以支持 AUTHv3 协议。
  2. NetScaler 做出积极响应并建议一个特定的起始 URL。
  3. Citrix Workspace 应用程序然后连接到特定的端点 (URL)。
  4. NetScaler Gateway 向客户端发送响应以启动 WebView。
  5. Citrix Workspace 应用程序启动 WebView 并向 NetScaler 发送初始请求。
  6. NetScaler 将 URI 重定向到浏览器登录端点。
  7. 身份验证完成后,NetScaler 会向 WebView 发送完成响应。
  8. WebView 现在退出,并将控制权交还给 Citrix Workspace 应用程序,以继续 AUTHv3 协议进行会话建立。

命令行配置

Gateway 虚拟服务器需要一个名为属性的身份验证虚拟服务器。作为属性的虚拟服务器名称是此模型所需的唯一配置。
add authnProfile <name-of-profile> -authnVsName <name-of-auth-vserver>
authnVsName 是身份验证虚拟服务器的名称。authnVsName 虚拟服务器必须配置高级身份验证策略,并用于 nFactor 身份验证。
add vpn vserver <name> <serviceType> <IP> <PORT> -authnProfile <name-of-profile>
set vpn vserver <name> -authnProfile <name-of-profile>
其中 authnProfile 是之前创建的身份验证配置文件。

互操作性挑战

大多数旧版 Gateway 客户端,除了 rfWeb 客户端之外,都是根据 Gateway 发送的响应建模的。例如,许多客户端都期望收到对 /vpn/index.html 的 302 响应。这些客户端还依赖于各种网关 Cookie,例如“pwcount”、“NSC_CERT。”

端点分析 (EPA)

nFactor 中的 EPA 不支持 NetScaler 身份验证、授权和审计模块。因此,NetScaler Gateway 虚拟服务器执行 EPA。EPA 后,登录凭据使用前面提到的 API 发送到身份验证虚拟服务器。身份验证完成后,Gateway 继续执行身份验证后过程并建立用户会话。

错误配置注意事项

Gateway 客户端仅发送一次用户凭据。Gateway 从客户端的登录请求中获取一个或两个凭据。在旧版模式下,最多有两个因素。获取的密码用于这些因素。然而,使用 nFactor,可以配置的因素数量实际上是无限的。从 Gateway 客户端获取的密码会根据配置重复用于已配置的因素。必须注意,一次性密码 (OTP) 不得重复使用多次。同样,管理员必须确保在某个因素处重复使用的密码确实适用于该因素。

定义客户端

提供此配置选项是为了帮助 NetScaler 区分浏览器客户端和 Receiver 等厚客户端。
提供了一个模式集 ns_vpn_client_useragents,供管理员配置所有客户端的模式。
同样,将“Citrix Receiver”字符串绑定到上述 patset,以忽略用户代理中包含“Citrix Receiver”的所有客户端。
重要提示:
从适用于 Android 24.08.1 的 Citrix Secure Access 开始,用于 nFactor 身份验证的 webview 中的 User-Agent 字符串格式更改如下:
CitrixSecureAccess/CitrixVPN <version> (Linux; Android 14; Build/AP31.240426.023; wv) VpnCapable AuthV3Capable NAC/1.0 [ManagedVpn] [custom-user-agent]
  • 包含 CitrixSecureAccess/CitrixVPN 是为了向后兼容,用于识别 NetScaler Gateway 上的 Citrix Secure Access 客户端以筛选策略。
  • <version> 字符串将替换为适用的应用程序/操作系统版本号。
  • ManagedVpn 和 custom-user-agent 字符串是可选的。ManagedVpn 字符串仅包含在 MDM 部署的 VPN 中。custom-user-agent 字符串由 MDM 管理员在托管 VPN 配置中配置。
在以前的版本中,webview 中的 User-Agent 字符串包含旧版 Mozilla 或 WebKit 兼容性信息。

限制网关的 nFactor

如果存在以下条件,则不会发生网关身份验证的 nFactor。
  1. authnProfile 未设置为 NetScaler Gateway。
  2. 高级身份验证策略未绑定到身份验证虚拟服务器,并且在 authnProfile 中提到了相同的身份验证虚拟服务器。
  3. HTTP 请求中的 User-Agent 字符串与 patset ns_vpn_client_useragents 中配置的 User-Agent 匹配。
如果这些条件不满足,则使用绑定到网关的经典身份验证策略。
如果用户代理或其一部分绑定到前面提到的 patset,则来自这些用户代理的请求不参与 nFactor 流程。例如,以下命令限制所有浏览器(假设所有浏览器在用户代理字符串中都包含“Mozilla”)的配置:
bind patset ns_vpn_client_useragents Mozilla

LoginSchema

LoginSchema 是登录表单的逻辑表示。它由 XML 语言定义。登录架构的语法符合 Citrix 的通用表单协议规范。
LoginSchema 定义了产品的“视图”。管理员可以提供表单的自定义描述、辅助文本等。登录架构包括表单本身的标签。客户可以提供描述在给定点呈现的表单的成功或失败消息。
使用以下命令配置登录架构。
add authentication loginSchema <name> -authenticationSchema <string> [-userExpression <string>] [-passwdExpression <string>] [-userCredentialIndex <positive_integer>]
[-passwordCredentialIndex <positive_integer>] [-authenticationStrength <positive_integer>] [-SSOCredentials ( YES | NO )]

参数说明

  • name - 新登录架构的名称。这是一个必填参数。最大长度:127
  • authenticationSchema - 用于读取要发送到登录页面 UI 的身份验证架构的文件名。此文件包含根据 Citrix 表单身份验证协议定义的元素 XML 定义,以便能够呈现登录表单。如果管理员不想提示用户输入其他凭据,而是继续使用之前获得的凭据,则可以将 noschema 作为参数。这仅适用于与用户定义因素一起使用的 loginSchemas,而不适用于虚拟服务器因素。
这是一个必填参数。最大长度:255
  • userExpression - 登录期间用于提取用户名的表达式。这可以是任何相关的高级策略表达式。最大长度:127
  • passwdExpression - 登录期间用于提取密码的表达式。这可以是任何相关的先进策略表达式。最大长度:127
  • userCredentialIndex - 用户输入的用户名必须存储在会话中的索引。最小值:1,最大值:16
  • passwordCredentialIndex - 用户输入的密码必须存储在会话中的索引。最小值:1,最大值:16
  • authenticationStrength - 当前身份验证的权重。最小值:0,最大值:65535
  • SSOCredentials - 此选项指示当前因素凭据是否为默认 SSO(单点登录)凭据。可能的值:YES、NO。默认值:NO

LoginSchema 和 nFactor 知识要求

预构建的 loginSchema 文件位于以下 NetScaler 位置 /nsconfig/loginschema/LoginSchema/。这些预构建的 loginSchema 文件适用于常见用例,如有必要,可对其进行修改以适应细微变化。
此外,大多数具有少量自定义的单因素用例不需要登录架构配置。
建议管理员查阅文档,了解其他配置选项,这些选项使 NetScaler 能够发现因素。用户提交凭据后,管理员可以配置多个因素,以灵活选择和处理身份验证因素。

不使用 LoginSchema 配置双因素身份验证

NetScaler 根据配置自动确定双因素要求。用户提交这些凭据后,管理员可以在虚拟服务器上配置第一组策略。每个策略都可以配置一个“nextFactor”作为“passthrough”。“passthrough”意味着 NetScaler 必须使用现有凭据集处理登录,而无需用户干预。通过使用“passthrough”因素,管理员可以编程方式驱动身份验证流程。建议管理员阅读 nFactor 规范或部署指南以获取更多详细信息。请参阅 多因素 (nFactor) 身份验证。

用户名和密码表达式

为了处理登录凭据,管理员必须配置 loginSchema。具有少量 loginSchema 自定义的单因素或双因素用例不需要指定的 XML 定义。LoginSchema 还有其他属性,例如 userExpression 和 passwdExpression,可用于更改用户提供的用户名或密码。
登录架构是高级策略表达式,也可用于覆盖用户输入。这可以通过在 -authenticationSchema 的参数中附加字符串来实现,如以下示例所示。
以下是分别修改用户名和密码用户输入的示例。
  • 将用户名的用户输入从 username@citrix.com 更改为 username@xyz.com
    add authentication loginSchema user_schema -authenticationSchema LoginSchema/DualAuth.xml -userExpression "AAA.LOGIN.USERNAME.BEFORE_STR(\"@\").APPEND(\"@xyz.com\")"
  • 考虑这样一种情况:用户在第一个因素中提供了密码和通行码,作为已配置登录架构的一部分。要使用用户在第一个因素中提供的 通行码 和在第二个因素中提供的 密码,您可以使用以下命令修改现有登录架构。
    add authentication loginSchema user_schema -authenticationSchema LoginSchema/DualAuth.xml -passwdExpression "AAA.LOGIN.PASSWORD2"add authentication loginSchema user_schema_second -authenticationSchema noschema  -passwdExpression "AAA.LOGIN.PASSWORD"

nFactor 配置中的高级步骤

下图说明了 nFactor 配置中涉及的高级步骤。
工作流

GUI 配置

本节介绍以下主题:
  • 创建虚拟服务器
  • 创建身份验证虚拟服务器
  • 创建身份验证 CERT 配置文件
  • 创建身份验证策略
  • 添加 LDAP 身份验证服务器
  • 添加 LDAP 身份验证策略
  • 添加 RADIUS 身份验证服务器
  • 添加 RADIUS 身份验证策略
  • 创建身份验证登录架构
  • 创建策略标签

创建虚拟服务器

  1. 导航到 NetScaler Gateway > 虚拟服务器。
  2. 单击 添加按钮以创建网关虚拟服务器。
  3. 输入以下信息,然后单击 确定。
    参数名称 参数说明
    名称 NetScaler Gateway 虚拟服务器的名称。必须以 ASCII 字母或下划线 (_) 字符开头,并且只能包含 ASCII 字母数字、下划线、哈希 (#)、句点 (.)、空格、冒号 (:)、at (@)、等号 (=) 和连字符 (-) 字符。创建虚拟服务器后可以更改。以下要求仅适用于 NetScaler CLI:如果名称包含一个或多个空格,请将名称用双引号或单引号括起来(例如,“my server”或“my server”)。
    IP 地址类型 从下拉菜单中选择 IP 地址 或 不可寻址 选项。
    IP 地址 Internet 协议地址 (IP 地址) 是分配给参与计算机网络的每个设备的数字标签,该网络使用 Internet 协议进行通信。
    端口 输入虚拟服务器的端口号。
    RDP 服务器配置文件 与虚拟服务器关联的 RDP 服务器配置文件的名称。
    PCoIP 虚拟服务器配置文件 与虚拟服务器关联的 PCoIP 虚拟服务器配置文件的名称。
    最大用户数 此虚拟服务器上允许的最大并发用户会话数。允许登录此虚拟服务器的实际用户数取决于用户许可证总数。
    最大登录尝试次数 最大登录尝试次数。
    登录失败超时 如果用户超出最大允许尝试次数,帐户将被锁定的分钟数。
    Windows EPA 插件升级 用于设置 Windows 客户端插件升级行为的选项。
    Linux EPA 插件升级 用于设置 Linux 客户端插件升级行为的选项。
    >注意:
    >- 对于 eLux 和 IGEL OS,此参数必须始终设置为 从不。
    >- Citrix Secure Access 客户端 for Linux 不支持 Essential 选项。
    Mac EPA 插件升级 用于设置 macOS 客户端插件升级行为的选项。
    一次登录 此选项用于为此虚拟服务器启用或禁用无缝 SSO。
    仅限 ICA - 当设置为 ON 时,表示基本模式,用户可以使用 Citrix Workspace 应用程序或浏览器登录,并访问 Wihome 参数指向的 Citrix Virtual Apps and Desktops 环境中配置的已发布应用程序。用户不允许使用 Citrix Secure Access 客户端连接,并且无法配置端点扫描。在此模式下,可以登录和访问应用程序的用户数量不受许可证限制。
    - 当设置为 OFF 时,表示 SmartAccess 模式,用户可以使用 Citrix Workspace 应用程序、浏览器或 Citrix Secure Access 客户端登录。管理员可以配置在客户端系统上运行端点扫描,然后使用结果来控制对已发布应用程序的访问。在此模式下,客户端可以以其他客户端模式(即 VPN 和无客户端 VPN)连接到网关。在此模式下,可以登录和访问资源的用户数量受 CCU 许可证限制。
    启用身份验证 要求连接到 NetScaler Gateway 的用户进行身份验证。
    双跳 在双跳配置中使用 NetScaler Gateway。双跳部署通过使用三个防火墙将 DMZ 分为两个阶段,为内部网络提供了额外的安全层。此类部署可以在 DMZ 中部署一个设备,在安全网络中部署一个设备。
    关闭状态刷新 当虚拟服务器被标记为 DOWN 时(这意味着服务器可能已超时),关闭现有连接。断开现有连接可以释放资源,在某些情况下可以加快过载负载平衡设置的恢复。在连接可以安全关闭的服务器上启用此设置。不要在必须完成其事务的服务器上启用 DOWN 状态刷新。
    DTLS 此选项启动或停止虚拟服务器上的 turn 服务
    AppFlow 日志记录 记录包含标准 NetFlow 或 IPFIX 信息的 AppFlow 记录,例如流的开始和结束时间戳、数据包计数和字节计数。还记录包含应用程序级别信息的记录,例如 HTTP 网址、HTTP 请求方法和响应状态码、服务器响应时间以及延迟。
    ICA 代理会话迁移 此选项确定当用户从另一台设备登录时,是否传输现有 ICA 代理会话。
    状态 虚拟服务器的当前状态,例如 UP、DOWN、BUSY 等。
    启用设备证书 指示作为 EPA 的一部分的设备证书检查是启用还是禁用。
    基本设置
  4. 选择页面中的无服务器证书部分。
  5. 在选择服务器证书下单击 > 以选择服务器证书。
  6. 选择 SSL 证书,然后单击选择按钮。
  7. 单击绑定。
  8. 如果您看到关于 无可用密码 的警告,请单击 确定
  9. 单击 继续 按钮。
  10. 在“身份验证”部分,单击右上角的 + 图标。

创建身份验证虚拟服务器

  1. 导航到 安全 > AAA – 应用程序流量 > 虚拟服务器。
  2. 单击 添加 按钮。
  3. 完成以下基本设置以创建身份验证虚拟服务器。
    注意: 设置名称右侧的 * 符号表示必填字段。
    • 输入新身份验证虚拟服务器的 名称。
    • 输入 IP 地址类型。IP 地址类型可以配置为不可寻址。
    • 输入 IP 地址。IP 地址可以为零。
    • 输入身份验证虚拟服务器的 协议 类型。
    • 输入虚拟服务器接受连接的 TCP 端口。
    • 输入身份验证虚拟服务器设置的身份验证 Cookie 的 域。
  4. 单击 确定。
  5. 单击“无服务器证书”部分。
  6. 在“选择服务器证书”下单击“>”。
  7. 选择所需的 SSL 证书,然后单击“选择”按钮。
    注意:身份验证虚拟服务器不需要绑定证书。
  8. 配置“服务器证书绑定”。
    • 选中“用于 SNI 的服务器证书”复选框,以绑定用于 SNI 处理的一个或多个证书密钥。
    • 单击“绑定”按钮。
    绑定证书

创建身份验证 CERT 配置文件

  1. 导航到“安全 > AAA – 应用程序流量 > 策略 > 身份验证 > 基本策略 > CERT。”.
  2. 选择“配置文件”选项卡,然后选择“添加”。
  3. 填写以下字段以创建身份验证 CERT 配置文件。设置名称右侧的 * 符号表示必填字段。
    • 名称 - 客户端证书身份验证服务器配置文件(操作)的名称。
    • 双因素 – 在此实例中,双因素身份验证选项为 NOOP。
    • 用户名字段 – 输入从中提取用户名的客户端证书字段。必须设置为“"Subject"”或“"Issuer"”(包括两组双引号)。
    • 组名字段 - 输入从中提取组的客户端证书字段。必须设置为““Subject””或““Issuer””(包括两组双引号)。
    • 默认身份验证组 - 这是除了提取的组之外,身份验证成功时选择的默认组。
  4. 单击创建。

创建身份验证策略

注意
如果使用 AAA.login 配置具有策略规则的第一因子策略,则必须为 Citrix Workspace 应用程序配置以下带有 OR 条件的表达式,以支持 nFactor 部署。
|| HTTP.REQ.URL.CONTAINS("/cgi/authenticate")
  1. 导航到安全 > AAA – 应用程序流量 > 策略 > 身份验证 > 高级策略 > 策略。
  2. 选择添加按钮
  3. 填写以下信息以创建身份验证策略。设置名称右侧的 * 号表示必填字段。
    a) 名称 – 输入高级身份验证策略的名称。必须以字母、数字或下划线字符 (_) 开头,并且只能包含字母、数字、连字符 (-)、句点 (.)、井号 (#)、空格 ()、at (@)、等号 (=)、冒号 (:) 和下划线字符。身份验证策略创建后无法更改。
    以下要求仅适用于 NetScaler CLI:如果名称包含一个或多个空格,请将名称用双引号或单引号括起来(例如,“my authentication policy”或 'my authentication policy')。
    b) 操作类型 - 输入身份验证操作的类型。
    c) 操作 - 输入如果策略匹配要执行的身份验证操作的名称。
    d) 日志操作 - 输入当请求与此策略匹配时要使用的消息日志操作的名称。
    e) 表达式 - 输入 NetScaler 命名规则的名称,或默认语法表达式,策略使用该规则来确定是否尝试使用身份验证服务器对用户进行身份验证。
    f) 注释 – 输入任何注释以保留有关此策略的信息。
  4. 单击创建

添加 LDAP 身份验证服务器

  1. 导航到 安全 > AAA – 应用程序流量 > 策略 > 身份验证 > 基本策略 > LDAP。
  2. 通过选择服务器选项卡并选择添加按钮来添加 LDAP 服务器。

添加 LDAP 身份验证策略

  1. 转到 安全 > AAA – 应用程序流量 > 策略 > 身份验证 > 高级策略 > 策略。
  2. 单击添加以添加身份验证策略。
  3. 填写以下信息以创建身份验证策略。设置名称右侧的 * 号表示必填字段。
    a) 名称 - 高级身份验证策略的名称。 必须以字母、数字或下划线字符 (_) 开头,并且只能包含字母、数字、连字符 (-)、句点 (.)、井号 (#)、空格 ()、at (@)、等号 (=)、冒号 (:) 和下划线字符。身份验证策略创建后无法更改。
    以下要求仅适用于 NetScaler CLI:如果名称包含一个或多个空格,请将名称用双引号或单引号括起来(例如,“my authentication policy”或 'my authentication policy')。
    b) 操作类型 - 身份验证操作的类型。
    c) 操作 - 如果策略匹配,要执行的身份验证操作的名称。
    d) 日志操作 - 当请求与此策略匹配时要使用的消息日志操作的名称。
    e) 表达式 - NetScaler 命名规则的名称,或默认语法表达式,策略使用它来确定是否尝试使用身份验证服务器对用户进行身份验证。
    f) 注释 - 用于保留有关此策略信息的任何注释。
  4. 单击 创建。

添加 RADIUS 身份验证服务器

  1. 导航到 安全 > AAA – 应用程序流量 > 策略身份验证 > 基本策略 > RADIUS。
  2. 要添加服务器,请选择 服务器 选项卡,然后选择 添加 按钮。
  3. 输入以下内容以创建身份验证 RADIUS 服务器。设置名称右侧的 * 符号表示必填字段。
    1. 输入 RADIUS 操作的 名称。
    2. 输入分配给 RADIUS 服务器的 服务器名称 或 服务器 IP 地址。
    3. 输入 RADIUS 服务器侦听连接的 端口 号。
    4. 输入 超时 值(秒)。NetScaler 设备会等待 RADIUS 服务器的响应,直到配置的超时值过期。
    5. 输入 RADIUS 服务器和 NetScaler 设备之间共享的 密钥。需要密钥才能允许 NetScaler 设备与 RADIUS 服务器通信。
    6. 确认密钥。
  4. 单击 创建。

添加 RADIUS 身份验证策略

  1. 导航到 安全 > AAA – 应用程序流量 > 策略 > 身份验证 > 高级策略 > 策略。
  2. 单击 添加 以创建身份验证策略。
  3. 填写以下信息以创建身份验证策略。设置名称右侧的 * 符号表示必填字段。
    1. 名称 - 高级身份验证策略的名称。 必须以字母、数字或下划线字符 (_) 开头,并且只能包含字母、数字、连字符 (-)、句点 (.)、井号 (#)、空格 ()、at (@)、等号 (=)、冒号 (:) 和下划线字符。身份验证策略创建后无法更改。
    以下要求仅适用于 NetScaler CLI:如果名称包含一个或多个空格,请将名称用双引号或单引号括起来(例如,“my authentication policy”或 'my authentication policy')。
    1. 操作类型 - 身份验证操作的类型。
    2. 操作 - 如果策略匹配,则执行的身份验证操作的名称。
    3. 日志操作 - 当请求与此策略匹配时要使用的消息日志操作的名称。
    4. 表达式 - NetScaler 命名规则的名称,或策略用于确定是否尝试使用身份验证服务器对用户进行身份验证的默认语法表达式。
    5. 注释 - 用于保留有关此策略信息的任何注释。
  4. 单击 确定。您创建的身份验证策略将列在策略列表中。
    创建策略1

创建身份验证登录架构

  1. 导航到 安全 > AAA – 应用程序流量 > 登录架构。
  2. 选择“配置文件”选项卡,然后单击 添加 按钮。
  3. 填写以下字段以创建身份验证登录方案:
    1. 输入 名称 – 新登录方案的名称。
    2. 输入 身份验证方案 - 用于读取要发送到登录页面 UI 的身份验证方案的文件名。此文件必须包含根据 Citrix 表单身份验证协议的元素 XML 定义,才能呈现登录表单。如果管理员不想提示用户输入更多凭据,而是继续使用之前获得的凭据,则可以将“noschema”作为参数。这仅适用于与用户定义因素一起使用的登录方案,而不适用于虚拟服务器因素
    3. 输入 用户表达式 - 登录期间用于提取用户名的表达式
    4. 输入 密码表达式 - 登录期间用于提取密码的表达式
    5. 输入 用户凭据索引 - 用户输入的用户名在会话中存储的索引。
    6. 输入 密码凭据索引 - 用户输入的密码必须在会话中存储的索引。
    7. 输入 身份验证强度 - 当前身份验证的权重。
  4. 单击 创建。您创建的登录方案配置文件必须显示在登录方案配置文件列表中。
    创建登录方案

创建策略标签

策略标签指定特定因素的身份验证策略。每个策略标签对应一个因素。策略标签指定必须向用户呈现的登录表单。策略标签必须绑定为身份验证策略或另一个身份验证策略标签的下一个因素。通常,策略标签包含特定身份验证机制的身份验证策略。但是,您也可以拥有包含不同身份验证机制的身份验证策略的策略标签。
  1. 导航到 安全 > AAA – 应用程序流量 > 策略 > 身份验证 > 高级策略 > 策略标签。
  2. 单击 添加 按钮。
  3. 填写以下字段以创建身份验证策略标签:
    1. 输入新的身份验证策略标签的名称。
    2. 输入与身份验证策略标签关联的登录架构。
    3. 单击继续。
  4. 从下拉菜单中选择策略。
  5. 选择所需的身份验证策略,然后单击选择按钮。
  6. 填写以下字段:
    1. 输入策略绑定的优先级。
    2. 输入Goto 表达式——该表达式指定了如果当前策略规则评估为 TRUE,则将评估的下一个策略的优先级。
    添加表达式
  7. 选择所需的身份验证策略,然后单击选择按钮。
  8. 单击绑定按钮。
  9. 单击完成。
  10. 查看身份验证策略标签。

用于 nFactor 身份验证的 re-Captcha 配置

从 NetScaler 12.1 版本 build 50.x 开始,NetScaler Gateway 支持一个新的第一类操作 'captchaAction',它简化了 Captcha 配置。由于 Captcha 是一种第一类操作,它可以成为一个独立的因素。您可以在 nFactor 流程中的任何位置注入 Captcha。
以前,您必须编写自定义的 WebAuth 策略,并同时更改 RfWebUI。随着 captchaACtion 的引入,您无需修改 JavaScript。
从 NetScaler 14.1 版本 build 47.46 开始,nFactor 身份验证除了支持 re-Captcha v2 外,还支持 Google re-Captcha v3。Google re-Captcha v3 提供了一种高级身份验证方法,该方法无需用户交互即可评估登录请求。它为每个请求分配一个介于 0.0 和 1.0 之间的分数,分数越高表示请求越安全。NetScaler 随后可以使用此分数来确定是否对用户进行身份验证。
从 14.1 版本 build 51.x 开始,NetScaler 支持 Google re-Captcha v3 Enterprise 控制台。以前,re-Captcha v3 支持仅限于 Admin 控制台,该控制台对可处理的请求数量有固定限制。相比之下,Enterprise 控制台允许根据订阅计划增加请求限制。
NetScaler 目前支持以下 re-Captcha 配置:
  • 用于 Admin 控制台的 re-Captcha v2
  • 用于 Admin 控制台的 re-Captcha v3
  • 用于 Enterprise 控制台的 re-Captcha v3
重要提示:
如果 re-Captcha 与架构中的用户名或密码字段一起使用,则在满足 re-Captcha 要求之前,登录按钮将处于禁用状态。

re-Captcha 配置

re-Captcha 配置包括两个部分。
  1. 在 Google 上注册 re-Captcha 的配置。
  2. 在 NetScaler 上使用 re-Captcha 作为登录流程一部分的配置。

Google 上的 re-Captcha 配置

Admin 控制台的 re-Captcha 配置(re-Captcha v2 和 v3)
在 <https://www.google.com/recaptcha/admin#llist> 注册 re-Captcha 域。
  1. 当您导航到此页面时,将显示以下屏幕。
    注册站点
    注意
    对于 NetScaler 14.1 版本 build 47.46 及更高版本,请根据需要选择 reCAPTCHA v2 或 reCAPTCHA v3。以前的版本仅支持 reCAPTCHA v2。
  2. 注册域后,将显示“SiteKey”和“SecretKey”。记下显示的“SiteKey”和“SecretKey”。
    站点密钥和秘密密钥
    注意
    出于安全原因,“SiteKey”和“SecretKey”显示为灰色。“SecretKey”必须妥善保管。
企业控制台的 re-Captcha 配置 (re-Captcha v3)
  1. 使用 Gmail 帐户登录 <https://console.cloud.google.com/> 并创建一个项目。
  2. 转到 <https://console.cloud.google.com/security/recaptcha> 并创建站点密钥。记下创建的站点密钥。有关更多信息,请参阅 Google re-Captcha 文档。
  3. 转到 <https://console.cloud.google.com/apis/> 并创建 API 密钥。记下创建的 API 密钥。有关更多信息,请参阅 Google re-Captcha 文档。
  4. 转到 <https://console.cloud.google.com/security/recaptcha> 并从评估 API 复制服务器 URL(复制到“assessments”一词)。保存复制的服务器 URL。
    例如,如果评估 API 是“<https://recaptchaenterprise.googleapis.com/v1/projects/tactile-reason-455709-p6/assessments?key=API_KEY>”,则必须复制到“assessments”的部分,即“<https://recaptchaenterprise.googleapis.com/v1/projects/tactile-reason-455709-p6/assessments>”。此提取的 URL 用作 captchaAction 命令中的服务器 URL。
    复制服务器 URL

NetScaler 上的 re-Captcha 配置

NetScaler 上的 re-Captcha 配置可分为三个部分:
  • 显示 re-Captcha 屏幕
  • 将 re-Captcha 响应发布到 Google 服务器
  • 将 LDAP 配置为用户登录的第二个因素
显示 re-Captcha 屏幕
登录表单自定义通过以下登录架构完成:
  • SingleAuthCaptcha.xml 用于管理员控制台的 re-Captcha v2
  • SingleAuthCaptchav3.xml 用于管理员控制台的 re-Captcha v3
  • SingleAuthReCaptchav3Enterprise.xml 用于企业控制台的 re-Captcha v3
自定义在身份验证虚拟服务器中指定,并发送到 UI 以呈现登录表单。内置登录架构位于 NetScaler 上的 /nsconfig/loginSchema/LoginSchema 目录中。
重要提示:
  • 当 LDAP 配置为第二个因素时,可以使用登录架构。
  • 您可以根据您的用例自定义现有架构。例如,您可以修改它以仅包含 re-Captcha 因素(不含用户名或密码)或使用 re-Captcha 进行双重身份验证。
  • 如果进行了任何自定义修改或文件被重命名,我们建议将所有 loginSchemas 从 /nsconfig/loginschema/LoginSchema 目录复制到父目录 /nsconfig/loginschema。
使用 CLI 配置 re-Captcha 的显示
验证码 第二版:
add authentication loginSchema singleauthcaptcha -authenticationSchema /nsconfig/loginschema/SingleAuthCaptcha.xml

add authentication loginSchemaPolicy singleauthcaptcha -rule true -action singleauthcaptcha

add authentication vserver auth SSL <IP> <Port>

add ssl certkey vserver-cert -cert <path-to-cert-file> -key <path-to-key-file>

bind ssl vserver auth -certkey vserver-cert

bind authentication vserver auth -policy singleauthcaptcha -priority 5 -gotoPriorityExpression END
re-Captcha v3 版本:
add authentication loginSchema singleauthcaptcha -authenticationSchema /nsconfig/loginschema/SingleAuthCaptchav3.xml

add authentication loginSchemaPolicy singleauthcaptcha -rule true -action singleauthcaptcha

add authentication vserver auth SSL <IP> <Port>

add ssl certkey vserver-cert -cert <path-to-cert-file> -key <path-to-key-file>

bind ssl vserver auth -certkey vserver-cert

bind authentication vserver auth -policy singleauthcaptcha -priority 5 -gotoPriorityExpression END
在上述命令中,对 <login_schema> 参数使用以下登录架构:
  • 用于管理员控制台的 re-Captcha v2 的 SingleAuthCaptcha.xml
  • 用于管理员控制台的 re-Captcha v3 的 SingleAuthCaptchav3.xml
  • 用于企业控制台的 re-Captcha v3 的 SingleAuthReCaptchav3Enterprise.xml
将 re-Captcha 响应发布到 Google 服务器
配置好必须向用户显示的 re-Captcha 后,管理员会将配置添加到 Google 服务器,以验证来自浏览器的 re-Captcha 响应。
先决条件:
NetScaler 联系 <https://www.google.com/recaptcha/api/siteverify> 以验证 Captcha 信息。因此,请确保 NetScaler 可以访问该站点。
要验证 Google 站点是否可访问,请运行以下脚本:
curl -vvv https://www.google.com/recaptcha/api/siteverify
NetScaler 联系 <https://www.google.com/recaptcha/api/siteverify> 以验证 Captcha 信息。
验证来自浏览器的 re-Captcha 响应以用于管理控制台
在 Google 服务器中注册域时生成的“SiteKey”和“SecretKey”必须用于以下 CLI 命令中。
re-Captcha v2 版本:
add authentication captchaAction myrecaptcha -sitekey <sitekey-copied-from-google> -secretkey <secretkey-from-google>

add authentication policy myrecaptcha -rule true -action myrecaptcha

bind authentication vserver auth -policy myrecaptcha -priority 1
re-Captcha 版本 3:
add authentication captchaAction -siteKey <sitekey> -secretKey <secretKey> -scoreThreshold <0 to 10>

add authentication policy myrecaptcha -rule true -action myrecaptcha

bind authentication vserver auth -policy myrecaptcha -priority 1
scoreThreshold 的默认值为 5。
验证来自浏览器的 re-Captcha 响应以用于企业控制台
在 Google 服务器中注册域时生成的“站点密钥”、“API 密钥”和“服务器 URL”必须用于以下 CLI 命令中:
add authentication captchaAction -siteKey <sitekey> -secretKey <APIkey> -scoreThreshold<0 - 10> -serverurl <serverURL>

add authentication policy myrecaptcha -rule true -action myrecaptcha

bind authentication vserver auth -policy myrecaptcha -priority 1
scoreThreshold 的默认值为 5。
将 LDAP 配置为用户登录的第二个因素
注意:
如果不需要 LDAP 身份验证,请自定义以下登录架构以删除用户名和密码标签:
  • 用于管理控制台的 re-Captcha v2 的 SingleAuthCaptcha.xml
  • 用于管理控制台的 re-Captcha v3 的 SingleAuthCaptchav3.xml
  • 用于企业控制台的 re-Captcha v3 的 SingleAuthReCaptchav3Enterprise.xml
如果您将 LDAP 身份验证添加为第二个因素,它将在 re-Captcha 之后发生。
add authentication ldapAction ldap-new -serverIP x.x.x.x -serverPort 636 -ldapBase "cn=users,dc=aaatm,dc=com" -ldapBindDn adminuser@aaatm.com -ldapBindDnPassword <password> -encrypted -encryptmethod ENCMTHD_3 -ldapLoginName sAMAccountName -groupAttrName memberof -subAttributeName CN -secType SSL -passwdChange ENABLED -defaultAuthenticationGroup ldapGroup

add authenticationpolicy ldap-new -rule true -action ldap-new

add authentication policylabel second-factor

bind authentication policylabel second-factor -policy ldap-new -priority 10

bind authentication vserver auth -policy myrecaptcha -priority 1 -nextFactor second-factor
管理员必须根据是使用负载平衡虚拟服务器还是 NetScaler Gateway 进行访问来添加适当的虚拟服务器。如果需要负载平衡虚拟服务器,管理员必须配置以下命令:
add lb vserver lbtest HTTP <IP> <Port> -authentication ON -authenticationHost nssp.aaatm.com
**nssp.aaatm.com** – 解析为身份验证虚拟服务器。
re-Captcha 的用户验证
re-Captcha 第二版:
配置 re-Captcha 后,您将看到以下 UI。
  1. 身份验证虚拟服务器加载登录页面后,将显示登录屏幕。在 re-Captcha 完成之前,登录按钮处于禁用状态。
    输入凭据
  2. 选择我不是机器人。re-Captcha 小部件将显示。
    机器人选项
  3. 在显示完成页面之前,您将浏览一系列 re-Captcha 图像。
  4. 输入 AD 凭据,选择我不是机器人,然后单击登录。如果身份验证成功,您将被重定向到所需资源。
    系列图像
    注意:
    • 如果 re-Captcha 与 AD 身份验证一起使用,则凭据的提交按钮在 re-Captcha 完成之前处于禁用状态。
    • re-Captcha 发生在它自己的因素中。因此,任何后续验证(例如 AD)都必须发生在 re-Captcha 的 nextfactor 中。
re-Captcha v3(管理控制台和企业控制台):
配置 re-Captcha v3 后,您会看到以下 UI。
reCaptcha v3 验证
注意:
如果配置了 re-Captcha v3,则当从 Google 服务器收到验证码响应时,登录按钮将启用。当用户单击登录按钮时,仅当 re-Captcha 服务生成的评分在配置的 scoreThreshold 参数范围内时,身份验证才成功。

在 NetScaler 标准许可证中为 nFactor 身份验证创建网关虚拟服务器

  1. 导航到 NetScaler Gateway > 虚拟服务器。
  2. 在 NetScaler Gateway 虚拟服务器页面上,单击添加。
  3. 在VPN 虚拟服务器页面上输入以下详细信息,单击确定,然后单击继续。
    • 名称 - NetScaler Gateway 虚拟服务器的名称
    • 协议 - 选择SSL
    • IP 地址 - NetScaler Gateway 虚拟服务器的 IP 地址
    • 端口 - 输入 443
创建标准许可证虚拟服务器
  1. 在VPN 虚拟服务器页面上,单击身份验证配置文件旁边的加号图标。
  2. 单击 添加 以配置身份验证配置文件。
    配置身份验证配置文件
  3. 输入身份验证配置文件的名称,然后单击 添加。
    输入身份验证配置文件名称
  4. 在 VPN 虚拟服务器 页面上输入以下详细信息,单击 确定,然后单击 继续。
    • 名称 - 身份验证、授权和审计虚拟服务器的名称
    • 协议 - 选择 不可寻址。在 NetScaler Standard 许可证中,只有不可寻址的身份验证、授权和审计虚拟服务器才能绑定到 Gateway/VPN 虚拟服务器。
    标准许可证 VS
    注意:
    • 在 NetScaler Standard 许可证中,创建策略的步骤与 Premium 许可证支持的策略类型相同。
    • NetScaler Standard 许可证不支持在 nFactor 配置中添加新的登录架构。

参考

有关端到端 nFactor 配置示例,请参阅 配置 nFactor 身份验证。