Citrix ADC

电子邮件otp身份验证

电子邮件OTP随Citrix ADC 12.1 Build 51。X引入。通过电子邮件OTP方法,您可以使用发送到已注册的电子邮件地址的一次性密码(OTP)进行身份验证。当您尝试在任何服务上进行身份验证时,服务器会向用户的已注册的电子邮件地址发送otp。

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

如果您已将备用电子邮件ID作为某个广告属性的一部分提供,则可以使用电子邮件OTP验证而无需注册电子邮件ID。可以在电子邮件操作中引用同一属性,而不是在电子邮件地址部分中指定备用电子邮件id。

必备条件

在配置电子邮件otp功能之前,请查看以下必备条件:

Active Directory设置

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

电子邮件服务器

  • 要使用电子邮件otp解决方案,请确保在SMTP服务器上启用了基于登录的身份验证。Citrix ADC仅支持基于身份验证登录的身份验证才能使用电子邮件OTP。

  • 要确保启用基于认证登录的身份验证,请在SMTP服务器上键入以下命令。如果启用了基于登录的身份验证,您将注意到文本认证登录以粗体格式显示在输出中。

在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的属性值为没有设置(未设置)。这表明目前尚未使用该属性。

AD属性设置

配置电子邮件otp

电子邮件otp解决方案由以下两部分组成:

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

电子邮件id注册

成功创建kba注册架构后,使用cli执行以下配置:

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

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

    注意:

    加密存储在广告属性中的用户数据(知识库问答和备用邮件ID)注册登记时需要先绑定证书。

  2. 创建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 
  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 - ldapbindinname samAccountName -secType SSL -KBAttribute userParameters -alternateEmailAttr userParameters add authentication Policy ldap_email_registration -rule true -action ldap_email_registration 
  4. 创建电子邮件注册登录架构和策略标签。

    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 
  5. 将身份验证策略绑定到身份验证虚拟服务器。

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

    注意:https://lb1.server.com/可以属于网关或身份验证虚拟服务器。

    双重身份验证登录页面

    电子邮件注册登录

注意:

  • 您可以对kba注册和电子邮件id注册使用相同的身份验证架构。

  • 配置kba注册时,您可以在“电子邮件注册”部分中选择注册备用电子邮件以注册备用电子邮件id。

电子邮件验证

请执行以下步骤进行电子邮件验证。

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

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

    注意:

    要解密存储在AD属性中的用户数据(知识库问答和备用电子邮件id已注册),必须先绑定证书。

  2. 创建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 
  3. 创建电子邮件身份验证策略。

    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用户。

  4. 创建电子邮件otp验证策略标签。

    add authentication policylabel email_Validation_factor bind 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登录凭据,然后是邮件OTP验证页面。

    注意:

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

    双重身份验证登录页面

    来自电子邮件的otp

故障排除

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

设置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 
电子邮件otp身份验证