自助密码重置
自助密码重置是一种基于web的密码管理解决方案。它可以在Citrix ADC设备和Citrix Gateway的认证、授权和审计特性中使用。它消除了用户在修改密码时对管理员协助的依赖。
自助密码重置为终端用户提供在以下场景下安全重置或创建密码的能力:
- 用户忘记密码。
- 用户无法登录。
到目前为止,如果最终用户忘记了AD密码,则必须联系AD管理员重置密码。具有自助密码重置功能,终端用户无需管理员干预即可重置密码。
以下是使用自助密码重置的一些好处:
- 通过自动密码更改机制提高工作效率,消除了用户等待密码重置的前置时间。
- 有了密码自动修改机制,管理员可以专注于其他关键任务。
自助密码重置流程如下图所示。
用户需要在Citrix认证、授权、审计或Citrix网关虚拟服务器上进行注册,才能使用自助密码重置功能。
自助密码重置功能包括:
- 新用户self-registration。您可以自行注册为新用户。
- 配置知识的问题。作为管理员,您可以为用户配置一组问题。
- 备用电子邮件ID注册。您必须在注册时提供一个备用的电子邮件ID。由于用户忘记了主邮箱ID的密码,OTP被发送到备用邮箱ID。
注意:从12.1版本构建51开始。xx,备用电子邮件ID注册可以独立完成。一个新的Loginschema,AltEmailRegister.xml只做备用电子邮件ID注册。在此之前,只有在办理KBA注册时才能办理替代邮箱ID注册。
- 重置忘记密码。用户可以通过回答知识问答的方式重置密码。作为管理员,您可以配置和存储问题。
自助密码重置提供了以下两种新的认证机制:
基于知识的问答。在选择基于知识的问答模式之前,您必须向Citrix认证、授权和审计或Citrix Gateway注册。
电子邮件OTP身份验证。用户在自助密码重置注册时注册的备用邮箱ID会收到一封OTP。
请注意
这些身份验证机制可以用于自助密码重置用例,以及类似于任何现有身份验证机制的任何身份验证目的。
先决条件
在配置自助密码重置前,请注意以下前提条件:
- Citrix ADC特性发布版12.1,构建版50.28。
- AD域功能级别支持2016、2012、2008版本。
- 与Citrix ADC绑定的ldapBind用户名需要对用户AD路径具有写访问权限。
请注意
仅nFactor认证流程支持自助重置密码。有关更多信息,请参见通过Citrix ADC进行nFactor认证.
限制
以下是自助密码重置的一些限制:
- 只有认证后端为LDAP时,才支持自助密码重置。
- 用户无法看到已经注册的备用电子邮件ID。
- 基于知识的问答和电子邮件OTP认证和注册不能成为认证流程中的首要因素。
- 对于本机插件和接收器,只支持通过浏览器注册。
- 用于自助密码重置的最小证书大小为1024字节,必须遵循x.509标准。
活动目录设置
Citrix ADC知识问答、电子邮件OTP采用AD属性存储用户数据。必须配置AD属性以存储问题和答案以及备用电子邮件ID。Citrix ADC设备将其存储在AD用户对象中配置的KB属性中。在配置AD属性时,需要考虑以下几点:
- 长度至少为128个字符。
- AD属性必须支持32k的最大长度。
- 属性类型必须是' DirectoryString '。
- 单一的AD属性可以用于基于知识的问答和替代电子邮件ID。
- 单个AD属性不能用于本机OTP和基于知识的问答或替代电子邮件ID注册。
- Citrix ADC LDAP管理员必须具有对所选AD属性的写访问权限。
也可以使用已有的AD属性。但是,请确保您计划使用的属性没有用于其他情况。例如,userParameters是可以使用的AD用户中的一个现有属性。要验证该属性,请执行以下步骤:
- 导航到ADSI >选择用户.
- 右键单击并向下滚动到属性列表。
- 在CN = testuser属性窗口窗格,您可以看到userParameters属性未设置。
自助密码重置注册
要在Citrix ADC设备上实现自助密码重置解决方案,您必须执行以下操作:
- 自助密码重置(知识问答/邮箱ID)注册。
- 用户登录页面(密码重置,包括基于知识的问答和电子邮件OTP验证和最终的密码重置因素)。
一组预定义的问题目录以JSON文件的形式提供。作为管理员,您可以通过Citrix ADC GUI选择问题并创建自助密码重置注册登录模式。您可以选择以下任一选项:
- 系统定义问题最多选择4个。
- 为用户提供一个选项来定制两个问题和答案。
从CLI中查看默认的基于知识的问题JSON文件
请注意
Citrix Gateway默认包含一组系统定义的问题。管理员可以编辑“KBQuestions”。Json文件来包含他们选择的问题。
系统定义的问题仅以英语显示,这些问题无法获得语言本地化支持。
使用GUI完成基于知识的问答注册登录模式
导航到安全> AAA -应用流量>登录模式.
- 在登录模式页面,点击配置文件.
- 点击添加KBA注册登录模式.
在创建认证登录模式页中指定名称模式名字段。
选择您选择的问题,并将其移动到配置列表。
在用户定义的问题部分中,您可以在Q1和A1字段中提供问题和答案。
在电子邮件注册部分,检查备用电子邮件注册选择。你可以注册备用电子邮件ID从用户注册登录页面接收OTP。
- 点击创建.一旦生成登录模式,将在注册过程中向最终用户显示所有配置的问题。
使用CLI命令创建用户注册和管理工作流程
在开始配置前,需要完成以下准备工作:
- 分配给认证虚拟服务器的IP地址
- 分配的IP地址对应的FQDN
- 用于认证虚拟服务器的服务器证书
设置设备注册管理界面时,需要配置认证虚拟服务器。下图说明了用户注册。
创建认证虚拟服务器
配置认证虚拟服务器。它的类型必须是SSL,并确保将身份验证虚拟服务器与门户主题绑定。
添加认证vserver
SSL >绑定认证vserver [-portaltheme ] 绑定SSL虚拟服务器证书-密钥对。
> bind ssl vserver
certkeyName 例子:
> 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 {-serverIP [-serverPort ] [-ldapBase ] [-ldapBindDn ] [-ldapBindDnPassword ] [- ldapploginname ]
请注意
可以配置任何身份验证策略作为第一个因素。
例子:
> 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 - ldploginname samAccountName -serverPort 636 -sectype SSL -KBAttribute userParameters
创建LDAP登录的认证策略
添加认证策略 [
例子:
>添加认证策略ldap_logon -rule true -action ldap_logon_action
创建基于知识的问答注册动作
在ldapaction中引入了两个新参数。“KBAttribute”用于KBA认证(注册和验证),“alternateEmailAttr”用于注册用户的备用电子邮件ID。
> add authentication ldapAction {-serverIP [-serverPort ] [-ldapBase ] [-ldapBindDn ] [-ldapBindDnPassword ] [- ldploginname ] [-KBAttribute ] [-alternateEmailAttr ]
例子:
> 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 - ldapploginname samAccountName -KBAttribute userParameters -alternateEmailAttr userParameters
显示用户注册和管理界面
“KBARegistrationSchema.xml”登录模式用于向最终用户显示用户注册页面。使用下面的命令行显示登录模式。
添加认证loginSchema -authenticationSchema
例子:
>添加认证loginSchema kba_register -authenticationSchema /nsconfig/ loginSchema / loginSchema /KBARegistrationSchema.xml
Citrix推荐两种显示用户注册和管理屏幕的方法:URL或LDAP属性。
使用URL
如果URL路径包含' /register '(例如:https://lb1.server.com/register),则使用URL显示用户注册页面。
创建并绑定注册策略
> add认证policylabel user_registration -loginSchema kba_register > add认证策略ldap1 -rule true -action ldap1 > bind认证policylabel user_registration -policy ldap1 -priority 1
当URL包含' /register '时,将认证策略绑定到认证、授权和审计虚拟服务器。
添加认证策略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全局绑定证书
绑定vpn global -userDataEncryptionKey c1
请注意
必须绑定证书,以加密存储在AD属性中的用户数据(KB问答和注册备用邮箱ID)。
使用属性
通过将认证策略与认证、授权和审计虚拟服务器绑定,可以检查用户是否已注册。在此流程中,在基于知识的问答注册因子之前的任何策略都需要是配置了kba属性的LDAP。检查AD用户是否已注册或未使用AD属性。
重要的
规则" AAA.USER.ATTRIBUTE(" kba_registered "). eq(" 0 ") "强制新用户注册基于知识的问题和回答以及备用电子邮件。
创建认证策略,检查用户是否尚未注册
添加认证策略switch_to_kba_register -rule "AAA.USER.ATTRIBUTE(\"kba_registered\").EQ(\"0\")"-action NO_AUTHN > add认证策略first_time_login_forced_kba_registration -rule true -action ldap1
创建注册策略标签,并绑定LDAP注册策略
> add认证policylabel auth_or_switch_register -loginSchema LSCHEMA_INT > add认证policylabel kba_registration -loginSchema kba_register > bind认证policylabel auth_or_switch_register -policy switch_to_kba_register -priority 1 -nextFactor kba_registration > bind认证policylabel kba_registration -policy first_time_login_forced_kba_registration -priority 1
将认证策略绑定到虚拟服务器的认证、授权和审计
绑定认证vserver authvs -policy ldap_logon -nextfactor auth_or_switch_register -priority 2
用户注册和管理验证
配置完前面提到的所有步骤后,应该会看到如下所示的UI屏幕截图。
输入lb vserver URL;例如,https://lb1.server.com.进入登录界面。
2 .输入用户名和密码。点击提交.的用户注册屏幕显示。
- 从下拉列表中选择首选问题,并输入回答.
- 点击提交.进入用户注册成功界面。
配置用户登录页面
在本例中,管理员假设第一个因素是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 - ldapploginname samAccountName -authentication disabled > add authentication policy ldap3 -rule aaa.LOGIN.VALUE("passwdreset").EQ("1") -action ldap3
创建基于知识的问答验证行动
在自助密码重置流程中,基于知识的问答验证需要配置LDAP服务器,禁用认证。
> add authentication ldapAction - serverip - serverport - ldapbase - ldapbinddn - ldapbinddnpassword - ldapploginname - kbattribute - alternateEmailAttr -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 - ldploginname samAccountName -KBAttribute userParameters -alternateEmailAttr userParameters -关闭认证
使用CLI为基于知识的问答验证创建身份验证策略
添加认证策略kba_validation -rule true -action ldap2
创建电子邮件验证操作
LDAP必须是先于电子邮件验证的因素,因为您需要用户的电子邮件ID或备用电子邮件ID作为自助服务密码重置注册的一部分。
使用命令行方式配置邮件动作
添加认证emailAction emailact -userName sender@example.com -password <密码> -serverURL "smtps://smtp.example.com:25" -content "OTP是$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
- 导航到安全> AAA -应用流量>策略>认证>高级策略>动作>认证邮件动作.点击添加.
在创建认证邮件动作页,填写详细信息,然后单击创建.
使用CLI命令创建邮件验证的认证策略
添加认证策略email_validation -rule true -action email
创建密码重置因子的认证策略
添加认证策略ldap_pwd -rule true -action ldap_logon_action
通过登录模式呈现UI
有三个用于自助密码重置的LoginSchema来重置密码。可以通过以下命令查看三种登录模式:
root@ns# cd /nsconfig/loginschema/ loginschema/ root@ns# ls -ltr | grep -i password -r——r——r——1 nobody wheel 2088 Nov 13 08:38 singleauthpasswordresetre .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 loginSchemaPolicy lpol_password_reset -rule true -action lschema_password_reset -authenticationSchema "/nsconfig/ loginSchema / loginSchema / singleauthpassworddresetre .xml
通过策略标签创建基于知识的问答和电子邮件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
使用以下命令将基于知识的问答策略和电子邮件策略与前面创建的策略绑定。
>绑定认证policylabel kba_validation -policyName email_validation -nextfactor email_validation -priority 10 -gotoPriorityExpression NEXT >绑定认证policylabel kba_validation -policyName kba_validation -nextfactor email_validation -priority 10 -gotoPriorityExpression NEXT
结合流
您必须在LDAP logon的身份验证策略下创建LDAP登录流程。在这个流程中,用户单击第一个LDAP登录页面上显示的忘记密码链接,然后是KBA验证,然后是OTP验证,最后是密码重置页面。
bind authentication vserver authvs -policy ldap3 -nextfactor kba_validation -priority 10 -gotoPriorityExpression NEXT
绑定所有UI流
bind authentication vserver authvs -policy lpol_password_reset -priority 20 -gotoPriorityExpression结束
重置密码的用户登录流程
如果需要重置密码,用户登录流程如下:
输入lb vserver URL;例如,https://lb1.server.com.进入登录界面。
点击忘记了密码.验证屏幕显示针对AD用户注册的最多6个问题和答案中的两个问题。
回答问题后,单击登录.系统弹出“电子邮件OTP验证”界面,您必须输入通过已注册的备用电子邮件ID收到的OTP。
输入邮件OTP。电子邮件OTP验证成功后,将显示密码重置页面。
输入新密码并确认新密码。点击提交.密码重置成功后,显示“密码重置成功”界面。
您现在可以使用重置密码登录。
故障排除
Citrix提供了一个选项来解决在使用自助密码重置时可能遇到的一些基本问题。下面的部分将帮助您排除特定领域中可能发生的一些问题。
NS记录
在分析日志之前,建议使用如下命令将日志级别设置为debug:
>设置syslogparams -loglevel DEBUG
登记
以下消息表示用户注册成功。
"ns_aaa_insert_hash_keyValue_entry key:kba_registered value:1" Nov 14 23:35:51 10.102.229.76 11/14/2018:18:05:51 GMT 0- pe -1: default SSLVPN Message 1588 0:“ns_aaa_insert_hash_keyValue_entry关键:alternate_mail值:eyJ2ZXJzaW9uIjoiMSIsICJraWQiOiIxbk1oWjN0T2NjLVVvZUx6NDRwZFhxdS01dTA9IiwgImtleSI6IlNiYW9OVlhKNFhUQThKV2dDcmJSV3pxQzRES3QzMWxINUYxQ0tySUpXd0h4SFRIdVlWZjBRRTJtM0ZiYy1RZmlQc0tMeVN2UHpleGlJc2hmVHZBcGVMZjY5dU5iYkYtYXplQzJMTFF1M3JINFVEbzJaSjdhN1pXUFhqbUVrWGdsbjdUYzZ0QWtqWHdQVUI3bE1FYVNpeXhNN1dsRkZXeWtNOVVnOGpPQVdxaz0iLCAiaXYiOiI4RmY3bGRQVzVKLVVEbHV4IiwgImFsZyI6IkFFUzI1Nl9HQ00ifQ = = .oKmvOalaOJ3a9z7BcGCSegNPMw = = "
基于知识的问答验证
下面的消息表示基于知识的问题和答案验证成功。
“NFactor:成功完成KBA验证,下一个因素是电子邮件”
电子邮件ID验证
显示如下信息,表示密码重置成功。
"NFactor:成功完成邮件认证,nextfactor是pwd_reset"