ADC
感谢您提供反馈

这篇文章已经过机器翻译.放弃

配置 Web 身份验证的 SMS OTP

NetScaler 现在可以与第三方短信提供商集成,以提供额外的身份验证层。

可以将 NetScaler 设备配置为在用户的移动设备上发送 OTP,作为第二个身份验证因素。设备向用户提供登录表格,以便在成功登录 AD 后进入 OTP。只有在成功验证 SMS OTP 身份验证后,才会向用户显示所请求的资源。

要实现 SMS OTP 身份验证,NetScaler 设备依赖于后端的以下因素。

  1. 使用 LDAP 身份验证对用户进行身份验证并提取用户的手机号码。
  2. 创建 OTP 并将其存储在 NS 变量中。配置和使用变量
  3. 通过 WebAuth 身份验证方法将 OTP 发送到从 LDAP 提取的手机号码。
  4. 验证 OTP。

必备条件

启用功能并添加 SNIP

运行以下命令以启用此配置所需的功能:

enable ns feature LB SSL SSLVPN AAA add ns ip <SNIP-IP> <subnet mask> -type SNIP

配置 OTP 存储

管理员必须设置数据库/存储以保存用于 SMS 身份验证的 OTP。

expires 参数的推荐配置范围(OTP 到期时间)为 30 到 180 秒。超出此范围的任何值都可能导致 SMS OTP 配置和 nFactor 流失败。

add ns variable otp_store -type "map(text(65),text(6),100000)" -ifValueTooBig undef -ifNoValue undef -expires 60

为每个用户会话生成随机 OTP

使用以下命令为每个用户会话生成一个 6 位随机 OTP,并将其保存在 OTP 存储中。

add ns assignment generate_otp -variable "$otp_store[AAA.USER.SESSIONID]" -set ("000000" + SYS.RANDOM.MUL(1000000).TYPECAST_UNSIGNED_LONG_AT.TYPECAST_TEXT_T).SUFFIX(6)

使用 NetScaler 配置短信 OTP 身份验证

  • 在配置 SMS 双因素身份验证功能之前,必须在 NetScaler 设备上将 LDAP 身份验证配置为启用身份验证的第一要素。有关配置 LDAP 身份验证的说明,请参阅 使用配置实用程序配置 LDAP 身份验证

  • 配置 LDAP 并提取用于 SMS OTP 身份验证的手机号码。

示例第一因素配置

将 LDAP 配置为身份验证的第一个因素。

add authentication ldapAction ldap_extraction_action -serverIP <IP_Adress> -ldapBase OU=Sanity,dc=aaa,dc=local -ldapBindDn administrator@aaa.local -ldapBindDnPassword <password> -ldapLoginName samaccountname -groupAttrName memberof -subAttributeName CN -authentication disabled add authentication Policy ldap_extraction_policy -rule true -action ldap_extraction_action

注意

可以使用 AAA.USER.ATTRIBUTE(1) 提取手机号码,也可以在将其发送到后端服务器时将其包括在内。

示例第二因素配置

使用以下示例配置,生成要发送给最终用户的 OTP。

add authentication Policy set_otp -rule true -action generate_otp add authentication policylabel set_otp_label -loginSchema LSCHEMA_INT bind authentication policylabel set_otp_label -policyName set_otp -priority 1 add authentication Policy cascade_noauth -rule true -action NO_AUTHN

Web 身份验证策略和操作

现在,配置 Web 身份验证操作以将 OTP 以及从 LDAP 策略中获取的手机号码发送给任何第三方短信发送器。

检查 OTP 并将生成的 OTP 发送到第三方 SMS 提供商或任何 Web 服务器,配置如下:

add policy expression otp_exp_post ""Message: OTP is " + $otp_store[AAA.USER.SESSIONID] + " for login into secure access gateway. Valid till EXPIRE_TIME. Do not share the OTP with anyone for security reasons&Mobile:" + AAA.USER.ATTRIBUTE(1)" add authentication webAuthAction sms_post -serverIP <web_application_ip> -serverPort 80 -fullReqExpr q{"POST /MyPHP/auth.php HTTP/" + http.req.version.major + "." + http.req.version.major + "\r\nAccept:\*/\*\r\nHost: <web_application_ip> \r\nContent-Length:100\r\n\r\n" + otp_exp_post} -scheme http -successRule true add authentication Policy post_wpp -rule true -action sms_post

检查 OTP

添加以下策略和策略标签以检查用户会话的 OTP 是否存在:

add authentication policylabel check_otp_label -loginSchema LSCHEMA_INT add authentication Policy check_otp -rule "$otp_store.valueExists(AAA.USER.SESSIONID)" -action NO_AUTHN

通过比较用户提供的值和 OTP 存储值来验证 OTP

运行以下命令,通过比较用户提供的值和 OTP 存储值来验证 OTP:

add authentication loginSchema onlypassword -authenticationSchema "/nsconfig/loginschema/LoginSchema/OnlyPassword.xml" add authentication policylabel otp_verify_label -loginSchema onlypassword add authentication Policy otp_verify -rule "AAA.LOGIN.PASSWORD.EQ($otp_store[AAA.USER.SESSIONID])" -action NO_AUTHN

将策略绑定到身份验证策略标签

bind authentication policylabel set_otp_label -policyName cascade_noauth -priority 2 -gotoPriorityExpression NEXT -nextFactor check_otp_label bind authentication policylabel check_otp_label -policyName post_wpp -priority 1 -gotoPriorityExpression NEXT -nextFactor otp_verify_label bind authentication policylabel otp_verify_label -policyName otp_verify -priority 1 -gotoPriorityExpression NEXT

创建身份验证虚拟服务器和负载平衡虚拟服务器

add authentication vserver avs SSL <ipadresss> 443 add ssl certKey aaa_local -cert aaatm_wild.cer -key aaatm_wild.key bind ssl vserver avs -certkeyName aaa_local bind authentication vserver avs -policy ldap_extraction_policy -priority 1 -nextFactor set_otp_label -gotoPriorityExpression NEXT add lb vserver lb HTTP <ip_adresss> 80 -persistenceType NONE -cltTimeout 180 -AuthenticationHost <auth_server> -Authentication ON add service svc <Ip_adresss> HTTP 80 bind lb vserver lb svc

注意:

添加了层叠身份验证策略,以便为最终用户启用可靠且持续的身份验证。如果当前因素失效,则评估下一个因素,以免对用户体验产生影响。

本内容的正式版本为英文版。部分 Cloud Software Group 文档内容采用了机器翻译,仅供您参考。Cloud Software Group 无法控制机器翻译的内容,这些内容可能包含错误、不准确或不合适的语言。对于从英文原文翻译成任何其他语言的内容的准确性、可靠性、适用性或正确性,或者您的 Cloud Software Group 产品或服务沿用了任何机器翻译的内容,我们均不作任何明示或暗示的保证,并且适用的最终用户许可协议或服务条款或者与 Cloud Software Group 签订的任何其他协议(产品或服务与已进行机器翻译的任何文档保持一致)下的任何保证均不适用。对于因使用机器翻译的内容而引起的任何损害或问题,Cloud Software Group 不承担任何责任。
配置 Web 身份验证的 SMS OTP