自助服务密码重置

自助服务密码重置是一种基于 Web 的密码管理解决方案。它可用于 Citrix ADC 设备和 CitCitrix Gateway 的身份验证、授权和审核功能。它消除了用户对管理员协助更改密码的依赖。

自助服务密码重置使最终用户能够在以下情况下安全地重置或创建密码:

  • 用户忘记了密码。
  • 用户无法登录。

到目前为止,如果最终用户忘记了 AD 密码,则最终用户必须联系 AD 管理员以重置密码。通过自助服务密码重置功能,最终用户可以在无需管理员干预的情况下重置密码。

下面是使用自助服务密码重置的一些好处:

  • 通过自动更改密码机制提高工作效率,从而消除了用户等待密码重置和解锁帐户的准备时间。
  • 通过自动更改密码机制,管理员可以专注于其他关键任务。

下图说明了重置密码的自助服务密码重置流程。

本地化后的图片

要使用自助服务密码重置,必须使用 Citrix 身份验证、授权和审核或 Citrix Gateway 虚拟服务器注册用户。

自助服务密码重置提供以下功能:

  • 新用户自动注册。您可以自行注册为新用户。
  • 配置基于知识的问题。作为管理员,您可以为用户配置一组问题。
  • 备用电子邮件 ID 注册。您必须在注册时提供备用电子邮件 ID。OTP 被发送到备用电子邮件 ID,因为用户忘记了主电子邮件 ID 密码。

    注意:

    从版本 12.1 Build 51.xx 起,备用电子邮件 ID 注册可以作为独立完成。引入了一个新的登录模式,AltEmailRegister.xml 只执行备用电子邮件 ID 注册。以前,备用电子邮件 ID 注册只能在进行 KBA 注册时完成。

  • 重置忘记的密码。用户可以通过回答基于知识的问题来重置密码。作为管理员,您可以配置和存储问题。

自助服务密码重置提供了以下两种新的身份验证机制:

  • 基于知识的问题和答案。在选择基于知识的问答架构之前,必须注册到 Citrix 身份验证、授权和审核或 Citrix Gateway。

  • 电子邮件 OTP 身份验证。OTP 会发送到用户在自助服务密码重置注册期间注册的备用电子邮件 ID。

注意

这些身份验证机制可用于自助服务密码重置用例,也可用于与任何现有身份验证机制类似的任何身份验证目的。

必备条件

在配置自助服务密码重置之前,请查看以下必备条件:

  • Citrix ADC 功能版本 12.1 Build 50.28。
  • 支持的版本为 2016、2012 和 2008 AD 域功能级别。
  • 绑定到 Citrix ADC 的 LdapBind 用户名需要具有对用户 AD 路径的写入权限。

    注意

    仅在 nFactor 身份验证流中支持自助服务密码重置。有关详细信息,请参阅通过 Citrix ADC 进行的 nFactor 身份验证

限制

下面是自助服务密码重置的一些限制:

  • 仅当身份验证后端为 LDAP 时,自助服务密码重置才可用。
  • 用户无法看到已注册的备用电子邮件 ID。
  • 以知识为基础的问答以及电子邮件 OTP 身份验证和注册不能成为身份验证流程的第一个因素。
  • 对于本机插件和 Receiver,仅支持通过浏览器进行注册。
  • 用于自助服务密码重置的最小证书大小为 1024 字节,且必须遵循 x.509 标准。

活动目录设置

Citrix ADC 基于知识的问题和答案以及电子邮件 OTP 使用 AD 属性存储用户数据。您必须配置 AD 属性以存储问题和答案以及备用电子邮件 ID。Citrix ADC 设备将其存储在 AD 用户对象中的配置 KB 属性中。配置 AD 属性时,请考虑以下事项:

  • 属性长度必须至少为 128 个字符。
  • AD 属性必须支持最大长度的 32k 值。
  • 属性类型必须是“目录字符串”。
  • 单个 AD 属性可用于基于知识的问题和答案以及备用电子邮件 ID。
  • 单个 AD 属性不能用于原生 OTP 和基于知识的问答或备用电子邮件 ID 注册。
  • Citrix ADC LDAP 管理员必须具有对所选 AD 属性的写入权限。

您还可以使用现有 AD 属性。但是,请确保您计划使用的属性不用于其他情况。例如,用户参数是 AD 用户中可以使用的现有属性。要验证此属性,请执行以下步骤:

  1. 导航至 ADSI > 选择用户
  2. 右键单击并向下滚动至属性列表。
  3. CN=testuser Properties 窗口窗格中,您可以看到未设置 userParameters 属性。

本地化后的图片

自助服务密码重置注册

要在 Citrix ADC 设备上实施自助服务密码重置解决方案,您必须执行以下操作:

  • 自助服务密码重置(以知识为基础的问答/电子邮件 ID)注册。
  • 用户登录页面(用于密码重置,其中包括基于知识的问答和电子邮件 OTP 验证和最终密码重置因素)。

一组预定义的问题目录作为 JSON 文件提供。作为管理员,您可以选择问题并通过 Citrix ADC GUI 创建自助服务密码重置注册登录架构。您可以选择以下任一选项:

  • 最多选择四个系统定义的问题。
  • 为用户提供自定义两个问题和答案的选项。

从 CLI 查看默认基于知识的问题 JSON 文件

本地化后的图片

注意

Citrix Gateway 默认包含一组系统定义的问题。管理员可以编辑“KBTess.json”文件以包含他们选择的问题。

使用 GUI 完成知识型问题和答案注册登录架构

  1. 导航到安全 > AAA-应用程序流量 > 登录架构

    本地化后的图片

  2. 登录架构页上,单击配置文件
  3. 单击添加 KBA 注册登录架构
  4. 在“创建身份验证登录架构”页上,在“架构名称”字段中指定名称。

    本地化后的图片

    本地化后的图片

  5. 选择您选择的问题并将其移动到“已配置”列表。

  6. 用户定义的问题部分,您可以在 Q1 和 A1 字段中提供问题和答案。

    本地化后的图片

  7. 电子邮件注册部分,选中注册备用电子邮件选项。您可以从用户注册登录页面注册备用电子邮件 ID 以接收 OTP。

    本地化后的图片

  8. 单击创建。生成登录架构后,会在注册过程中向最终用户显示所有已配置的问题。

使用 CLI 创建用户注册和管理工作流

在开始配置之前,需要以下内容:

  • 分配给身份验证虚拟服务器的 IP 地址
  • 与分配的 IP 地址对应的 FQDN
  • 身份验证虚拟服务器的服务器证书

要设置设备注册和管理页面,您需要身份验证虚拟服务器。下图说明了用户注册。

本地化后的图片

创建身份验证虚拟服务器

  1. 配置身份验证虚拟服务器。它必须是 SSL 类型,并确保将身份验证虚拟服务器与门户主题绑定。

    > add authentication vserver <vServerName> SSL <ipaddress> <port>
    > bind authentication vserver <vServerName> [-portaltheme<string>]
    
  2. 绑定 SSL 虚拟服务器证书-密钥对。

    > bind ssl vserver <vServerName> certkeyName <string>
    

    示例:

    > add authentication vserver authvs SSL 1.2.3.4 443
    > bind authentication vserver authvs -portaltheme RFWebUI
    > bind ssl vserver authvs -certkeyname c1
    

创建 LDAP 登录操作

> add authentication ldapAction <name> {-serverIP <ipaddr|ipv6_addr|> [-serverPort <port>] [-ldapBase <BASE> ] [-ldapBindDn <AD USER>] [-ldapBindDnPassword <PASSWORD>] [-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 samAccountName -serverport 636 -sectype SSL -KBAttribute userParameters

为 LDAP 登录创建身份验证策略

> add authentication policy <name> <rule> [<reqAction]

示例

> add authentication policy ldap_logon -rule true -action ldap_logon_action

创建以知识为基础的问答注册操作

在 ldapaction 中引入了两个新参数。用于 KBA 身份验证(注册和验证)的“KBaton”和用于注册用户备用电子邮件 ID 的“替代邮件”。

> add authentication ldapAction <name> {-serverIP  <ipaddr|ipv6_addr|> [-serverPort <port>] [-ldapBase <BASE> ] [-ldapBindDn <AD USER>] [-ldapBindDnPassword <PASSWORD>] [-ldapLoginName <USER FORMAT>] [-KBAttribute <LDAP ATTRIBUTE>] [-alternateEmailAttr <LDAP ATTRIBUTE>]

示例

> add authentication ldapAction ldap1 -serverIP 1.2.3.4 -sectype ssl -serverPort 636 -ldapBase "OU=Users,DC=server,DC=com" -ldapBindDn administrator@ctxnsdev.com -ldapBindDnPassword PASSWORD -ldapLoginName samAccountName -KBAttribute userParameters -alternateEmailAttr userParameters

显示用户注册和管理画面

“KBA 注册架构”登录架构用于向最终用户显示用户注册页面。使用以下 CLI 显示登录架构。

> add authentication loginSchema <name> -authenticationSchema <string>

示例

> add authentication loginSchema kba_register -authenticationSchema /nsconfig/loginschema/LoginSchema/KBARegistrationSchema.xml

Citrix 推荐两种显示用户注册和管理屏幕的方法:URL 或 LDAP 属性。

使用网址

如果 URL 路径包含“/register”(例如 https://lb1.server.com/register),则使用 URL 显示用户注册页面。

创建和绑定注册策略

> add authentication policylabel user_registration -loginSchema kba_register
> add authentication policy ldap1 -rule true -action ldap1
> bind authentication policylabel user_registration -policy ldap1 -priority 1

当 URL 包含“/register”时,将身份验证策略绑定到身份验证、授权和审核虚拟服务器

> add authentication policy ldap_logon -rule "http.req.cookie.value(\"NSC_TASS\").contains(\"register\")" -action ldap_logon
> bind authentication vserver authvs -policy ldap_logon -nextfactor user_registration -priority 1

将证书绑定到 VPN 全局

bind vpn global -userDataEncryptionKey c1

注意

您必须绑定证书才能加密 AD 属性中存储的用户数据(知识库问答和注册的备用电子邮件 ID)。

使用属性

您可以将身份验证策略绑定到身份验证、授权和审核虚拟服务器,以检查用户是否已注册。在此流程中,以知识为基础的问答注册因素之前的任何前面的策略都需要是 LDAP,并配置了 KbaContany。这是为了检查 AD 用户是否已注册或未使用 AD 属性。

重要

规则“AAA.USER.ATTRIBUTE(“kba_registered”).EQ(“0”)”强制新用户注册以知识为基础的问题和答案以及备用电子邮件。

创建身份验证策略以检查用户是否尚未注册

> add authentication policy switch_to_kba_register -rule "AAA.USER.ATTRIBUTE(\"kba_registered\").EQ(\"0\")" -action NO_AUTHN
> add authentication policy first_time_login_forced_kba_registration -rule true -action ldap1

创建注册策略标签并绑定到 LDAP 注册策略

> add authentication policylabel auth_or_switch_register -loginSchema LSCHEMA_INT
> add authentication policylabel kba_registration -loginSchema kba_register

> bind authentication policylabel auth_or_switch_register -policy switch_to_kba_register -priority 1 -nextFactor kba_registration
> bind authentication policylabel kba_registration -policy first_time_login_forced_kba_registration -priority 1

将身份验证策略绑定到身份验证、授权和审核虚拟服务器

bind authentication vserver authvs -policy ldap_logon -nextfactor auth_or_switch_register -priority 2

用户注册和管理验证

配置了前面部分中提到的所有步骤后,您应该看到下面显示的 UI 屏幕截图。

  1. 输入 lb vserver URL;例如,https://lb1.server.com。将显示登录屏幕。

    本地化后的图片

  2. 输入用户名和密码。单击 Submit(提交)。将显示“用户注册”屏幕。

    本地化后的图片

  3. 从下拉列表中选择首选问题并输入答案
  4. 单击 Submit(提交)。显示用户注册成功屏幕。

配置用户登录页面

在此示例中,管理员假定第一个因素是 LDAP 登录(最终用户忘记了密码)。然后用户按照基于知识的问答注册和电子邮件 ID OTP 验证,最后使用自助服务密码重置重置密码。

您可以使用任何身份验证机制来重置自助服务密码。Citrix 建议使用基于知识的问题和答案,并通过电子邮件发送 OTP 或两者兼容,以实现强大的隐私,并避免任何非法用户密码重置。

在开始配置用户登录页面之前,需要执行以下操作:

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

使用 CLI 创建负载平衡器虚拟服务器

要访问内部网站,您必须创建一个 LB 虚拟服务器来前置后端服务,并将身份验证逻辑委派给身份验证虚拟服务器。

> add lb vserver lb1 SSL 1.2.3.162 443 -persistenceType NONE -cltTimeout 180 -AuthenticationHost otpauth.server.com -Authentication ON -authnVsName authvs

> bind ssl vserver lb1 -certkeyname c1

要在负载平衡中表示后端服务,请执行以下操作:

> add service iis_backendsso_server_com 1.2.3.4 HTTP 80

> bind lb vserver lb1 iis_backendsso_server_com

创建禁用身份验证的 LDAP 操作作为第一个策略

> add authentication ldapAction ldap3 -serverIP 1.2.3.4 -serverPort 636 -ldapBase "OU=Users,DC=server,DC=com" -ldapBindDn administrator@ctxnsdev.com -ldapBindDnPassword PASSWORD -ldapLoginName samAccountName -authentication disabled

> add authentication policy ldap3 -rule aaa.LOGIN.VALUE("passwdreset").EQ("1") -action ldap3

创建基于知识的问答验证操作

对于自助服务密码重置流程中的基于知识的问答验证,您需要在禁用身份验证的情况下配置 LDAP 服务器。

> add authentication ldapAction <LDAP ACTION NAME> -serverIP <SERVER IP> -serverPort <SERVER PORT> -ldapBase <BASE> -ldapBindDn <AD USER> -ldapBindDnPassword <PASSWORD> -ldapLoginName <USER FORMAT> -KBAttribute  <LDAP ATTRIBUTE> - alternateEmailAttr <LDAP ATTRIBUTE> -authentication DISABLED

示例

> add authentication ldapAction ldap2 -serverIP 1.2.3.4 -serverPort 636 -ldapBase "OU=Users,DC=server,DC=com" -ldapBindDn administrator@ctxnsdev.com -ldapBindDnPassword PASSWORD -ldapLoginName samAccountName -KBAttribute userParameters -alternateEmailAttr userParameters -authentication disabled

使用 CLI 为基于知识的问答验证创建身份验证策略

添加身份验证策略 kba_验证-规则真实-操作 ldap2

创建电子邮件验证操作

LDAP 必须是电子邮件验证因素,因为您需要用户的电子邮件 ID 或备用电子邮件 ID 作为自助服务密码重置注册的一部分。

使用 CLI 配置电子邮件操作

add authentication emailAction emailact -userName sender@example.com -password <Password> -serverURL "smtps://smtp.example.com:25" -content "OTP is $code"

示例:

add authentication emailAction email -userName testmail@gmail.com -password 298a34b1a1b7626cd5902bbb416d04076e5ac4f357532e949db94c0534832670 -encrypted -encryptmethod ENCMTHD_3 -serverURL "smtps://10.19.164.57:25" -content "OTP is $code" -emailAddress "aaa.user.attribute(\"alternate_mail\")"

注意

配置中的“emailAddress”参数是 PI 表达式。因此,配置为从会话中获取默认用户电子邮件 ID 或已注册的备用电子邮件 ID。

使用 GUI 配置电子邮件 ID

  1. 导航到安全 > AAA-应用程序流量 > 策略 > 身份验证 > 高级策略 > 操作 > 身份验证电子邮件操作。单击添加
  2. 在“创建身份验证电子邮件操作”页上,填写详细信息,然后单击“创建”。

    本地化后的图片

使用 CLI 创建用于电子邮件验证的身份验证策略

添加身份验证策略电子邮件 _ 验证-规则真实-操作电子邮件

为密码重置因素创建身份验证策略

添加身份验证策略 Ldap_pwd-规则真实-操作

通过登录模式呈现 UI

有三个登录模式用于自助服务密码重置以重置密码。使用以下 CLI 命令查看三个登录架构:

root@ns# cd  /nsconfig/loginschema/LoginSchema/
root@ns# ls -ltr | grep -i password
-r--r--r--  1 nobody  wheel  2088 Nov 13 08:38 SingleAuthPasswordResetRem.xml
-r--r--r--  1 nobody  wheel  1541 Nov 13 08:38 OnlyUsernamePasswordReset.xml
-r--r--r--  1 nobody  wheel  1391 Nov 13 08:38 OnlyPassword.xml

使用 CLI 创建单个身份验证密码重置

> add authentication loginSchema lschema_password_reset -authenticationSchema "/nsconfig/loginschema/LoginSchema/SingleAuthPasswordResetRem.xml"

> add authentication loginSchemaPolicy lpol_password_reset -rule true -action lschema_password_reset

通过策略标签创建基于知识的问答,并通过电子邮件发送 OTP 验证系数

如果第一个因素是 LDAP 登录,则可以使用以下命令创建基于知识的问题和答案,并为下一个因素通过电子邮件发送 OTP 策略标签。

> add authentication loginSchema lschema_noschema -authenticationSchema noschema

> add authentication policylabel kba_validation -loginSchema lschema_noschema

> add authentication policylabel email_validation -loginSchema lschema_noschema

通过策略标签创建密码重置因素

您可以使用以下命令通过策略标签创建密码重置因素。

> add authentication loginSchema lschema_noschema -authenticationSchema noschema

> add authentication policylabel password_reset -loginSchema lschema_noschema

> bind authentication policylabel password_reset -policyName ldap_pwd -priority 10 -gotoPriorityExpression NEXT

使用以下命令将基于知识的问题和答案以及电子邮件策略绑定到之前创建的策略。

> bind authentication policylabel email_validation -policyName email_validation -nextfactor password_reset -priority 10 -gotoPriorityExpression NEXT

> bind authentication policylabel kba_validation -policyName kba_validation -nextfactor email_validation -priority 10 -gotoPriorityExpression NEXT

绑定流

必须在 LDAP 登录的身份验证策略下创建 LDAP 登录流。在这个流程中,用户单击第一个 LDAP 登录页面上显示的忘记密码链接,然后是 KBA 验证,然后是 OTP 验证,最后是密码重置页面。

绑定身份验证 v服务器authvs-策略 ldap3-下一个因素 kba_ 验证-优先级 10-Gotopriity 表达式下一步

绑定所有 UI 流

绑定身份验证虚拟服务器验证与策略 lpol_密码重置-优先级 20-优先级表达式结束

重置密码的用户登录工作流

下面是用户登录工作流,如果用户需要重置密码:

  1. 输入 lb vserver URL;例如,https://lb1.server.com。将显示登录屏幕。

    本地化后的图片

  2. 单击忘记密码。验证屏幕显示针对 AD 用户注册的六个问题和答案中的两个问题。

    本地化后的图片

  3. 回答问题,然后单击登录。将显示一个电子邮件 OTP 验证屏幕,您必须在其中输入已注册的备用电子邮件 ID 收到的 OTP。

    本地化后的图片

  4. 输入电子邮件 OTP。电子邮件 OTP 验证成功后,将显示密码重置页面。

    本地化后的图片

  5. 输入新密码并确认新密码。单击 Submit(提交)。密码重置成功后,将显示密码重置成功屏幕。

    本地化后的图片

您现在可以使用重置密码登录。

故障排除

Citrix 提供了一个选项,用于解决您在使用自助服务密码重置时可能遇到的一些基本问题。以下部分可帮助您解决特定区域中可能出现的一些问题。

NS 日志

在分析日志之前,建议使用以下命令设置日志级别以进行调试:

> set syslogparams -loglevel DEBUG

注册

以下消息表明用户注册成功。

"ns_aaa_insert_hash_keyValue_entry key:kba_registered value:1"
Nov 14 23:35:51 <local0.debug> 10.102.229.76 11/14/2018:18:05:51 GMT  0-PPE-1 : default SSLVPN Message 1588 0 :  "ns_aaa_insert_hash_keyValue_entry key:alternate_mail value:eyJ2ZXJzaW9uIjoiMSIsICJraWQiOiIxbk1oWjN0T2NjLVVvZUx6NDRwZFhxdS01dTA9IiwgImtleSI6IlNiYW9OVlhKNFhUQThKV2dDcmJSV3pxQzRES3QzMWxINUYxQ0tySUpXd0h4SFRIdVlWZjBRRTJtM0ZiYy1RZmlQc0tMeVN2UHpleGlJc2hmVHZBcGVMZjY5dU5iYkYtYXplQzJMTFF1M3JINFVEbzJaSjdhN1pXUFhqbUVrWGdsbjdUYzZ0QWtqWHdQVUI3bE1FYVNpeXhNN1dsRkZXeWtNOVVnOGpPQVdxaz0iLCAiaXYiOiI4RmY3bGRQVzVKLVVEbHV4IiwgImFsZyI6IkFFUzI1Nl9HQ00ifQ==.oKmvOalaOJ3a9z7BcGCSegNPMw=="

基于知识的问答验证

以下消息表明成功的基于知识的问答验证。

“nFactor: 已成功完成 KBA 验证,下一个因素是电子邮件”

电子邮件编号验证

以下消息表示成功重置密码。

“nFactor: 已成功完成电子邮件身份验证,下一个因素是 pwd_reset”