邮件OTP认证
邮件OTP认证
Email OTP是由Citrix ADC 12.1 build 51.x引入的。Email OTP方法支持使用发送到注册邮箱的一次性密码(OTP)进行身份验证。当您尝试在任何服务上进行身份验证时,服务器将向用户的注册电子邮件地址发送OTP。
要使用电子邮件OTP功能,您必须首先注册备用电子邮件ID。需要另一个电子邮件ID注册,以便OTP可以发送到该邮件ID,因为如果帐户锁定或您忘记AD密码,您将无法访问主电子邮件ID。
如果您已经提供了备选电子邮件ID作为某些AD属性的一部分,那么您可以使用电子邮件OTP验证而不需要电子邮件ID注册。您可以在电子邮件操作中引用相同的属性,而不是在电子邮件地址部分指定备用电子邮件ID。
先决条件
在配置邮件OTP特性之前,请先了解以下前提条件:
- Citrix ADC特性发行版12.1版本51.28及以上
- 电子邮件OTP功能仅在nFactor认证流程中可用
- 要了解更多细节,请参见https://support.citrix.com/pages/citrix-adc-authentication-how#nfactor
- 支持AAA-TM、Citrix网关(浏览器、本地插件和接收器)。
活动目录设置
- 支持版本为2016/2012和2008 Active Directory域功能级别
- Citrix ADC ldapBind用户名必须对用户的AD路径有写访问权限
邮件服务器
Email OTP解决方案需要在SMTP服务器上开启基于登录的身份验证。Citrix ADC仅支持基于AUTH LOGIN的身份验证,以便Email OTP工作。
要确保启用基于AUTH LOGIN的身份验证,请在SMTP服务器上键入以下命令。如果启用了基于登录的身份验证,您会注意到文本AUTH login出现在大胆的在输出中。
限制
- 仅当认证后端为LDAP时支持该特性。
- 无法看到已注册的备用电子邮件ID。
- 只有来自KBA注册页面的备用电子邮件ID无法更新。
- 邮件OTP认证不能作为认证流程中的第一个因素。这是为了实现健壮的身份验证而设计的。
- 如果“备用邮件ID”和“KBA”使用相同的认证动作配置,则两者的属性必须相同。
- 对于本机插件和Receiver,只支持通过浏览器注册。
Active Directory配置
Email OTP使用Active Directory属性作为用户数据存储。
注册备用电子邮件ID后,电子邮件ID被发送到Citrix ADC设备,该设备将其存储在AD用户对象中配置的KB属性中。
备用电子邮件ID被加密并存储在配置的AD属性中。
在配置AD属性时,需要考虑以下几点:
- 支持的属性名称长度必须至少为128个字符。
- 属性类型必须是' DirectoryString '。
- 相同的AD属性可用于原生OTP和电子邮件OTP注册数据。
- LDAP管理员必须对所选AD属性具有写访问权限。
使用现有属性
本例中使用的属性是Userparameters
.由于这是AD用户中已有的属性,所以不需要对AD本身进行任何更改。但是,您必须确保没有使用该属性。
要确保该属性没有被使用,请导航到ADSI然后选择user,右键单击用户,向下滚动到属性列表。的属性值UserParameters作为没有设置.这表示该属性目前未被使用。
配置邮件OTP
邮件OTP解决方案由以下两部分组成:
- 电子邮件注册
- 电子邮件验证
电子邮箱注册
KBA注册模式创建成功后,需要在命令行中进行如下配置:
将门户主题和证书绑定到VPN全局。
bind authentication vserver authvs -portaltheme rfweb bind vpn global -userDataEncryptionKey c1
注意:
需要使用前面的证书绑定来加密存储在AD属性中的用户数据(KB问答和备用邮件ID Registered)。
创建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注册和Email ID注册使用相同的身份验证模式。
在配置KBA注册时,可以进行选择注册备用电子邮件在电子邮件注册部分注册一个备用电子邮件ID。
电子邮件验证
执行以下步骤进行电子邮件验证。
将门户主题和证书绑定到VPN全局
bind authentication vserver authvs -portaltheme rfweb bind vpn global -userDataEncryptionKey c1
注意:
需要前面的证书绑定来解密存储在AD属性中的用户数据(KB问答和注册的备用电子邮件ID)。
创建LDAP认证策略。LDAP必须是电子邮件验证因素的优先因素,因为电子邮件OTP验证需要用户的电子邮件ID或备用电子邮件ID。
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
配置了前面小节中提到的所有步骤之后,您必须看到以下EMAIL OTP验证的GUI屏幕。例如,在通过URL访问时,https://lb1.server.com/您将看到一个只需要LDAP登录凭据的初始登录页面,然后是EMAIL 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值:eyj2zxjzaw9uijoimsisicjrawqioiixbk1owjn0t2njlvvvzux6ndrwzfhds01dta9iiwgimtlesi6ilniyw9ovlhknfkthkv2ddcmjsv3pxqxres3qzmwxinuyxq0tysupxd0h4sfridvlwzzjsv3p0tyrzrzmljvrrrmlqc0tmevn2uhplegljc2hmvhzbcgvmzjy5du5iykytyxplqzjmtff1m3jinfvebzjasjdhn1pxufhqbuvrwgdsbjduyzz0qwtqvui3be1fyvzaz0ilcaiaxyioii4rmy3bgrqvzvklvveaxyioii4rmy3bzyi6ikffuzi1nl9hq00ifq ==。oKmvOalaOJ3a9z7BcGCSegNPMw = =“< !——NeedCopy >
注册—失败场景
在用户登录页面上,您看到以下错误消息,“无法完成您的请求”。说明VPN全局绑定用于加密用户数据的cert-key缺失。
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"
电子邮件验证—失败场景
现象描述在用户登录页面提示“Cannot Complete your request”错误信息。说明邮件服务器没有启用基于登录的认证功能,需要启用基于登录的认证功能。
" /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