Autenticación OTP 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.
- 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
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)
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, consultePara 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
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
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, consulteAutenticació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:
\r\n"} -successRule "http.res.status.eq(200)" -scheme http 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
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:
\r\n"} -successRule "http.res.status.eq(200)" -scheme http add policy expression otp_exp_post "$otp_store[AAA.USER.SESSIONID]" 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
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.
添加身份验证策略otp_verify AAA.LO规则”GIN.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
Utilice el siguiente comando para agregar el esquema de inicio de sesión OnlyPassword:
add authentication loginSchema onlypassword -authenticationschema /nsconfig/loginschema/LoginSchema/OnlyPassword.xml"
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
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.