电子邮件otp身份验证
电子邮件OTP随Citrix ADC 12.1 Build 51。X引入。通过电子邮件OTP方法,您可以使用发送到已注册的电子邮件地址的一次性密码(OTP)进行身份验证。当您尝试在任何服务上进行身份验证时,服务器会向用户的已注册的电子邮件地址发送otp。
必须首先注册备用电子邮件id,才能使用电子邮件otp功能。需要一个备用电子邮件ID注册,以便能够将OTP发送到该邮件ID,因为如果帐户被锁定或者忘记了广告密码,您将无法访问主电子邮件ID。
如果您已将备用电子邮件ID作为某个广告属性的一部分提供,则可以使用电子邮件OTP验证而无需注册电子邮件ID。可以在电子邮件操作中引用同一属性,而不是在电子邮件地址部分中指定备用电子邮件id。
必备条件
在配置电子邮件otp功能之前,请查看以下必备条件:
- Citrix ADC功能版本12.1 Build 51.28及更高版本
- 电子邮件OTP功能仅在nFactor身份验证流程中可用
- 有关详细信息,请参阅https://support.citrix.com/pages/citrix-adc-authentication-how#nfactor
- 支持AAA-TM, Citrix Gateway(浏览器,本机插件和Receiver)。
Active Directory设置
- 支持的版本为2016/2012和2008 Active Directory域功能级别
- Citrix ADC ldapBind用户名必须具有对用户的AD路径的写入权限
电子邮件服务器
要使用电子邮件otp解决方案,请确保在SMTP服务器上启用了基于登录的身份验证。Citrix ADC仅支持基于身份验证登录的身份验证才能使用电子邮件OTP。
要确保启用基于认证登录的身份验证,请在SMTP服务器上键入以下命令。如果启用了基于登录的身份验证,您将注意到文本认证登录以粗体格式显示在输出中。
限制
- 仅当身份验证后端是ldap时才支持此功能。
- 无法看到已注册的备用电子邮件id。
- 只有“KBA注册”(KBA注册)页面中的备用电子邮件ID无法更新。
- 电子邮件otp身份验证不能成为身份验证流程中的首要因素。这是为了实现强大的身份验证。
- 如果使用相同的身份验证操作配置了备用电子邮件id和kba,则两者的属性必须相同。
- 对于本机插件和接收者,仅支持通过浏览器进行注册。
Active Directory配置
电子邮件OTP使用Active Directory属性作为用户数据存储。
注册备用电子邮件ID后,电子邮件ID将发送到Citrix ADC设备,设备将其存储在广告用户对象中已配置的KB属性中。
备用电子邮件id已加密并存储在配置的AD属性中。
配置AD属性时,请注意以下事项:
- 支持的属性名称长度必须至少为128 个字符。
- 属性类型必须是"目录字符串"。
- 相同的AD属性可用于本机otp和电子邮件otp注册数据。
- Ldap管理员必须对所选AD属性具有写入权限。
使用现有属性
本示例中使用的属性是Userparameters
。由于这是AD用户内的现有属性,因此您无需对AD本身进行任何更改。但是,您必须确保没有使用该属性。
要确保未使用该属性,请导航到ADSI并选择用户,右键单击该用户,然后向下滚动到属性列表。您必须看到UserParameters的属性值为没有设置(未设置)。这表明目前尚未使用该属性。
配置电子邮件otp
电子邮件otp解决方案由以下两部分组成:
- 电子邮件注册
- 电子邮件验证
电子邮件id注册
成功创建kba注册架构后,使用cli执行以下配置:
将门户主题和证书绑定到VPN全局。
bind authentication vserver authvs -portaltheme rfweb bind vpn global -userDataEncryptionKey c1
注意:
加密存储在广告属性中的用户数据(知识库问答和备用邮件ID)注册登记时需要先绑定证书。
创建ldap身份验证策略。
add authentication ldapAction ldap -serverIP 10.102.2.2 -serverPort 636 -ldapBase "dc=aaatm-test,dc=com" -ldapBindDn administrator@aaatm-test.com -ldapBindDnPassword freebsd - ldapbindinname samAccountName -secType SSL add authentication Policy ldap -rule true -action ldap
为电子邮件注册创建ldap身份验证策略。
add authentication ldapAction ldap_email_registration -serverIP 10.102.2.2 -serverPort 636 -ldapBase "dc=aaatm-test,dc=com" -ldapBindDn administrator@aaatm-test.com -ldapBindDnPassword freebsd - ldapbindinname samAccountName -secType SSL -KBAttribute userParameters -alternateEmailAttr userParameters add authentication Policy ldap_email_registration -rule true -action ldap_email_registration
创建电子邮件注册登录架构和策略标签。
add authentication loginSchema onlyEmailRegistration -authenticationSchema /nsconfig/ loginSchema / loginSchema /AltEmailRegister.xml add authentication policylabel email_Registration_factor -loginSchema onlyEmailRegistration bind authentication policylabel email_Registration_factor -policyName ldap_email_registration -priority 1 -gotoPriorityExpression NEXT
将身份验证策略绑定到身份验证虚拟服务器。
绑定认证vserver authvs -policy ldap -priority 1 -nextFactor email_Registration_factor -gotoPriorityExpression NEXT
配置前几节中提到的所有步骤后,必须看到以下GUI屏幕。在通过url(例如.https://lb1.server.com/)访问时,您会看到一个初始登录页面,该页面仅需要ldap登录凭据,然后是备用电子邮件注册页面。
注意:域https://lb1.server.com/可以属于网关或身份验证虚拟服务器。
注意:
您可以对kba注册和电子邮件id注册使用相同的身份验证架构。
配置kba注册时,您可以在“电子邮件注册”部分中选择注册备用电子邮件以注册备用电子邮件id。
电子邮件验证
请执行以下步骤进行电子邮件验证。
将门户主题和证书绑定到VPN全局
bind authentication vserver authvs -portaltheme rfweb bind vpn global -userDataEncryptionKey c1
注意:
要解密存储在AD属性中的用户数据(知识库问答和备用电子邮件id已注册),必须先绑定证书。
创建ldap身份验证策略。LDAP必须是电子邮件验证因素的优先考虑因素,因为您需要用户的电子邮件ID或备用电子邮件ID进行电子邮件OTP验证。
add authentication ldapAction ldap1 - serverip 10.102.2.2 - serverport 636 - ldapbase "dc=aaatm-test,dc=com" -ldapBindDn administrator@aaatm-test.com - ldapbinddnpassword freebsd - ldapbindinname samAccountName - sectype SSL - kbattribute userParameters - alternateemailattr userParameters add authentication Policy ldap1 -rule true -action ldap1
创建电子邮件身份验证策略。
add authentication emailAction email -userName sqladmin@aaa.com -password freebsd-encrypted -encryptmethod ENCMTHD_3 -serverURL "smtps://10.2.3.3:25" -content "OTP is $code" -defaultAuthenticationGroup emailgrp -emailAddress "aaa.user.attribute("alternate_mail")" add authentication Policy email -rule true -action email
在前面提到的命令中,电子邮件地址为kba注册期间提供的备用电子邮件id用户。
创建电子邮件otp验证策略标签。
add authentication policylabel email_Validation_factor bind authentication policylabel email_Validation_factor -policyName email -priority 1 -gotoPriorityExpression NEXT
将身份验证策略绑定到身份验证虚拟服务器。
绑定认证vserver authvs - policy ldap1 -priority 1 - nextfactor email_Validation_factor - gotopriorityexpression NEXT
配置前面各节中提到的所有步骤后,必须看到以下GUI屏幕以进行电子邮件otp验证。在通过url(例如.https://lb1.server.com/)访问时,您会看到一个初始登录页面,该页面仅需要LDAP登录凭据,然后是邮件OTP验证页面。
注意:
在ldap策略中,重要的是要配置
alternateEmailAttr
,以便能够从AD属性中查询用户的电子邮件id。
故障排除
在分析日志之前,最好按如下所示将日志级别设置为调试。
设置syslogparams -loglevel DEBUG
注册-成功场景
以下条目表示成功的用户注册。
"ns_aaa_insert_hash_keyValue_entry key:kba_registered value:1" 11月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 = =“< !——NeedCopy >
注册-失败场景
在用户登录页面上,您会看到以下错误消息:"无法完成您的请求"。这表示要绑定到VPN全局以加密用户数据的证书密钥缺失。
7月31日08:51:46 10.102.229.79 07/31/2020:03:21:46 GMT 0- pe -1: default SSLVPN Message 696 0: "Encrypt UserData: No Encryption cert is bound to vpn global" 7月31日08:51:46 10.102.229.79 07/31/2020:03:21:46 GMT 0- pe -1: default SSLVPN Message 697 0: "KBA Register: Alternate email id Encrypted blob length is ZERO aaauser"
电子邮件验证-成功场景
以下条目表示电子邮件otp验证成功。
"NFactor: Successfully completed email auth, nextfactor is pwd_reset"
电子邮件验证-失败场景
在用户登录页面上,显示“无法完成您的请求”错误消息。这表示电子邮件服务器上未启用基于登录的身份验证,需要启用相同的身份验证。
" /home/build/ rs_130_36_15_rtm /usr.src/netscaler/aaad/pocomail.cpp[100]: void ThreadWorker_SendMailJob(SMTPJob*) 0-215: [POCO][JobID: 8]SMTP Configuration is Secure. "/home/build/ rs_130_36_15_rtm /usr.src/netscaler/aaad/pocomail.cpp[108]: void ThreadWorker_SendMailJob(SMTPJob*) 0-215: [POCO][JobID: 8] First login succeeded Wed Mar 4 17:16:28 2020 /home/build/ rs_130_36_15_rtm /usr.src/netscaler/aaad/naaad.c[697]: main 0-0: timer 2 firing…/home/build/ rs_130_36_15_rtm /usr.src/netscaler/aaad/pocomail.cpp[127]: void ThreadWorker_SendMailJob(SMTPJob*) 0-0: [Poco - error][JobID: 8] Poco SMTP邮件调度失败。SMTP TYPE:1, SMTPException:发生异常。SMTP异常:邮件服务不支持登录认证:250-smtprelay.citrix.com Hello [10.9.154.239] 250- size 62914560 250- pipelining 250- dsn 250- enhancedstatuscodes 250- 8bitmime 250- binarymime 250 CHUNKING