Citrix ADC

Autenticación de dos factores por SMS mediante autenticación web

Citrix ADC ahora se puede integrar con un proveedor de SMS de terceros para proporcionar una capa adicional de autenticación.

El dispositivo Citrix 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 Citrix ADC se basa en los siguientes factores en el back-end.

  1. Autentique al usuario mediante la autenticación LDAP y extraiga el número de teléfono móvil del usuario.
  2. Cree OTP y almacénelo en la variable NS. Configuración y uso de variables.
  3. Envíe la OTP mediante el método de autenticación WebAuth al número de teléfono móvil extraído de LDAP.
  4. 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 Citrix 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 Citrix 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 Policy set_otp -rule true -action generate_otp

add authentication policylabel set_otp -loginSchema LSCHEMA_INT

add authentication policy cascade_noauth -rule true -action NO_AUTHN

bind authentication policylabel set_otp -policyName set_otp -priority 1 -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.

Autenticación de dos factores por SMS mediante autenticación web