Citrix ADC

电子邮件OTP身份验证

Email OTP是与Citrix ADC 12.1 build 51.x一起引入的。通过Email OTP方式,您可以使用发送到注册邮箱的一次性密码(OTP)进行身份验证。当您尝试在任何服务上进行身份验证时,服务器将向用户的注册电子邮件地址发送一个OTP。

要使用电子邮件OTP功能,您必须首先注册您的备用电子邮件ID。需要一个替代的电子邮件ID注册,以便OTP可以发送到该邮件ID,因为如果您的帐户被锁定或忘记了AD密码,您将无法访问主电子邮件ID。

您可以使用电子邮件OTP验证而不需要注册电子邮件ID,如果您已经提供了备用电子邮件ID作为某些AD属性的一部分。您可以在电子邮件操作中引用相同的属性,而不是在电子邮件地址部分指定备用电子邮件ID。

先决条件

配置Email OTP特性前,请先了解以下前提条件:

Active Directory设置

  • 支持的版本为2016/2012和2008 Active Directory域功能级别
  • “Citrix ADC ldapBind”用户名必须对用户的AD路径有写访问权

邮件服务器

  • 为了使Email OTP解决方案生效,请确保SMTP服务器上启用了基于登录的身份验证。Citrix ADC只支持基于认证登录的电子邮件OTP工作。

  • 为了确保启用基于身份验证的登录,在SMTP服务器上输入以下命令。如果启用了基于登录的身份验证,您会注意到出现文本AUTH login大胆的在输出。

在SMTP服务器上启用基于身份验证的登录

限制

  • 当认证后端类型为LDAP时,才支持该特性。
  • 已经无法看到已注册的备用电子邮件ID。
  • 只能更新来自KBA注册页面的备用电子邮件ID。
  • KBA和Email OTP认证和注册不能成为认证流程中的首要因素。这是为了实现健壮的身份验证。
  • 如果使用相同的认证LDAP动作,则必须为KBA和Alternate email ID配置相同的AD属性。
  • 对于本机插件和Receiver,仅通过浏览器支持注册。

活动目录的配置

  • Email OTP使用Active Directory属性作为用户数据存储。

  • 注册备用电子邮件ID后,它们被发送到Citrix ADC设备,该设备将其存储在AD用户对象中配置的KB属性中。

  • 备用电子邮件ID被加密并存储在配置的AD属性中。

配置AD属性时,请考虑以下几点:

  • 支持的属性名长度必须至少为128个字符。
  • 属性类型必须为' DirectoryString '。
  • 相同的AD属性可以用于本机OTP和KBA注册数据。
  • LDAP管理员必须对选定的AD属性具有写访问权限。

使用现有的属性

本例中使用的属性是' Userparameters '。由于这是AD用户中已有的属性,因此不需要对AD本身进行任何更改。但是,必须确保没有使用该属性。

要确保未使用属性,请导航到ADSI然后选择user,右键单击该用户,向下滚动到属性列表。必须查看的属性值UserParameters作为没有设置.这表示该属性目前未被使用。

广告属性设置

配置电子邮件OTP

电子邮件OTP解决方案包含以下两部分:

  • 电子邮件注册
  • 电子邮件验证

电子邮件注册

有两种方法可以注册用户的备用电子邮件ID:

  1. 以及KBA注册
  2. 只有电子邮件ID注册-这个方法从13.0 build 61支持。x及以上;12.1构建58。x和。

与KBA注册一起

KBA登记LoginSchema

  1. 导航安全> AAA -应用流量>登录模式>配置文件并点击添加KBA注册LoginSchema

    KBA注册登录模式

  2. 配置KBA注册身份验证架构。此LoginSchema生成后显示在注册过程中为最终用户配置的所有问题。在电子邮件注册部分,勾选“注册备用电子邮件”选项以注册用户的备用电子邮件ID。

    身份验证登录模式

    用户定义的问题

  3. 在电子邮件注册部分,检查备用电子邮件注册注册备用电子邮件ID。

    备用电子邮件注册

在上述KBA注册模式创建成功后,请使用CLI命令提示符进行以下配置。

  1. 绑定门户主题和证书到VPN全局。

    bind authentication vserver authvs -portaltheme rfweb bind vpn global -userDataEncryptionKey c1 

    笔记:

    上述证书绑定需要对AD属性中存储的用户数据(KB Q&A和注册的备用email ID)进行加密

  2. 创建LDAP认证策略。

    添加身份验证ldapaction ldap -serverip 10.102.2.2 -serverport 636 -ldapbase“dc = aaatm-test,dc = com”-ldapbinddn管理员--ldapbinddnpassword freebsd -ldaploginname samaccountname -sectype ssl添加身份验证策略ldap -rule true-action ldap <! -  callcopy  - >
  3. 创建KBA注册Loginschema和PolicyLabel。

    add authentication loginSchema Registrationschema -authenticationSchema /nsconfig/ loginSchema / loginSchema /KBARegistrationSchema.xml[这是在前一节中创建的身份验证模式。add authentication policylabel Registrationfactor -loginSchema Registrationschema add authentication ldapAction ldap_registration -serverIP 10.102.2.2 -serverPort 636 -ldapBase "dc=aaatm-test,dc=com" -ldapBindDn administrator@aaatm-test.com -ldapBindDnPassword freebsd - ldapploginname samAccountName -secType SSL -KBAttribute userParameters-alternateEmailAttr userParameters add authentication Policy ldap_registration -rule true -action ldap_registration绑定认证policylabel Registrationfactor -policyName ldap_registration -priority 1 -gotoPriorityExpression NEXT 
  4. 绑定认证策略到认证虚拟服务器。

    绑定认证vserver authvs - policy ldap -priority 1 - nextfactor Registrationfactor - gotopriorityexpression NEXT 
  5. 一旦配置了前几节中提到的所有步骤,您必须看到下面的GUI屏幕。例如,通过URL访问,https://lb1.server.com/您将看到一个初始登录页面,该页面只需要LDAP登录凭据。

    双因素登录页面

  6. 使用有效凭据登录后,您将看到如下用户注册页面。

    KBA注册登录

  7. 点击提交以便用户注册成功并创建会话。

仅电子邮件ID

在上述KBA注册模式创建成功后,使用CLI命令提示符进行以下配置:

  1. 绑定门户主题和证书到VPN全局。

    bind authentication vserver authvs -portaltheme rfweb bind vpn global -userDataEncryptionKey c1 

    笔记:

    上述证书绑定需要对AD属性中存储的userdata (KB Q&A和alternate mail ID Registered)进行加密。

  2. 创建LDAP认证策略。

    添加身份验证ldapaction ldap -serverip 10.102.2.2 -serverport 636 -ldapbase“dc = aaatm-test,dc = com”-ldapbinddn管理员--ldapbinddnpassword freebsd -ldaploginname samaccountname -sectype ssl添加身份验证策略ldap -rule true-action ldap <! -  callcopy  - >
  3. 创建“邮件注册”的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 - ldapploginname samAccountName -secType SSL -KBAttribute userParameters -alternateEmailAttr userParameters add authentication Policy ldap_email_registration-rule true -action ldap_email_registration 
  4. 创建电子邮件注册登录模式和PolicyLabel。

    添加身份验证loginschema ockeemailregistration -authenticationschema /nsconfig/loginschema/loginschema/altemailregister.xml添加身份验证policylabelabel email_registration_factemailregistration绑定验证policylabel email_fregistration_factor -policyname ldap_email_registration -priority 1-gootoporityexpression next <! -  caltcopy  - >
  5. 绑定认证策略到认证虚拟服务器。

    绑定认证vserver authvs -policy ldap -priority 1 -nextFactor email_Registration_factor -gotoPriorityExpression NEXT 
  6. 一旦配置了前几节中提到的所有步骤,您必须看到下面的GUI屏幕。例如,通过URL访问,https://lb1.server.com/您将看到一个初始登录页面,该页面只需要LDAP登录凭据,然后是另一个电子邮件注册页面。

    双因素登录页面

    电子邮件注册登录

电子邮件验证

执行以下步骤以获取电子邮件analmaition。

  1. 绑定门户主题和证书到VPN全局

    bind authentication vserver authvs -portaltheme rfweb bind vpn global -userDataEncryptionKey c1 

    笔记:

    上述证书绑定需要对AD属性中存储的userdata (KB Q&A和注册的备用email ID)进行解密。

  2. 创建LDAP认证策略。LDAP必须是电子邮件验证因素的优先因素,因为在电子邮件OTP验证中需要用户的电子邮件ID或备用电子邮件ID

    add authentication ldapAction ldap1 - serverip 10.2.2.2 - serverport 636 - ldapbase "dc=aaatm-test,dc=com" -ldapBindDn administrator@aaatm-test.com - ldapbinddnpassword freebsd - ldploginname samAccountName - sectype SSL - kbattribute userParameters - alternateemailattr userParameters add authentication Policy ldap1 -rule true -action ldap1 
  3. 创建电子邮件身份验证策略

    添加身份验证电子邮件电子邮件-Unername sqladmin@aaa.com -password freebsd-cregrypted -encryptmethod encmthd_3 -serverurl“smtps://10.2.3.3:25”-Content“OTP为$ Code”-DefaultAuthenticationGroup EmailGRP -EmailAddress“AAA.User。属性(\“rectrate_mail \”)“添加身份验证策略电子邮件-rule true -action电子邮件<! -  yourcopy  - >

    在前面提到的命令中,电子邮件地址是在KBA注册期间提供的备用电子邮件ID用户。

  4. 创建Email OTP验证policyLabel。

    add authentication policylabel email_Validation_factor绑定authentication policylabel email_Validation_factor -policyName email -priority 1 -gotoPriorityExpression NEXT 
  5. 绑定认证策略到认证虚拟服务器

    绑定认证vserver authvs - policy ldap1 -priority 1 - nextfactor email_Validation_factor - gotopriorityexpression NEXT 
  6. 配置了上一节中提到的所有步骤后,您必须看到以下GUI屏幕以获取电子邮件OTP验证。例如,通过URL访问,https://lb1.server.com/您将看到一个初始登录页面,该页面只需要LDAP登录凭据,然后是EMAIL OTP Validation页面。

    笔记:

    在LDAP策略中,重要的是配置alternateEmailAttr,使其能够从AD属性查询用户的电子邮件id。

    双因素登录页面

    OTP从电子邮件

故障排除

在分析日志之前,建议将日志级别设置为调试级别,如下所示。

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关键:alternate_mail价值:eyJ2ZXJzaW9uIjoiMSIsICJraWQiOiIxbk1oWjN0T2NjLVVvZUx6NDRwZFhxdS01dTA9IiwgImtleSI6IlNiYW9OVlhKNFhUQThKV2dDcmJSV3pxQzRES3QzMWxINUYxQ0tySUpXd0h4SFRIdVlWZjBRRTJtM0ZiYy1RZmlQc0tMeVN2UHpleGlJc2hmVHZBcGVMZjY5dU5iYkYtYXplQzJMTFF1M3JINFVEbzJaSjdhN1pXUFhqbUVrWGdsbjdUYzZ0QWtqWHdQVUI3bE1FYVNpeXhNN1dsRkZXeWtNOVVnOGpPQVdxaz0iLCAiaXYiOiI4RmY3bGRQVzVKLVVEbHV4IiwgImFsZyI6IkFFUzI1Nl9HQ00ifQ = =。oKmvOalaOJ3a9z7BcGCSegNPMw = =“< !——NeedCopy >

注册失败场景

在用户登录页面上,您会看到以下错误信息:“Cannot Complete your request”。这表明用于加密用户数据的VPN global的certkey丢失。

7月31日08:51:46  10.102.229.79 07/31/2020:03:21:4 6 GMT 0-PPE-1:默认SSLVPN消息696 0:“Encrypt UserData:没有加密证书绑定VPN Global“7月31日08:51:46  10.102.229.79 07/31/2020:03:21:46 GMT 0-PPE-1:默认SSLVPN消息697 0:”KBA寄存器:备用电子邮件ID加密Blob Length是零AaaUser“<! -  CentCopy  - >

电子邮件验证-成功的场景

以下条目表示Email 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 Mail Dispatch Failed. cpp[127]: void ThreadWorker_SendMailJob(SMTPJob*) 0-0: [Poco - error][JobID: 8] Poco SMTP Mail Dispatch失败。SMTP类型: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 
电子邮件OTP身份验证