Gateway

对身份验证的本机 OTP 支持

Citrix Gateway 支持一次性密码 (OTP),而无需使用第三方服务器。一次性密码是用于进行身份验证以保护服务器安全的高度安全选项,因为生成的数字或通行码是随机的。以前,专业公司(例如具有生成随机数的特定设备的 RSA)向 OTP 提供。此系统必须与客户端保持持续通信,才能生成服务器所期望的数字。

除了降低资本和运营费用外,此功能还通过将整个配置保留在 Citrix ADC 设备上,增强了管理员的控制能力。

注意:

由于不再需要第三方服务器,Citrix ADC 管理员必须配置界面来管理和验证用户设备。

用户必须在 Citrix Gateway 虚拟服务器上注册才能使用 OTP 解决方案。每台唯一设备只需注册一次,并且可以仅限于某些环境。配置和验证注册用户类似于配置额外的身份验证策略。

原生 OTP 支持的优势

  • 除 Active Directory 外,无需在身份验证服务器上安装额外的基础结构即可降低运营成本。
  • 请仅将配置整合到 Citrix ADC 设备,从而为管理员提供强大的控制能力。
  • 客户端不需要依赖额外的身份验证服务器即可生成客户端所期望的数字。

本机 OTP 工作流程

本机 OTP 解决方案是一个双重过程,工作流程分为以下内容:

  • 设备注册
  • 最终用户登录

重要: 如果您使用的是第三方解决方案或管理除 Citrix ADC 设备以外的其他设备,则可以跳过注册过程。您添加的最后一个字符串必须采用 Citrix ADC 指定的格式。

下图描述了注册新设备以接收 OTP 的设备注册流程。

OTP 工作流程

注意:

设备注册可以使用任意数量的因素来完成。使用单个因素(如上图所示)作为示例来解释设备注册过程。

下图描述了通过注册的设备验证 OTP 的情况。

OTP 验证工作流程

必备条件

要使用本机 OTP 功能,请确保满足以下必备条件。

  • Citrix ADC 功能发布版本为 12.0 Build 51.24 及更高版本。
  • Citrix Gateway 上安装了 Advanced 或 Premium 版许可证。
  • Citrix Gateway 配置了管理 IP,并且可以使用浏览器和命令行访问管理控制台。
  • Citrix ADC 配置了身份验证、授权和审核虚拟服务器以对用户进行身份验证。
  • Citrix ADC 设备配置了 Unified Gateway,并将身份验证、授权和审核配置文件分配给网关虚拟服务器。
  • 本机 OTP 解决方案仅限于 nFactor 身份验证流程。配置解决方案需要高级策略。有关更多详细信息,请参阅文章 CTX222713

对于 Active Directory,还要确保以下内容:

  • 最小属性长度为 256 个字符。
  • 属性类型必须是“DirectoryString”,例如 UserParameters。这些属性可以保存字符串值。
  • 如果设备名称使用非英语字符,则属性字符串类型必须为 Unicode。
  • Citrix ADC LDAP 管理员必须对所选 AD 属性具有写入权限。
  • Citrix ADC 设备和客户端计算机必须同步到通用的网络时间服务器。

使用 GUI 配置本机 OTP

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

为第一个因素创建登录架构

  1. 导航到 Security AAA(安全 AAA)> Application Traffic(应用程序流量)> Login Schema(登录架构)
  2. 转到 Profiles(配置文件),然后单击 Add(添加)。
  3. Create Authentication Login Schema(创建身份验证登录架构)页面上,在 Name(名称)字段下输入 lschema_single_auth_manage_otp,然后单击 noschema 旁边的 Edit(编辑)。
  4. 单击 LoginSchema 文件夹。
  5. 向下滚动以选择 SingleAuth.xml,然后单击 Select(选择)。
  6. 单击创建
  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. 导航到 Security(安全)> AAA - Application Traffic(AAA - 应用程序流量)> Authentication Virtual Servers(身份验证虚拟服务器)。单击以编辑现有虚拟服务器。
  2. 单击右窗格中 Advanced Settings(高级设置)下的 Login Schemas(登录架构)旁边的 + 图标。
  3. 选择“无登录架构”。
  4. 单击箭头,然后选择 lpol_single_auth_manage_otp_by_url 策略。
  5. 选择 lpol_single_auth_manage_otp_by_url 策略,然后单击选择
  6. 单击绑定
  7. 向上滚动并选择 Advanced Authentication Policy(高级身份验证策略)下的 1 Authentication Policy(1 身份验证策略)。
  8. 右键单击 nFactor Policy(nFactor 策略),然后选择 Edit Binding(编辑绑定)。
  9. 单击 Select Next Factor(选择下一个因素)下显示的 + 图标,创建下一个因素,然后单击 Bind(绑定)。
  10. Create AuthenticationPolicyLabel(创建身份验证)屏幕上,输入以下内容,然后单击 Continue(继续):

    Name(名称):manage_otp_flow_label

    Login Schema(登录架构):Lschema_Int

  11. Authentication PolicyLabel(身份验证策略标签)屏幕上,单击 + 图标以创建策略。

  12. 创建身份验证策略 屏幕上,输入以下内容:

    Name(名称):auth_pol_ldap_otp_action

  13. 使用 Action Type(操作类型)列表选择操作类型。
  14. Action(操作)字段中,单击 + 图标以创建操作。
  15. 在“创建身份验证 LDAP 服务器”页中,选择“服务器 IP”单选按钮,取消选中“身份验证”旁边的复选框,输入以下值,然后选择“测试连接”。

    Name(名称):ldap_otp_action

    IP Address(IP 地址):192.168.10.11

    Base DN(基本 DN):DC=training, DC=lab

    Administrator(管理员):Administrator@training.lab

    密码xxxxx

  16. 向下滚动到 Other Settings(其他设置)部分。使用下拉菜单选择以下选项。 Server Logon Name Attribute(服务器登录名称属性)为 New(新建),类型为 userprincipalname
  17. 使用下拉菜单选择 SSO Name Attribute(SSO 名称属性)为 New(新建),类型为 userprincipalname
  18. OTP Secret(OTP 密钥)字段中输入“UserParameters”,然后单击 More(更多)。
  19. 输入以下属性。

    Attribute 1(属性 1)= mail Attribute 2(属性 2)= objectGUID Attribute 3(属性 3)= immutableID

  20. 单击确定
  21. Create Authentication Policy(创建身份验证策略)页面上,将表达式设置为 true,然后单击 Create(创建)。
  22. Create Authentication Policylabel(创建身份验证策略标签)页面上,单击 Bind(绑定),然后单击 Done(完成)。
  23. Policy Binding(策略绑定)页面上,单击 Bind(绑定)。
  24. Authentication policy(身份验证策略)页面上,单击 Close (关闭),然后单击 Done(完成)。

注意:

身份验证虚拟服务器必须绑定到 RFWebUI 门户主题。将服务器证书绑定到服务器。服务器 IP“1.2.3.5”必须具有相应的 FQDN,即 otpauth.server.com,以供将来使用。

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

  1. 导航到 Security(安全)> AAA - Application Traffic(AAA - 应用程序流量)> Virtual Servers(虚拟服务器)。选择要编辑的虚拟服务器。
  2. 向下滚动并选择 1 Login Schema(1 登录架构)。
  3. 单击 Add Binding(添加绑定)。
  4. Policy Binding(策略绑定)部分下,单击 + 图标以添加策略。
  5. Create Authentication Login Schema Policy(创建身份验证登录架构策略)页面上,输入“Name”(名称)为 OTP,然后单击 + 图标以创建配置文件。
  6. Create Authentication Login Schema(创建身份验证登录架构)页面上,输入“Name”(名称)为 OTP,然后单击 noschema 旁边的图标。
  7. 单击 LoginSchema 文件夹,选择 DualAuthManageOTP.xml,然后单击 Select(选择)。
  8. 单击创建
  9. Rule(规则)部分中,输入 True。单击创建
  10. 单击绑定
  11. 请注意身份验证的两个因素。单击 Close(关闭),然后单击 Done(完成)。

为管理 OTP 配置内容交换策略

如果您使用的是 Unified Gateway,则需要以下配置。

  1. 导航到 Traffic Management(流量管理)> Content Switching(内容交换)> Policies(策略)。选择内容交换策略,单击鼠标右键,然后选择 Edit(编辑)。

  2. 编辑表达式以评估以下 OR 语句,然后单击 OK(确定):

is_vpn_url

使用 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
<!--NeedCopy-->

注意:

身份验证虚拟服务器必须绑定到 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>
<!--NeedCopy-->

示例

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
<!--NeedCopy-->

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

add authentication Policy auth_pol_ldap_logon -rule true -action ldap_logon_action
<!--NeedCopy-->

通过 LoginSchema 显示 UI

登录时向用户显示用户名字段和密码字段

add authentication loginSchema lschema_single_auth_manage_otp -authenticationSchema "/nsconfig/loginschema/LoginSchema/SingleAuthManageOTP.xml"
<!--NeedCopy-->

显示设备注册和管理页面

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 配置用户登录页面

必须具有以下信息才能配置“User Logon”(用户登录)页面:

  • 负载平衡虚拟服务器的 IP
  • 负载平衡虚拟服务器的对应 FQDN
  • 负载平衡虚拟服务器的服务器证书

     bind ssl vserver lbvs_https -certkeyname lbvs_server_cert
     <!--NeedCopy-->
    

负载平衡中的后端服务表示如下:

add service iis_backendsso_server_com 1.2.3.210 HTTP 80
bind lb vserver lbvs_https iis_backendsso_server_com
<!--NeedCopy-->

创建 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>
<!--NeedCopy-->

示例:

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
<!--NeedCopy-->

重要:

LDAP 登录和 OTP 操作之间的区别在于需要禁用身份验证并引入新参数 OTPSecret。请勿使用 AD 属性值。

为 OTP 通行码验证添加身份验证策略

add authentication Policy auth_pol_otp_validation -rule true -action ldap_otp_action
<!--NeedCopy-->

通过 LoginSchema 显示双重身份验证

添加面向双重身份验证的 UI。

add authentication loginSchema lscheme_dual_factor -authenticationSchema "/nsconfig/loginschema/LoginSchema/DualAuth.xml"
add authentication loginSchemaPolicy lpol_dual_factor -rule true -action lscheme_dual_factor
<!--NeedCopy-->

通过策略标签创建通行码验证因素

为下一个因素创建管理 OTP 流程策略标签(第一个因素为 LDAP 登录)

add authentication loginSchema lschema_noschema -authenticationSchema noschema
add authentication policylabel manage_otp_flow_label -loginSchema lschema_noschema
<!--NeedCopy-->

将 OTP 策略绑定到策略标签

bind authentication policylabel manage_otp_flow_label -policyName  auth_pol_otp_validation -priority 10 -gotoPriorityExpression NEXT
<!--NeedCopy-->

绑定 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
<!--NeedCopy-->

在 Citrix ADC 中注册您的设备

  1. 导航到带有 /manageotp 后缀的 Citrix ADC FQDN(第一个面向公众的 IP)。例如,https://otpauth.server.com/manageotp 使用用户凭据登录。
  2. 单击 + 图标添加设备。

    网关登录页面

  3. 输入设备名称,然后按 Go。屏幕上会显示一个条形码。
  4. 单击 Begin Setup(开始安装),然后单击 Scan Barcode(扫描条形码)。
  5. 将设备摄像头悬停在 QR 代码上。您可以选择输入代码。

    QR 代码

    注意:

    显示的二维码有效期为 3 分钟。

  6. 扫描成功后,您将看到一个 6 位数的时间敏感代码,可用于登录。

    登录成功消息

  7. 要进行测试,请单击 QR 屏幕上的 Done(完成),然后单击右侧的绿色复选标记。
  8. 从下拉菜单中选择您的设备,然后输入 Google Authenticator 中的验证码(必须为蓝色,不是红色),然后单击 Go
  9. 请务必使用页面右上角的下拉菜单进行注销。

使用 OTP 登录 Citrix ADC

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

    ADC 身份验证页面

对身份验证的本机 OTP 支持