Configurar un Servidor Web para la Autenticación de Invitado Externo en el Hotspot

Siga estas pautas para configurar un servidor web para la autenticación de un invitado externo en el hotspot. El servidor web puede estar ubicado en cualquier red conectada al Firebox. WatchGuard recomienda que instale el servidor web en la misma parte de su red que sus otros servidores públicos.

Proceso de Autenticación Externo

Este diagrama resume los pasos principales en la interacción entre el explorador cliente, el Firebox y el servidor web externo.

Diagrama que demuestra la interacción entre el explorador web, el hotspot XTM y el servidor web externo.

Los pasos en el proceso externo de autenticación son:

  1. Un usuario del hotspot intenta navegar a una página web.
  2. Si este es un nuevo usuario de hotspot, el Firebox redirecciona el explorador cliente a la URL de Autenticación en el servidor web externo.
    Esta URL incluye una cadena de consulta que contiene la solicitud de acceso.
  3. El explorador envía la solicitud de acceso al servidor web externo.
  4. El servidor web externo envía la página de Autenticación al explorador.
  5. El usuario del hotspot ingresa la información de autenticación solicitada y envía el formulario al servidor web externo.
  6. El servidor web externo procesa la información de autenticación y envía una página HTML que contiene la URL de decisión al explorador.
  7. El explorador envía la decisión de acceso al Firebox.
    La URL de la decisión de acceso contiene la decisión de acceso, una suma de comprobación y una URL de redirección.
  8. El Firebox lee la decisión de acceso, verifica la suma de comprobación y envía la URL de redirección al explorador del cliente.
    En base al resultado del proceso de autenticación externa, la URL de redirección puede ser:
    • La URL original a la que el usuario navegó, si el servidor web externo envió la URL de redirección original.
    • Una URL de redirección diferente, si el servidor web externo envió una URL de redirección diferente.
    • La URL de falla de autenticación, si la autenticación falló o se deniega el acceso.
  9. El servidor web externo envía una URL de cierre de sesión al Firebox para cerrar la sesión del usuario del hotspot.

Los pasos principales de este proceso de autenticación externo se detallan totalmente en las secciones siguientes.

Requisitos

Puede escribir el programa web en Perl, Python, PHP o cualquier otro lenguaje. Como referencia, brindamos un código de ejemplo escrito en Python. El ejemplo de código se adjunta al artículo de la Base de Consulta Ejemplo de Autenticación de Invitado Externo en el Hotspot.

En el servidor web, usted debe crear tres páginas web para trabajar con esta función:

Estas páginas se describen en las secciones siguientes.

Para que el servidor web se comunique con éxito con su Firebox, debe asegurarse de que el servidor web pueda tener acceso al Firebox.

Página de Autenticación

El servidor web debe enviar la página de autenticación al cliente del hotspot cuando recibe una URL de solicitud de accesode Firebox.

El programa web debe guardar toda la información que viene en la URL de solicitud de acceso (Paso 2 en el proceso de Autenticación Externa). El programa web puede usar la marca de tiempo y los parámetros de la dirección MAC como una clave o puede usar un nombre de archivo para guardar esta información. Después de que el cliente finaliza la autenticación, el programa web para la Página de Resultados debe recuperar estos datos de la solicitud guardada y usarla junto con el secreto compartido para calcular una suma de comprobación hash.

Este ejemplo muestra el formato de una URL de solicitud de acceso:

http://10.0.2.80:8080/auth.html?xtm=http://10.0.3.1:4106/wgcgi.cgi &action=hotspot_auth&ts=1344238620&sn=70AB02716F745&mac=9C:4E:36:30:2D:26 &redirect=http://www.google.com/

La URL de solicitud de acceso incluye estos parámetros:

xtm — La URL en Firebox a la cual el servidor web externo debe enviar la decisión de acceso.

action — El tipo de acción. El valor siempre es hotspot_auth.

ts — La marca de tiempo de la solicitud.

sn — El número de serie de Firebox.

mac — La dirección MAC del cliente.

redirect — La URL original a la que el usuario del hotspot intentó navegar.

Usted define los detalles del proceso de autenticación. Firebox debe conocer solo la decisión de acceso y otros parámetros requeridos para verificar la integridad de la interacción.

Página de Resultado

Después de que el usuario del hotspot brinda la información de autenticación solicitada, el programa web debe determinar si permite o no el acceso, en base a la información brindada por el usuario del hotspot y cualquier criterio de acceso que usted especifique. El programa web debe combinar todos los parámetros requeridos en una URL, e incluirlos en una página web que envía al explorador cliente, como se describe en el Paso 6 en el proceso de Autenticación Externa. A esta URL se la llama URL de la decisión de acceso.

Este ejemplo muestra el formato de la URL de la decisión de acceso:

http://10.0.3.1:4106/wgcgi.cgi?action=hotspot_auth&ts=1344238620&success=1& sess_timeout=1200&idle_timeout=600&&sig=a05d352951986e5fbf939920b260a6be3a9fffd3& redirect=http://www.google.com/

La URL de la decisión de acceso comienza con la URL especificada en el parámetro xtm en la URL de solicitud de acceso.

La URL de la decisión de acceso debe incluir todos estos parámetros:

action

El tipo de acción. El valor debe ser hotspot_auth.

success

La decisión sobre el acceso al hotspot. Ajuste el valor a 1 para permitir al usuario tener acceso al hotspot, o 0 para denegárselo.

sess_timeout

El valor de tiempo de espera de la sesión para la conexión del usuario al hotspot. Especificar la cantidad de tiempo en segundos que un usuario puede estar conectado al hotspot en cada sesión. Ajuste el valor a 1 para utilizar la configuración de tiempo de espera de la sesión configurada en Firebox. Ajuste el valor a 0 para deshabilitar el valor de tiempo de espera de la sesión. Cuando ajuste el valor a 0, la conexión del usuario al hotspot no caduca con el tiempo.

idle_timeout

El valor de tiempo de espera inactivo para la conexión del usuario al hotspot. Especificar la cantidad de tiempo en segundos en que la conexión al hotspot de la sesión de usuario puede estar inactiva antes de que se desconecte la sesión. Ajuste el valor a -1 para utilizar la configuración predeterminada de tiempo de espera inactivo configurada en Firebox. Ajuste el valor a 0 para deshabilitar el valor de tiempo de espera inactivo. Cuando ajuste el valor a 0, la conexión del usuario al hotspot no caducará cuando no haya tráfico entre el usuario cliente y el hotspot.

sig

Una cadena hexadecimal codificada en minúsculas. Es una suma de comprobación SHA1 que se basa en los valores de ts, sn, mac, success, sess_timeout, idle_timeout y el secreto compartido. El secreto compartido que usa para calcular la suma de comprobación hash debe coincidir con el secreto compartido que se configuró en los ajustes del hotspot en Firebox.

La fórmula para calcular la suma de comprobación es Hash = SHA1(ts + sn + mac + success + sess-timeout + idle_timeout + shared_secret). Firebox usa la suma de comprobación para validar esta integridad de la interacción entre el explorador cliente y el servidor web externo.

redirect

La URL de redirección que usted desea que el Firebox envíe al usuario del hotspot después de la autenticación exitosa. Para redirigir el explorador a la URL original que el usuario solicitó, use el valor originalmente recibido en la URL de solicitud de acceso. Para redirigir a los usuarios a una URL diferente, especifique dicha URL en este parámetro.

En el Paso 6 del proceso de Autenticación Externa, la página web envía la URL con la decisión de acceso al Firebox. Esta página también hace que el explorador cliente envíe la decisión de acceso al Firebox para poder verificar la integridad de la interacción y crear una sesión en el hotspot para el cliente en Firebox.

Esta página web puede usar un hipervínculo para enviar la URL de la decisión en su totalidad o puede usar un <form> para enviar un mensaje que contiene todos los campos en la URL de la decisión de autenticación.

Ejemplo de hipervínculo:

<a href="http://10.0.3.1:4106/wgcgi.cgi?action=hotspot_auth &ts=1344238620&success=1&sess_timeout=1200&idle_timeout=600& sig=a05d352951986e5fbf939920b260a6be3a9fffd3&redirect=http://www.google.com/">Conectar</a>

Ejemplo del formulario:

<form action="http://10.0.3.1:4106/wgcgi.cgi" method="post">
<fieldset>
<input type="submit" name="Connect" value="Connect" title="Connect" />
<input type="hidden" name="action" value="hotspot_auth" />
<input type="hidden" name="ts" value="1344238620" />
<input type="hidden" name="success" value="1" />
<input type="hidden" name="sess_timeout" value="1200" />
<input type="hidden" name="idle_timeout" value="600" />
<input type="hidden" name="sig" value="a05d352951986e5fbf939920b260a6be3a9fffd3" />
<input type="hidden" name="redirect" value="http://www.google.com/" />
</fieldset>
</form>

Página de Falla de Autenticación

Después del Paso 7 del proceso de Autenticación Externa, si Firebox detecta algún error en el proceso de autenticación, por ejemplo, un error en el parámetro de la URL, un error en la creación de sesión o una suma de comprobación inválida, Firebox redirige el explorador cliente a la página de falla del servidor web externo en el Paso de Interacción 8.

El Firebox construye la URL de falla con un código de error para indicar por qué la autenticación no tuvo éxito. Usted puede usar éstos como la base para mensajes al usuario en la página de falla de autenticación.

Este ejemplo muestra el formato de la URL de falla:

http://10.0.2.80:8080/failure.html?error=510&sn=70A70272B454E &mac=9C:4E:36:30:2D:28

La URL de falla incluye estos parámetros:

  • error — El número de error que indica la razón de la falla.
  • sn — El número de serie de Firebox.
  • mac — La dirección MAC del cliente.

Firebox puede configurar el parámetro de error en uno de estos números de error:

Error Razón de la Falla
510 Resultado o firma de autenticación inválidos
511 Parámetro CGI inválido
512 Falla en la creación de sesión del hotspot
513 Error interno
514 Falla en la autenticación externa (success=0)

Puede configurar la página de falla de autenticación en el servidor web externo para mostrar diferentes mensajes al usuario del hotspot según el código de error.

URL de cierre de sesión

Si el servidor web externo debe cerrar la sesión de un cliente específico, envía una URL de cierre de sesión al Firebox que incluya la dirección MAC del cliente que desea desconectar. Cada URL de cierre de sesión puede cerrar la sesión de solo un cliente a la vez. Para que Firebox sea capaz de cerrar la sesión correctamente de un cliente, el servidor web externo debe incluir estos detalles específicos en la URL de cierre de sesión:

action

El tipo de acción. El valor siempre debe ser hotspot_logoff.

mac

La dirección MAC del cliente al que se le debe finalizar la sesión. El servidor web puede usar la misma dirección MAC usada en la URL de solicitud de acceso.

sig

Una cadena hexadecimal codificada en minúsculas. Es una suma de comprobación SHA1 basada en el valor mac y el secreto compartido. El secreto compartido que especifica en sig para calcular la suma de comprobación hash debe coincidir con el secreto compartido que se configuró en los ajustes del hotspot en Firebox.

La fórmula para calcular el valor de la suma de comprobación es sig = SHA1(mac + secret). Firebox utiliza el valor de la suma de comprobación para identificar al servidor web externo. Esto le permite al Firebox permitir solo solicitudes de cierre de sesión de fuentes legítimas, y asegurarse de que las solicitudes de cierre de sesión de fuentes maliciosas sean denegadas.

El servidor web externo usa estos parámetros para generar la URL de cierre de sesión en este formato:

http://10.0.3.1:4106/wgcgi.cgi?action=hotspot_logoff&mac=9C:4E:36:30:2D:26 &sig=03349009b213b701871b936007cd92bc0eb94376

Cuando Firebox recibe la URL de cierre de sesión del servidor web externo, envía una de estas respuestas:

Éxito o falla en el cierre de sesión del usuario del hotspot

<?xml version="1.0"?>

<authentication>

<logoff_list>

<logoff>

<session_id>12</session_id>

<success>1</success>

</logoff>

</logoff_list>

</authentication>

Un valor de <success> de 0 significa que el intento de cierre de sesión falló. Un valor de <success> de 1 significa que el intento de cierre de sesión fue exitoso.

No se encontró la sesión del usuario del hotspot

<?xml version="1.0"?>

<authentication>

<logoff_list/>

</authentication>

Este mensaje aparece si la sesión ya caducó o fue eliminada.

Se produjo un error interno

<?xml version=\"1.0\"?>

<authentication>

<internal_error/>

</authentication>

Puede revisar los mensajes de error para comprobar si hay algún problema con los ajustes de la URL de cierre de sesión y luego hacer cualquier ajuste necesario en la configuración.

Ver También

Configurar un Hotspot de Autenticación para Invitados Externos

Resolver Problemas de Autenticación del Invitado Externo en el Hotspot