自助重置密码
自助重置密码是一种基于web的密码管理解决方案。它在Citrix ADC设备和Citrix网关的身份验证、授权和审计特性中都可用。它消除了用户修改密码时对管理员协助的依赖。
在以下场景下,用户可以自助重置密码或创建密码。
- 用户忘记密码。
- 用户无法登录。
到目前为止,如果最终用户忘记了AD密码,最终用户必须联系AD管理员重置密码。使用自助密码重置功能,最终用户可以在不需要管理员干预的情况下重置密码。
以下是使用自助密码重置的一些好处:
- 通过自动修改密码机制提高工作效率,消除了用户等待重置密码的时间。
- 使用自动密码修改机制,管理员可以集中精力完成其他关键任务。
自助重置密码流程如下图所示。
要使用自助服务密码重置,用户必须向Citrix身份验证、授权和审计或Citrix Gateway虚拟服务器注册。
自助重置密码提供以下功能:
- 新用户自我注册。您可以自行注册为新用户。
- 设置基于知识的问题。作为管理员,您可以为用户配置一组问题。
备用电子邮件ID注册。注册时必须提供另一个电子邮件ID。OTP被发送到备用电子邮件ID,因为用户忘记了主电子邮件ID密码。
注意:
从版本12.1 build 51开始。xx,备用电子邮件ID注册可以独立完成。一个新的Loginschema,AltEmailRegister.xml介绍只做备用电子邮件ID注册。以前,只能在进行KBA注册时进行备用电子邮件ID注册。
- 重置忘记的密码。用户可以通过回答基于知识的问题重置密码。作为管理员,您可以配置和存储问题。
自助重置密码提供了以下两种新的身份验证机制:
基于知识的问答。在选择基于知识的问答模式之前,必须注册到Citrix身份验证、授权和审计或注册到Citrix Gateway。
邮件OTP认证。一个OTP被发送到备用电子邮件ID,该用户在自助密码重置注册时已经注册。
请注意
这些身份验证机制可以用于自助密码重置用例,也可以用于类似于任何现有身份验证机制的任何身份验证目的。
先决条件
在配置自助重置密码前,请先检查以下前提条件:
- 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类型,并确保将身份验证虚拟服务器与门户主题绑定。
> add authentication vserver
SSL > bind authentication vserver [-portaltheme ] 绑定SSL虚拟服务器证书-密钥对。
>绑定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 . add authentication vserver authvs SSL 1.2.3.4 443
创建LDAP登录操作
> add authentication ldapAction {-serverIP [-serverPort ] [-ldapBase ] [-ldapBindDn ] [-ldapBindDnPassword ] [- ldploginname ]
请注意
您可以将任何身份验证策略配置为第一个因素。
例子:
> 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 - ldapoginname samAccountName -serverPort 636 -sectype SSL -KBAttribute userParameters
为LDAP登录创建身份验证策略
> add authentication policy [
例子:
> add认证策略ldap_logon -rule true -action ldap_logon_action
创建以知识为基础的问答注册行动
在ldapaction中引入了两个新的参数。“KBAttribute”用于KBA身份验证(注册和验证),“alternateEmailAttr”用于注册用户的备用电子邮件ID。
> add authentication ldapAction {-serverIP [-serverPort ] [-ldapBase ] [-ldapBindDn ] [-ldapBindDnPassword ] [- ldapoginname ] [-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 - ldapoginname samAccountName -KBAttribute userParameters -alternateEmailAttr userParameters
显示用户注册和管理界面
“KBARegistrationSchema.xml”登录模式用于向最终用户显示用户注册页面。使用如下命令行显示登录模式。
> add authentication loginSchema -authenticationSchema .使用实例
例子:
>添加authentication loginSchema kba_register -authenticationSchema /nsconfig/ loginSchema / loginSchema /KBARegistrationSchema.xml
Citrix推荐两种显示用户注册和管理屏幕的方法:URL或LDAP Attribute。
使用URL
如果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 '时,将认证策略绑定到认证、授权和审计虚拟服务器
>添加认证策略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
将证书绑定到VPN全局
绑定vpn global -userDataEncryptionKey
请注意
您必须绑定证书以加密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 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
将认证策略与认证、授权和审计虚拟服务器绑定
绑定认证vserver authvs -policy ldap_logon -nextfactor auth_or_switch_register -priority
用户注册和管理验证
配置了前面小节中提到的所有步骤之后,您应该看到如下所示的UI屏幕截图。
lb vserver URL;例如,https://lb1.server.com.进入登录界面。
输入用户名和密码。点击提交.的用户注册显示界面。
- 从下拉列表中选择首选问题,然后输入回答.
- 点击提交.进入“用户注册成功”界面。
配置用户登录页面
在本例中,管理员假设第一个因素是LDAP登录(最终用户已经忘记了密码)。用户通过知识问答注册和邮件ID OTP验证,最后通过自助密码重置方式重置密码。
您可以使用任何身份验证机制进行自助密码重置。思杰建议使用基于知识的问答和电子邮件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 . SSL 1.2.3.162
在负载均衡中表示后端服务:
> 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 - ldploginname 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 - ldploginname - 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 - ldapoginname samAccountName -KBAttribute userParameters -alternateEmailAttr userParameters -authentication disabled
通过CLI创建基于知识的问答验证的认证策略
增加认证策略kba_validation -rule true -action ldap2
创建电子邮件验证操作
LDAP必须是优先于电子邮件验证的因素,因为您需要用户的电子邮件ID或备用电子邮件ID作为自助密码重置注册的一部分。
注意:
Email OTP解决方案需要在SMTP服务器上启用基于登录的身份验证。
要确保启用了基于登录的身份验证,请在SMTP服务器上键入以下命令。如果启用了基于登录的身份验证,您将注意到文本身份验证登录在输出中以粗体显示。
root@ns# telnet < SMTP服务器的IP地址><服务器端口号> ehlo
例子:
root@ns# telnet 10.106.3.66 25 Trying 10.106.3.66…已连接到10.106.3.66。转义字符是'^]'。22e2k13.nsgsanity.com微软ESMTP邮件服务准备在星期五,2019年11月22日16:24:17 +0530 ehlo 250-E2K13.NSGSanity.com Hello [10.221.41.151] 250- size 37748736 250- pipelining 250- dsn 250- enhancedstatuscodes 250- starttls 250- x - anonymoustls 250- auth LOGIN 250- x - exps GSSAPI NTLM 250- 8bitmime 250- binarymime 250- chunking 250 XRDST
有关如何启用基于登录的身份验证的信息,请参见https://support.microfocus.com/kb/doc.php?id=7020367
.
通过CLI配置邮件动作
add authentication emailAction emailact -userName sender@example.com -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
- 导航到安全> AAA -应用流量>策略>认证>高级策略>动作>认证邮件动作.点击添加.
在创建认证邮件操作页,填写详细信息,然后单击创建.
使用实例通过CLI创建邮件验证的认证策略
添加认证策略email_validation -rule true -action email
为密码重置因子创建认证策略
增加认证策略ldap_pwd -rule true -action ldap_logon_action
通过登录模式呈现UI
有三种用于自助密码重置的LoginSchema来重置密码。使用以下CLI命令查看三种Login Schema:
root@ns# cd /nsconfig/loginschema/ loginschema/ root@ns# ls -ltr | grep -i password -r——r——r——1 nobody wheel 2088 11月13日08:38 SingleAuthPasswordResetRem.xml -r——r——r——1 nobody wheel 1541 11月13日08:38 OnlyUsernamePasswordReset.xml -r——r——1 nobody wheel 1391 11月13日08:38 onypassword .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验证,最后是密码重置页面。
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用户注册的最多六个问题和答案中的两个问题。
回答问题后,单击登录.显示电子邮件OTP验证屏幕,您必须输入注册备用电子邮件ID上收到的OTP。
输入邮件OTP。邮件OTP验证成功后,进入密码重置界面。
输入新密码和确认新密码。点击提交.密码重置成功后,进入“密码重置成功”界面。
您现在可以使用重置密码登录。
故障排除
Citrix提供了一个选项来排除您在使用自助密码重置时可能遇到的一些基本问题。以下部分将帮助您解决特定领域中可能出现的一些问题。
NS记录
在分析日志之前,建议使用如下命令将日志级别设置为debug:
> set 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- ppp -1: default SSLVPN Message 1588 0:"ns_aaa_insert_hash_keyValue_entry key:alternate_mail value: eyj2zxjzaw9uijoimsisicjjlvqioiixbk1owjn0t2njlvvvzux6ndrwzfhxds01dta9iiwgimtlesi6ilniyw9ovlhknfhuqthkvv2ddcmjsv3pxqzres3qzmwxinuyxq0tysupxd0h4sfrizlwzjrrtjtm0ziyy1rzmlqc0tmevn2uhplegljc2hmvhzbcgvmzjy5du5iykytyxplqzjmtff1m3jinfvebzjasjdzz0qwtqvui3be1fyvnpexhnn1dsrkzxewtnovvnogppqvvzvklvvebhv4iiwgimfszyi6ikffuzi1nlhq00ifq ==.oKmvOalaOJ3a9z7BcGCSegNPMw=="
基于知识的问答验证
下面的消息表示基于知识的问题和答案验证成功。
“NFactor:成功完成KBA验证,nextfactor是电子邮件”
邮件ID验证
以下信息表示密码重置成功。
"NFactor:成功完成电子邮件认证,nextfactor是pwd_reset"
使用nFactor visualizer配置SSPR
在我们开始SSPR配置之前,我们需要添加以下LDAP服务器:
标准LDAP服务器,启用用户身份验证并指定AD属性。
LDAP服务器用于提取用户参数,不需要认证。
LDAP服务器的密码重置SSL没有认证。此外,需要在此服务器中定义用于存储用户详细信息的AD属性。
用于用户注册的LDAP服务器,启用身份验证,并指定AD属性
完整流程如下所示:
使用CLI命令全局绑定证书:
bind vpn global -userDataEncryptionKey通配符
添加了LDAP服务器之后,使用visualizer继续进行nFactor配置
导航到,安全> AAA >应用流量> nFactor可视化> nFactor流,点击添加然后点击框内的加号图标。
给流一个名称。
点击添加模式,它将作为默认模式。点击添加登录模式页面。
在给模式命名之后,选择模式,如下所示。点击选择在要选择的模式的右上角。
点击创建并点击好吧.
一旦添加了默认的Schema,那么我们必须配置以下三个流:
- 用户注册:用于显式用户注册
- 密码重置:用于密码重置
- 正常登录+注册用户检查:如果用户已经注册,并且输入了正确的密码,则该用户将成功登录。如果用户没有注册,它将带用户到注册页面。
用户注册
让我们从添加模式之后离开的地方继续。
点击添加政策,这将检查用户是否试图显式注册。
点击创建然后点击添加.
单击突出显示的绿色“+”图标,将下一个身份验证因素添加到用户注册流程。
点击创建.
点击添加政策为用户注册-1因素。
创建认证策略。此策略提取用户信息并在将其重定向到注册页面之前对其进行验证。
点击创建然后点击添加.
现在点击绿色的“+”图标,为用户注册创建另一个因素,然后点击创建.点击添加模式.
创建以下模式。
点击添加政策并创建以下身份验证策略。
点击创建并点击添加.
密码重置
单击蓝色“+”图标,为父SSPR因素添加另一个策略(密码重置流)。
点击添加并创建下面的身份验证策略。如果用户在登录页面单击“忘记密码”,将触发该策略。
点击创建并点击添加.
单击密码重置身份验证策略的绿色“+”图标,以添加另一个因素。
点击创建.
点击添加政策为上面创建的因素创建身份验证策略。这个因素将用于验证用户。
点击创建并点击添加.
单击绿色的“+”图标,为密码因素流添加另一个因素,这将验证为重置密码提供的答案。点击创建.
点击添加政策为因子添加身份验证策略。
从前面创建的下拉菜单中选择相同的身份验证策略,然后单击添加.
正常登录+注册用户检查
单击蓝色的“+”图标,将另一个身份验证策略(正常登录流)添加到父SSPR因素。
点击添加,为正常用户登录创建如下认证策略。
点击创建点击添加.
点击上面创建的策略的绿色“+”图标,添加另一个因素,即决策块。点击创建.
点击创建.
点击添加政策为该决策因素创建身份验证策略。
点击创建然后单击添加.这将检查用户是否已注册。
单击绿色的“+”图标,将用户指向注册策略。
在下拉菜单中选择注册因子,单击创建.
现在点击蓝色的“+”图标添加另一个策略到决策块,这个策略将为注册用户结束认证。
点击添加政策要创建下面的身份验证策略。
点击创建并点击添加.