Citrix ADC

对身份验证的本机 OTP 支持

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

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

注意

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

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

拥有本地 OTP 支持的优势

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

本机 OTP 工作流程

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

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

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

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

OTP 工作流程

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

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

OTP 验证工作流程

下图描述了设备注册和管理流程。

设备注册和管理

下图描述了本机 OTP 功能的最终用户流程。

最终用户工作流程

必备条件

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

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

对于 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. Create Authentication Login Schema Policy(创建身份验证登录架构策略)屏幕上,输入以下值。

    Name(名称):lpol_single_auth_manage_otp_by_url

    Profile(配置文件):从列表中选择 lschema_single_auth_manage_otp。

    Rule(规则):HTTP.REQ.COOKIE.VALUE(“NSC_TASS”).EQ(“manageotp”)

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

  1. 导航到 Security(安全)> AAA - Application Traffic(AAA - 应用程序流量)> Authentication Virtual Servers(身份验证虚拟服务器)。 单击以编辑现有虚拟服务器。有关更多信息,请参阅 AAA

  2. 单击右窗格中 Advanced Settings(高级设置)下的 Login Schemas(登录架构)旁边的 + 图标。
  3. 选择 No Login Schema(无登录架构)。
  4. 单击箭头并选择 lpol_single_authe_otp_by_url 策略,单击 选择,然后单击 绑定
  5. 向上滚动并选择 Advanced Authentication Policy(高级身份验证策略)下的 1 Authentication Policy(1 身份验证策略)。
  6. 右键单击 nFactor Policy(nFactor 策略),然后选择 Edit Binding(编辑绑定)。右键单击已配置的 nFactor 策略或参考 nFactor 创建一个策略,然后选择编辑绑定。
  7. 单击 Select Next Factor(选择下一个因素)下的箭头以选择现有配置,或者单击 Add(添加)创建新因素。
  8. Create Authentication PolicyLabel(创建身份验证策略标签)屏幕上,输入以下内容,然后单击 Continue(继续):

    Name(名称):manage_otp_flow_label

    Login Schema(登录架构):Lschema_Int

  9. Authentication PolicyLabel(身份验证策略标签)屏幕上,单击 Add(添加)以创建策略。

    Create a policy for a normal LDAP server.

  10. Create Authentication Policy(创建身份验证策略)屏幕上,输入以下内容:

    名称:auth_pol_ldap_native_otp

  11. 使用操作类型列表选择”操作类型“为 LDAP
  12. Action(操作)字段中,单击 Add(添加)以创建操作。

    Create the first LDAP action with authentication enabled to be used for single factor.

  13. Create Authentication LDAP server(创建身份验证 LDAP 服务器)页面中,选择 Server IP(服务器 IP)单选按钮,取消选中 Authentication(身份验证)旁边的复选框,输入以下值,然后选择 Test Connection(测试连接)。下面是一个示例配置。

    名称:ldap_native_otp

    IP 地址:192.168.xx.xx

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

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

    Password(密码):xxxxx

    Create a policy for OTP .

  14. Create Authentication Policy(创建身份验证策略)屏幕上,输入以下内容:

    Name(名称):auth_pol_ldap_otp_action

  15. 使用操作类型列表选择”操作类型“为 LDAP
  16. Action(操作)字段中,单击 Add(添加)以创建操作。

    Create the second LDAP action to set OTP authenticator with OTP secret configuration and authentication unchecked.

  17. Create Authentication LDAP server(创建身份验证 LDAP 服务器)页面中,选择 Server IP(服务器 IP)单选按钮,取消选中 Authentication(身份验证)旁边的复选框,输入以下值,然后选择 Test Connection(测试连接)。下面是一个示例配置。

    Name(名称):ldap_otp_action

    IP 地址:192.168.xx.xx

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

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

    Password(密码):xxxxx

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

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

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

    Create OTP for OTP verification.

  27. Create Authentication Policy(创建身份验证策略)屏幕上,输入以下内容:

    名称:auth_pol_ldap_otp_验证

  28. 使用操作类型列表选择”操作类型“为 LDAP
  29. Action(操作)字段中,单击 Add(添加)以创建操作。

    Create the third LDAP action to verify OTP.

  30. Create Authentication LDAP server(创建身份验证 LDAP 服务器)页面中,选择 Server IP(服务器 IP)单选按钮,取消选中 Authentication(身份验证)旁边的复选框,输入以下值,然后选择 Test Connection(测试连接)。下面是一个示例配置。

    名称:ldap_verify_otp

    IP 地址:192.168.xx.xx

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

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

    Password(密码):xxxxx

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

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

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

您可能还没有普通 LDAP 服务器的高级身份验证策略。 将操作类型更改为 LDAP。 选择普通的 LDAP 服务器,这是启用了身份验证的服务器。 输入 true 作为表达式。这使用默认语法而不是经典语法。 单击创建。

注意

身份验证虚拟服务器必须绑定到 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(策略绑定)部分下,单击 Add(添加)以添加策略。
  5. Create Authentication Login Schema Policy(创建身份验证登录架构策略)页面上,输入“Name”(名称)为 OTP,然后单击 Add(添加)以创建配置文件。
  6. Create Authentication Login Schema(创建身份验证登录架构)页面上,输入“Name”(名称)为 OTP,然后单击 noschema 旁边的铅笔图标。
  7. 单击 LoginSchema 文件夹,选择 DualAuthManageOTP.xml,然后单击 Select(选择)。
  8. 单击 More(更多)并向下滚动。
  9. Password Credential Index(密码凭据索引)字段中,输入 1。这会导致 nFactor 将用户的密码保存到 AAA 属性 #1 中,稍后可以在单点登录到 StoreFront 的流量策略中使用该密码。如果不执行此操作,Citrix Gateway 将尝试使用通行码向 StoreFront 进行身份验证,但这不起作用。
  10. 单击创建
  11. Rule(规则)部分中,输入 True。单击创建
  12. 单击 Bind(绑定)。
  13. 请注意身份验证的两个因素。单击 Close(关闭),然后单击 Done(完成)。

单点登录的流量策略

  1. 导航到 Citrix Gateway > Policies(策略)> Traffic(流量)
  2. Traffic Profiles(流量配置文件)选项卡中,单击 Add(添加)。
  3. 输入 OTP 的流量配置文件的名称。
  4. 向下滚动,在“SSO Password Expression”(SSO 密码表达式)框中,输入以下内容,然后单击 Create(创建)。这是我们使用为第二个因素 OTP 指定的登录架构密码属性的位置。

    http.REQ.USER.ATTRIBUTE(1)

  5. Traffic Policies(流量策略)选项卡上,单击 Add(添加)。

  6. Name(名称)字段中,输入流量策略的名称。

  7. Request Profile(请求配置文件)字段中,选择创建的流量配置文件。

  8. 在“Expression”(表达式)框中,输入 True。如果 Citrix Gateway 虚拟服务器允许使用完整 VPN,请将表达式更改为以下内容。

    http.req.method.eq(post)||http.req.method.eq(get) && false

  9. 单击创建

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

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

  • 负载平衡虚拟服务器的 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 显示双重身份验证

添加面向双重身份验证的 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

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

为下一个因素创建管理 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

在 Citrix ADC 中注册您的设备

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

    网关登录页面

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

    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 身份验证页面