对身份验证的本机 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 功能,请确保满足以下必备条件。
- Citrix ADC 功能发布版本为 12.0 Build 51.24 及更高版本。
- Citrix Gateway 上安装了 Advanced 或 Premium 版许可证。
- Citrix ADC 配置了管理 IP,并且可以使用浏览器和命令行访问管理控制台。
- Citrix ADC 配置了身份验证、授权和审核虚拟服务器以对用户进行身份验证。有关详细信息,请参阅身份验证虚拟服务器
- Citrix ADC 设备配置了 Unified Gateway,并将身份验证、授权和审核配置文件分配给网关虚拟服务器。
- 本机 OTP 解决方案仅限于 nFactor 身份验证流程。配置解决方案需要高级策略。有关更多详细信息,请参阅 配置 nFactor 身份验证。
对于 Active Directory,还要确保以下内容:
- 最小属性长度为 256 个字符。
- 属性类型必须是“DirectoryString”,例如 UserParameters。这些属性可以保存字符串值。
- 如果设备名称使用非英语字符,则属性字符串类型必须为 Unicode。
- Citrix ADC LDAP 管理员必须对所选 AD 属性具有写入权限。
- Citrix ADC 设备和客户端计算机必须同步到通用的网络时间服务器。
使用 GUI 配置本机 OTP
本机 OTP 注册不仅仅是单因素身份验证。以下各部分内容将帮助您配置单因素和第二因素身份验证。
为第一个因素创建登录架构
- 导航到“安全”>“AAA 应用程序流量”>“登录架构”。
- 转到 Profiles(配置文件),然后单击 Add(添加)。
- 在 Create Authentication Login Schema(创建身份验证登录架构)页面上,在 Name(名称)字段下输入 lschema_single_auth_manage_otp,然后单击 noschema 旁边的 Edit(编辑)。
- 单击 LoginSchema 文件夹。
- 向下滚动选择 SingleAuthManageOTP.xml,然后单击“选择”。
- 单击 Create(创建)。
- 单击 Policies(策略),然后单击 Add(添加)。
-
在 Create Authentication Login Schema Policy(创建身份验证登录架构策略)屏幕上,输入以下值。
Name(名称):lpol_single_auth_manage_otp_by_url
Profile(配置文件):从列表中选择 lschema_single_auth_manage_otp。
规则: HTTP.REQ.COOKIE.VALUE(“NSC_TASS”).EQ(“manageotp”)
配置身份验证、授权和审核虚拟服务器
-
导航到 Security(安全)> AAA - Application Traffic(AAA - 应用程序流量)> Authentication Virtual Servers(身份验证虚拟服务器)。单击以编辑现有虚拟服务器。有关详细信息,请参阅身份验证虚拟服务器
- 单击右窗格中 Advanced Settings(高级设置)下的 Login Schemas(登录架构)旁边的 + 图标。
- 选择 No Login Schema(无登录架构)。
- 单击箭头并选择 lpol_single_authe_otp_by_url 策略,单击 选择,然后单击 绑定。
- 向上滚动并选择 Advanced Authentication Policy(高级身份验证策略)下的 1 Authentication Policy(1 身份验证策略)。
- 右键单击 nFactor Policy(nFactor 策略),然后选择 Edit Binding(编辑绑定)。右键单击已配置的 nFactor 策略或参考 nFactor 创建一个策略,然后选择编辑绑定。
- 单击 选择下一个因素 下的箭头以选择现有配置,或单击 添加 以创建因素。
-
在 Create Authentication PolicyLabel(创建身份验证策略标签)屏幕上,输入以下内容,然后单击 Continue(继续):
Name(名称):manage_otp_flow_label
Login Schema(登录架构):Lschema_Int
-
在 Authentication PolicyLabel(身份验证策略标签)屏幕上,单击 Add(添加)以创建策略。
Create a policy for a normal LDAP server.
-
在 Create Authentication Policy(创建身份验证策略)屏幕上,输入以下内容:
名称:auth_pol_ldap_native_otp
- 使用操作类型列表选择”操作类型“为 LDAP。
-
在 Action(操作)字段中,单击 Add(添加)以创建操作。
Create the first LDAP action with authentication enabled to be used for single factor.
-
在“创建身份验证 LDAP 服务器”页面中,选择“服务器 IP”单选按钮,清除“身份验证”旁边的复选框,输入以下值,然后选择“测试连接”。下面是一个示例配置。
名称:ldap_native_otp
IP 地址:192.168.xx.xx
Base DN(基本 DN):DC=training, DC=lab
Administrator(管理员):Administrator@training.lab
密码:
xxxxx
Create a policy for OTP .
-
在 Create Authentication Policy(创建身份验证策略)屏幕上,输入以下内容:
Name(名称):auth_pol_ldap_otp_action
- 使用操作类型列表选择”操作类型“为 LDAP。
-
在 Action(操作)字段中,单击 Add(添加)以创建操作。
Create the second LDAP action to set OTP authenticator with OTP secret configuration and authentication unchecked.
-
在“创建身份验证 LDAP 服务器”页面中,选择“服务器 IP”单选按钮,清除“身份验证”旁边的复选框,输入以下值,然后选择“测试连接”。下面是一个示例配置。
Name(名称):ldap_otp_action
IP 地址:192.168.xx.xx
Base DN(基本 DN):DC=training, DC=lab
Administrator(管理员):Administrator@training.lab
密码:
xxxxx
- 向下滚动到 Other Settings(其他设置)部分。使用下拉菜单选择以下选项。 Server Logon Name Attribute(服务器登录名称属性)为 New(新建),类型为 userprincipalname。
- 使用下拉菜单选择 SSO Name Attribute(SSO 名称属性)为 New(新建),类型为 userprincipalname。
- 在 OTP Secret(OTP 密钥)字段中输入“UserParameters””,然后单击 More(更多)。
-
输入以下属性。
Attribute 1(属性 1)= mail Attribute 2(属性 2)= objectGUID Attribute 3(属性 3)= immutableID
- 单击确定。
- 在 Create Authentication Policy(创建身份验证策略)页面上,将表达式设置为 true,然后单击 Create(创建)。
- 在 Create Authentication Policylabel(创建身份验证策略标签)页面上,单击 Bind(绑定),然后单击 Done(完成)。
- 在 Policy Binding(策略绑定)页面上,单击 Bind(绑定)。
-
在 Authentication policy(身份验证策略)页面上,单击 Close (关闭),然后单击 Done(完成)。
Create OTP for OTP verification.
-
在 Create Authentication Policy(创建身份验证策略)屏幕上,输入以下内容:
名称:auth_pol_ldap_otp_验证
- 使用操作类型列表选择”操作类型“为 LDAP。
-
在 Action(操作)字段中,单击 Add(添加)以创建操作。
Create the third LDAP action to verify OTP.
-
在“创建身份验证 LDAP 服务器”页面中,选择“服务器 IP”单选按钮,清除“身份验证”旁边的复选框,输入以下值,然后选择“测试连接”。下面是一个示例配置。
名称:ldap_verify_otp
IP 地址:192.168.xx.xx
Base DN(基本 DN):DC=training, DC=lab
Administrator(管理员):Administrator@training.lab
密码:
xxxxx
- 向下滚动到 Other Settings(其他设置)部分。使用下拉菜单选择以下选项。 Server Logon Name Attribute(服务器登录名称属性)为 New(新建),类型为 userprincipalname。
- 使用下拉菜单选择 SSO Name Attribute(SSO 名称属性)为 New(新建),类型为 userprincipalname。
- 在 OTP Secret(OTP 密钥)字段中输入“UserParameters””,然后单击 More(更多)。
-
输入以下属性。
Attribute 1(属性 1)= mail Attribute 2(属性 2)= objectGUID Attribute 3(属性 3)= immutableID
- 单击确定。
- 在 Create Authentication Policy(创建身份验证策略)页面上,将表达式设置为 true,然后单击 Create(创建)。
- 在 Create Authentication Policylabel(创建身份验证策略标签)页面上,单击 Bind(绑定),然后单击 Done(完成)。
- 在 Policy Binding(策略绑定)页面上,单击 Bind(绑定)。
- 在 Authentication policy(身份验证策略)页面上,单击 Close (关闭),然后单击 Done(完成)。
您可能还没有普通 LDAP 服务器的高级身份验证策略。 将操作类型更改为 LDAP。 选择普通的 LDAP 服务器,这是启用了身份验证的服务器。 输入 true 作为表达式。这使用默认语法而不是经典语法。 单击“创建”。
注意:
身份验证虚拟服务器必须绑定到 RFWebUI 门户主题。将服务器证书绑定到服务器。服务器 IP“1.2.3.5”必须具有相应的 FQDN,即 otpauth.server.com,以供将来使用。
为第二因素 OTP 创建登录架构
- 导航到 Security(安全)> AAA - Application Traffic(AAA - 应用程序流量)> Virtual Servers(虚拟服务器)。选择要编辑的虚拟服务器。
- 向下滚动并选择 1 Login Schema(1 登录架构)。
- 单击 Add Binding(添加绑定)。
- 在 Policy Binding(策略绑定)部分下,单击 Add(添加)以添加策略。
- 在“创建身份验证登录架构策略”页面上,输入名称并单击“添加”。
- 在“创建身份验证登录架构”页面上,输入名称,然后单击 noschema 旁边的铅笔图标。
- 单击 LoginSchema 文件夹,选择 DualAuthManageOTP.xml,然后单击 Select(选择)。
- 单击 More(更多)并向下滚动。
- 在 Password Credential Index(密码凭据索引)字段中,输入 1。这会导致 nFactor 将用户的密码保存到身份验证、授权和审核 Attribute #1 中,稍后可以在流量策略中使用这些属性来单点登录 StoreFront。如果不执行此操作,Citrix Gateway 将尝试使用通行码向 StoreFront 进行身份验证,但这不起作用。
- 单击 Create(创建)。
- 在 Rule(规则)部分中,输入 True。单击 Create(创建)。
- 单击绑定。
- 请注意身份验证的两个因素。单击 Close(关闭),然后单击 Done(完成)。
单点登录的流量策略
- 导航到 Citrix Gateway> Policies(策略)> Traffic(流量)
- 在 Traffic Profiles(流量配置文件)选项卡中,单击 Add(添加)。
- 输入流量配置文件的名称。
-
向下滚动,在“SSO Password Expression”(SSO 密码表达式)框中,输入以下内容,然后单击 Create(创建)。这是我们使用为第二个因素 OTP 指定的登录架构密码属性的位置。
AAA.USER.ATTRIBUTE(1)
-
在流量策略选项卡上,单击添加。
-
在 Name(名称)字段中,输入流量策略的名称。
-
在 Request Profile(请求配置文件)字段中,选择创建的流量配置文件。
-
在“Expression”(表达式)框中,输入 True。如果 Citrix Gateway 虚拟服务器允许使用完整 VPN,请将表达式更改为以下内容。
http.req.method.eq(post)||http.req.method.eq(get) && false
-
单击 Create(创建)。
-
将流量策略绑定到 VPN 虚拟服务器。
- 导航到安全 > AAA - 应用程序流量 > 身份验证配置文件。
- 通过选择 NetScaler Gateway 虚拟服务器来配置身份验证配置文件,然后单击“确定”。
- 导航到 Citrix Gateway > Citrix Gateway 虚拟服务器,然后选择 NetScaler Gateway 虚拟服务器。出现 VPN 虚拟服务器页面。
- 在“策略”部分中,单击 + 图标。
- 将策略类型选择为“流量”,然后单击“继续”。
- 选择流量策略并单击“绑定”。
- 单击 Done(完成)。
为管理 OTP 配置内容交换策略
如果您使用的是 Unified Gateway,则需要以下配置。
-
导航到 Traffic Management(流量管理)> Content Switching(内容交换)> Policies(策略)。选择内容交换策略,单击鼠标右键,然后选择 Edit(编辑)。
-
编辑表达式以评估以下 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
<!--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>
示例:
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 <!--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
通过 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
为单点登录创建流量策略并将其绑定到 VPN 虚拟服务器
add vpn trafficAction vpn_html_pol http -userExpression aaa.user.attribute(1) -passwdExpression aaa.user.attribute(2)
add vpn trafficpolicy tf1 'http.req.method.eq(post)||http.req.method.eq(get) && false' vpn_html_pol
bind vpn vserver vpn1 -policy tf1 -priority 10
<!--NeedCopy-->
在 Citrix ADC 中注册您的设备
- 在浏览器上,导航到带有 /manageotp 后缀的 Citrix ADC FQDN(第一个面向公众的 IP)。例如,https://otpauth.server.com/manageotp 使用用户凭据登录。
-
单击 + 图标添加设备。
- 输入设备名称,然后按 Go。屏幕上会显示一个条形码。
- 单击 Begin Setup(开始安装),然后单击 Scan Barcode(扫描条形码)。
-
将设备摄像头悬停在 QR 代码上。您可以选择输入代码。
注意:
显示的二维码有效期为 3 分钟。
-
扫描成功后,您将看到一个 6 位数的时间敏感代码,可用于登录。
- 要进行测试,请单击 QR 屏幕上的 Done(完成),然后单击右侧的绿色复选标记。
- 从下拉菜单中选择您的设备,然后输入 Google Authenticator 中的验证码(必须为蓝色,不是红色),然后单击 Go。
- 请务必使用页面右上角的下拉菜单进行注销。
使用 OTP 登录 Citrix ADC
- 导航到您的第一个面向公众的 URL,然后从 Google Authenticator 中输入您的 OTP 进行登录。
-
向 Citrix ADC 启动页面进行身份验证。