Configurar SMS OTP para la autenticación web
NetScaler ADC ahora se puede integrar con un proveedor de SMS de terceros para proporcionar una capa adicional de autenticación.
El dispositivo NetScaler ADC se puede configurar para enviar un OTP en el móvil del usuario como segundo factor de autenticación. El dispositivo presenta al usuario un formulario de inicio de sesión para introducir al OTP después de iniciar sesión correctamente en AD. Solo después de la validación correcta de la autenticación OTP por SMS se presenta al usuario el recurso solicitado.
Para lograr la autenticación OTP por SMS, el dispositivo NetScaler ADC se basa en los siguientes factores en el back-end.
- Autentique al usuario mediante la autenticación LDAP y extraiga el número de teléfono móvil del usuario.
- Cree OTP y almacénelo en la variable NS. Configuración y uso de variables.
- Envíe la OTP mediante el método de autenticación WebAuth al número de teléfono móvil extraído de LDAP.
- Valide la OTP.
Requisitos previos
Configurar el almacén de OTP
Los administradores configuran una base de datos o un almacén para guardar las OTP utilizadas para la autenticación por SMS mediante el siguiente comando de la CLI.
add ns variable otp_store -type "map(text(65),text(6),100000)" -ifValueTooBig undef -ifNoValue undef -expires 5
<!--NeedCopy-->
Generar OTP aleatoria por sesión de usuario
Utilice el siguiente comando para generar una OTP aleatoria de 6 dígitos por sesión de usuario y guárdela en el almacén de 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)
<!--NeedCopy-->
Configurar la autenticación OTP por SMS con NetScaler ADC
-
Antes de configurar la función de autenticación de dos factores de SMS, debe tener configurada una autenticación LDAP en un dispositivo NetScaler ADC como primer factor con la autenticación habilitada. Para obtener instrucciones para configurar la autenticación LDAP, consulte Para configurar la autenticación LDAP mediante la utilidad de configuración.
-
Configure LDAP y extraiga el número de teléfono móvil que se utilizará para la autenticación OTP por SMS.
Configuración de primer factor de ejemplo
add authentication ldapAction ldap_action -serverIP 1.1.1.1 -serverPort 3268 -authTimeout 30 -ldapBase "dc=nsi-test,dc=com" -ldapBindDn Administrator@nsi-test.com -ldapBindDnPassword freebsd -ldapLoginName samaccountname -groupAttrName memberOf -ssoNameAttribute samaccountname -Attribute1 mobile -email mail
add authentication Policy ldap_policy -rule true -action ldap_action
<!--NeedCopy-->
Nota
El número de móvil se puede extraer con AAA.USER.ATTRIBUTE(1) y se puede incluir al enviarlo al servidor back-end.
Configuración de segundo factor de muestra
Con la siguiente configuración de ejemplo, se genera una OTP que se va a enviar al usuario final.
add authentication policylabel set_otp -loginSchema LSCHEMA_INT
add authentication Policy set_otp -rule true -action test
add authentication policy cascade_noauth -rule true -action NO_AUTHN
add authentication Policy check_otp -rule "$test.valueExists(AAA.USER.SESSIONID)" -action NO_AUTHN
add authentication policylabel check_otp -loginSchema LSCHEMA_INTbind authentication policylabel set_otp -policyName set_otp -priority 1 -gotoPriorityExpression NEXT
bind authentication policylabel set_otp -policyName cascade_noauth -priority 2 -gotoPriorityExpression NEXT -nextFactor check_otpbind authentication policylabel check_otp -policyName wpp -priority 1 -gotoPriorityExpression NEXT
bind authentication policylabel check_otp -policyName wpp_cascade_noauth -priority 2 -gotoPriorityExpression NEXT -nextFactor otp_verifyadd authentication Policy wpp -rule true -action webAuth_POST
add authentication Policy wpp_cascade_noauth -rule true -action NO_AUTHNadd authentication Policy otp_verify -rule "AAA.LOGIN.PASSWORD.EQ($test[AAA.USER.SESSIONID])" -action NO_AUTHN
add authentication policylabel otp_verify -loginSchema onlyPassword
bind authentication policylabel otp_verify -policyName otp_verify -priority 1 -gotoPriorityExpression NEXTadd authentication vserver avs SSL 10.106.40.121 443
bind authentication vserver avs -policy ldap_policy -priority 1 -nextFactor set_otp -gotoPriorityExpression NEXT
<!--NeedCopy-->
Ejemplo de configuración del tercer factor
Con la siguiente configuración de ejemplo, la OTP generada en la configuración del segundo factor se envía al usuario final mediante el método de autenticación web. Para obtener información sobre la autenticación web, consulte Autenticación web.
-
Ejemplo de configuración de autenticación web cuando el servidor SMS expone la API mediante el método GET.
add policy expression otp_exp_get ""method=sendMessage&send_to=" + AAA.USER.ATTRIBUTE(1) + "&msg=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.&userid=#####&password=###=1.0"" add authentication webAuthAction webAuth_Get -serverIP 10.106.168.210 -serverPort 8080 -fullReqExpr q{"GET /GatewayAPI/rest?" + otp_exp_get + "HTTP/" + http.req.version.major + "." + http.req.version.minor.sub(1) + "\r\nAccept:\*/\*\r\nHost: <FQDN>\r\n"} -successRule "http.res.status.eq(200)" -scheme http <!--NeedCopy-->
-
Ejemplo de configuración de autenticación web cuando el servidor SMS expone la API mediante el método GET.
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 webAuth_POST -serverIP 10.106.168.210 -serverPort 8080 -fullReqExpr q{"POST /MyPHP/auth.php HTTP/" + http.req.version.major + "." + http.req.version.major + "\r\nAccept:\*/\*\r\nHost: 10.106.168.210 \r\nContent-Length: 10\r\n\r\n" + otp_exp_post} -scheme http -successRule true <!--NeedCopy-->
add authentication webAuthAction webAuth_Get -serverIP 10.106.168.210 -serverPort 8080 -fullReqExpr q{"GET /GatewayAPI/rest?" + otp_exp_get + "HTTP/" + http.req.version.major + "." + http.req.version.minor.sub(1) + "\r\nAccept:/\r\nHost: <FQDN>\r\n"} -successRule "http.res.status.eq(200)" -scheme http add policy expression otp_exp_post "$otp_store[AAA.USER.SESSIONID]" <!--NeedCopy-->
-
Por último, envíe la OTP.
add authentication Policy wpp -rule true -action webAuth_POST add authentication policylabel send_otp -loginSchema LSCHEMA_INT bind authentication policylabel send_otp -policyName wpp -priority 1 -gotoPriorityExpression NEXT <!--NeedCopy-->
Ejemplo de configuración del cuarto factor
Con la siguiente configuración de ejemplo, valide la OTP enviada al usuario final.
En esta configuración, se utiliza una regla de directiva para validar la OTP con la que se envía al usuario final.
add authentication Policy otp_verify -rule "AAA.LOGIN.PASSWORD.EQ($otp_store[AAA.USER.SESSIONID])" -action NO_AUTHN
add authentication policylabel otp_verify -loginSchema onlyPassword
bind authentication policylabel otp_verify -policyName otp_verify -priority 1 -gotoPriorityExpression NEXT
<!--NeedCopy-->
Utilice el siguiente comando para agregar el esquema de inicio de sesión OnlyPassword:
add authentication loginSchema onlypassword -authenticationschema /nsconfig/loginschema/LoginSchema/OnlyPassword.xml"
<!--NeedCopy-->
Vincule todos los factores para una autenticación OTP por SMS correcta
Utilice los siguientes comandos de la CLI para vincular todos los factores.
bind authentication policylabel send_otp -policyName wpp -priority 1 -gotoPriorityExpression NEXT -nextFactor otp_verify
<!--NeedCopy-->
Nota:
La directiva de autenticación en cascada se agrega para permitir una autenticación fiable y continua para los usuarios finales. Si el factor actual falla, se evalúa el siguiente factor de manera que no haya impacto en la experiencia del usuario.