- Purple
- Captive portals: a complete guide
- Captive Portal personalizado: Guía de HTML y CSS
Captive Portal personalizado: Guía de HTML y CSS
Esta guía de referencia técnica autorizada describe los estándares de desarrollo, la arquitectura CSS y las restricciones a nivel de red necesarias para diseñar y codificar una página de inicio de Captive Portal personalizada. Proporciona a los desarrolladores frontend y arquitectos de red estrategias prácticas para navegar por los entornos de Apple CNA y Android webview, garantizando experiencias de WiFi para invitados píxel-perfect, conformes y de alto rendimiento.
Video overview
Escuchar esta guía
Ver transcripción del podcast
Parte de nuestra serie principal: Guía de Captive Portal →
- Resumen Ejecutivo
- Análisis Técnico Detallado
- El Ciclo de Vida del Captive Portal
- Restricciones del mini-navegador específicas de cada plataforma
- Solución de código para la trampa del botón "Hecho" de Apple CNA
- Guía de implementación
- La regla de oro: diseñar para una conectividad a internet nula
- 1. Configuración de la ventana gráfica (Viewport)
- 2. Integración de CSS y eliminación de dependencias externas
- 3. Codificación de recursos en Base64
- 4. Optimización de campos de entrada y objetivos táctiles
- 5. Consentimiento legal y conformidad con el GDPR
- Plantilla HTML/CSS personalizada de Captive Portal
- Solución de problemas y mitigación de riesgos
- 1. El bucle de advertencia de certificados SSL/TLS
- 2. Fallos de resolución DNS (la trampa del jardín vallado)
- 3. Vulnerabilidades de tiempo de espera de sesión y suplantación de MAC
- Relevancia del producto Purple: Desarrollar frente a comprar
- ROI e impacto empresarial
- 1. Reducción de costes operativos (tickets de soporte de TI)
- 2. Captura de datos de marketing y optimización de suscripciones
- 3. Mitigación de riesgos legales y regulatorios
- Resumen de conclusiones clave
- Referencias
- Escuche la sesión técnica informativa

Resumen Ejecutivo
Para los recintos empresariales - que abarcan desde hoteles de lujo Hospitality y cadenas de tiendas Retail hasta centros de transporte Transport y campus médicos modernos Healthcare - la página de bienvenida de WiFi para invitados es la puerta de acceso digital. Sin embargo, más del 90% de los inicios de sesión de WiFi para invitados se realizan en dispositivos móviles, donde la visualización no está regulada por navegadores estándar como Safari o Chrome, sino por webviews muy restringidos de Captive Network Assistant (CNA) [1]. Estos "mini-navegadores" imponen severas limitaciones de sandbox: bloquean las CDN externas, desactivan las cookies persistentes, ignoran las fuentes web externas y restringen estrictamente la ejecución de JavaScript para mitigar los riesgos de seguridad y evitar el secuestro de sesiones [2].
Cuando un desarrollador diseña una página de bienvenida utilizando los estándares web tradicionales, estas limitaciones provocan diseños rotos, pérdida de elementos de marca y botones de inicio de sesión inoperativos, lo que afecta directamente a la satisfacción del cliente y a la interacción digital. Esta guía ofrece soluciones a estos desafíos, presentando prácticas de codificación defensivas - como CSS en línea, codificación de recursos en Base64, familias de fuentes del sistema y flujos de autenticación explícitos basados en la navegación - para garantizar una visualización perfecta en múltiples plataformas. Además, analizamos cómo el uso de una solución gestionada como el creador de portales de Purple permite a los desarrolladores mantener un control creativo completo de HTML/CSS al tiempo que delegan la autenticación RADIUS, el escalado de bases de datos, el cumplimiento de GDPR/PCI y las integraciones de AP de múltiples fabricantes [3].
Análisis Técnico Detallado
Para crear un Captive Portal personalizado que sea resistente, los desarrolladores deben comprender la interceptación a nivel de red y la virtualización del navegador que se producen cuando un invitado se asocia a un SSID abierto.
El Ciclo de Vida del Captive Portal
Cuando un dispositivo cliente se asocia a un SSID cautivo, se desencadena la siguiente secuencia:
- Asociación de IP: El dispositivo completa un protocolo de enlace de 3 vías y solicita una dirección IP a través de DHCP.
- Sondeo de Conectividad Activo: El gestor de red en segundo plano del sistema operativo envía inmediatamente una solicitud HTTP GET a una URL de prueba dedicada y neutral con respecto al fabricante (por ejemplo,
http://captive.apple.com/hotspot-detect.htmlde Apple ohttp://connectivitycheck.gstatic.com/generate_204de Google) [1]. - Interceptación de DNS/HTTP: El Wireless LAN Controller (WLC) local o el punto de acceso (AP) intercepta esta solicitud HTTP del puerto 80. En lugar de devolver el estado HTTP 200 o 204 esperado, la pasarela redirige el tráfico del cliente a la URL de la página de destino del Captive Portal mediante una redirección HTTP 302 [2].
- Generación de Webview: Al detectar la redirección, el sistema operativo genera su mini-navegador nativo Captive Network Assistant (CNA) para mostrar la página de bienvenida redirigida, evitando que el usuario tenga que abrir manualmente un navegador completo.5. Autenticación y transición de estado: El usuario completa el formulario de inicio de sesión, enviando las credenciales de vuelta al servidor del portal, que indica a la pasarela (a menudo a través de un RADIUS Access-Accept o llamada API externa) que autorice la dirección MAC.
- Apretón de manos de salida de CNA: El mini-navegador CNA realiza otra petición HTTP GET a su URL canaria. Si recibe la respuesta esperada 200/204, cambia su botón superior derecho de "Cancelar" a "Hecho" y establece la conexión WiFi como interfaz de red principal.
Restricciones del mini-navegador específicas de cada plataforma
Cada sistema operativo gestiona este ciclo de vida en diferentes entornos de webview, lo que da lugar a un comportamiento muy fragmentado. La siguiente tabla detalla estas restricciones críticas:
| Plataforma / Webview | Método de visualización | Cookies persistentes | Fuentes web externas | Ejecución de JavaScript | Dimensiones de la ventana | Activador de apretón de manos de salida |
|---|---|---|---|---|---|---|
| Apple iOS CNA (Websheet) | Ventana emergente de mini-navegador | Bloqueadas (Se destruyen al cerrar) | Bloqueadas (Sin conexión) | Limitada (Sin localStorage/sessionStorage) | Adaptable (Ancho del dispositivo) | Solo redirección HTTP de página completa [1] |
| Apple macOS CNA (Captive Network Assistant) | Ventana emergente de mini-navegador | Bloqueadas | Bloqueadas | Limitada (Sin diálogos de alerta/confirmación) | Fija (900px x 572px) | Solo redirección HTTP de página completa |
| Android (Google) (CaptivePortalLogin) | Notificación push -> Pestaña personalizada de Chrome | Permitidas (Compartidas con Chrome) | Permitidas (Si están en la lista blanca de la zona vallada) | Completa | Adaptable | Automático (Captive Portal API / Comprobación 204) [2] |
| Samsung Android (Samsung Internet) | Notificación push -> Mini-navegador | Permitidas | Permitidas | Completa | Adaptable | Automático |
| Windows 10/11 (Navegador predeterminado) | Inicio automático de navegador predeterminado | Permitidas (Contexto completo del navegador) | Permitidas | Completa | Adaptable | Manual / Automático |

Solución de código para la trampa del botón "Hecho" de Apple CNA
Uno de los fallos más frecuentes en el desarrollo de portales personalizados es la trampa del botón "Hecho" en dispositivos iOS. Cuando un usuario se autentica, el webview de Websheet de iOS debe detectar que la red ya no es cautiva. Lo hace supervisando el éxito de sus peticiones canarias en segundo plano.
Fundamentalmente, el CNA de iOS solo activará esta comprobación tras una navegación HTTP de página completa (redirección de ubicación). Si un desarrollador crea una Single Page Application (SPA) moderna que envía datos de formulario a través de una llamada AJAX asíncrona (por ejemplo, fetch() o Axios) y actualiza el DOM dinámicamente sin cambiar la URL, el CNA nunca volverá a ejecutar su comprobación de conectividad. El usuario se autenticará a nivel de pasarela, pero el botón del CNA en la esquina superior derecha seguirá apareciendo como "Cancelar". Si el usuario frustrado hace clic en "Cancelar", el dispositivo iOS se desasociará inmediatamente del SSID, terminando la sesión de WiFi [1].
Para evitar esto, el controlador de éxito de la autenticación debe realizar una redirección de página completa a una página de destino física (por ejemplo, window.location.href = '/success') o enviar el formulario de inicio de sesión de forma nativa a través de una acción HTTP POST estándar.
Guía de implementación
Para garantizar un renderizado coherente en todas las plataformas, los desarrolladores deben pasar de un diseño web moderno y cargado de recursos a un estilo de codificación defensivo y altamente autónomo.
La regla de oro: diseñar para una conectividad a internet nula
Durante el estado cautivo, el dispositivo cliente no tiene acceso a la red internet general. Solo puede resolver y acceder a direcciones IP y dominios explícitamente incluidos en la lista de permitidos (Walled Garden) del controlador inalámbrico (como la propia IP del servidor del Captive Portal). Por lo tanto, cualquier recurso externo referenciado en su HTML no se cargará, lo que provocará un diseño roto.
Para diseñar de forma defensiva, implemente la siguiente lista de comprobación de diseño de Captive Portal priorizando dispositivos móviles:

1. Configuración de la ventana gráfica (Viewport)
Para evitar que los dispositivos móviles reduzcan la escala de la ventana gráfica a un ancho de escritorio (normalmente 980px), el <head> del HTML debe incluir una etiqueta meta de viewport receptiva. Sin esto, el texto y los campos de entrada aparecerán microscópicos en los dispositivos móviles:
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
2. Integración de CSS y eliminación de dependencias externas
Nunca enlace a archivos CSS externos o CDN (por ejemplo, Bootstrap, Tailwind o Google Fonts). Todo el CSS debe estar incrustado dentro de un bloque <style> en el <head> del HTML.
Para la tipografía, utilice una pila de fuentes del sistema que haga referencia a fuentes locales del sistema operativo preinstaladas. Esto evita por completo las solicitudes HTTP y garantiza que la página se cargue instantáneamente utilizando la tipografía sans-serif nativa y de alta calidad del dispositivo:
body {
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
background-color: #F5F1ED; /* Color de marca Pearl White */
color: #011638; /* Color de marca Dark Blue */
margin: 0;
padding: 0;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
min-height: 100vh;
}
3. Codificación de recursos en Base64
No se debe hacer referencia a imágenes, logotipos e iconos a través de URL HTTP externas a menos que el dominio de alojamiento esté incluido en la lista de permitidos (walled garden) de la pasarela. El método más fiable consiste en codificar los recursos visuales pequeños (como logotipos PNG o SVG) directamente en el HTML o CSS como Data URI Base64:
<!-- Ejemplo de logotipo Base64 integrado -->
<img src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAgMTAwIj48Y2lyY2xlIGN4PSI1MCIgY3k9IjUwIiByPSI0MCIgZmlsbD0iIzc0NThGRCIvPjwvc3ZnPg==" alt="Logo de Purple" class="brand-logo">
4. Optimización de campos de entrada y objetivos táctiles
Para cumplir con los estándares de usabilidad móvil (como las Directrices de interfaz humana de Apple), todos los elementos interactivos deben optimizarse para la entrada táctil:
- Tamaño de fuente de entrada: El tamaño de la fuente del texto de entrada debe ser de al menos 16 px. Si el tamaño de la fuente es menor (por ejemplo, 14 px), iOS Safari y el CNA ampliarán automáticamente el campo de entrada al enfocarlo, lo que distorsionará el diseño de la página [1].
- Objetivos táctiles: Los botones, casillas de verificación y enlaces deben tener un área de objetivo táctil mínima de 44 px x 44 px para evitar clics accidentales o la frustración del usuario.
5. Consentimiento legal y conformidad con el GDPR
Al capturar datos de invitados (por ejemplo, correo electrónico, número de teléfono o perfiles sociales), la estructura HTML debe admitir el consentimiento legal explícito. Según el GDPR, las casillas de verificación premarcadas o las declaraciones de consentimiento implícito (por ejemplo, "Al iniciar sesión, acepta nuestros términos") no cumplen con la normativa [3].
- Proporcione una casilla de verificación desmarcada por defecto para los Términos y condiciones y las Políticas de privacidad.
- Envuelva el texto legal detallado en un contenedor de altura limitada y desplazable (
max-height: 120px; overflow-y: auto;) para mantener el formulario de inicio de sesión principal visible en la pantalla de inicio.
<div class="consent-container">
<input type="checkbox" id="terms_consent" name="terms_consent" required>
<label for="terms_consent">
Acepto explícitamente las <a href="#" onclick="showTerms()">Condiciones del servicio</a> y doy mi consentimiento para el tratamiento de mis datos de acuerdo con la <a href="#" onclick="showPrivacy()">Política de privacidad</a>.
</label>
</div>
¿Tiene preguntas sobre su configuración específica?
Nuestro equipo trabaja con operadores de recintos, responsables de TI e ingenieros de redes en 80 000 espacios. Reserve una llamada de 20 minutos y le mostraremos cómo lo han solucionado otros profesionales como usted.
Plantilla HTML/CSS personalizada de Captive Portal
A continuación, se muestra una plantilla HTML/CSS completa de un solo archivo, lista para producción, que incorpora todas las mejores prácticas para móviles y conformes con CNA. Cuenta con un diseño adaptativo, una pila de fuentes del sistema, marcadores de posición listos para Base64, entradas táctiles y estructuras de consentimiento explícitas que cumplen con el GDPR:
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<title>Inicio de sesión WiFi de invitados</title>
<style>
/* Restablecimiento de CSS y declaraciones de variables */
:root {
--color-primary: #7458FD; /* Color de la marca Purple */
--color-dark: #011638; /* Azul oscuro */
--color-light: #F5F1ED; /* Blanco perla */
--color-white: #FFFFFF;
--color-border: #D1D5DB;
--radius-container: 12px;
--radius-element: 6px;
}
* {
box-sizing: border-box;
-webkit-tap-highlight-color: transparent;
}
body {
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
background-color: var(--color-light);
color: var(--color-dark);
margin: 0;
padding: 20px;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
min-height: 100vh;
}
/* Diseño de tarjeta adaptativo */
.portal-card {
background-color: var(--color-white);
width: 100%;
max-width: 420px;
padding: 32px 24px;
border-radius: var(--radius-container);
box-shadow: 0 4px 20px rgba(1, 22, 56, 0.05);
text-align: center;
}
.logo-container {
margin-bottom: 24px;
}
/* Marcador de posición de logotipo en Base64 integrado */
.logo {
width: 120px;
height: auto;
}
h1 {
font-size: 24px;
font-weight: 700;
margin: 0 0 8px 0;
color: var(--color-dark);
}
p {
font-size: 14px;
color: #4B5563;
margin: 0 0 24px 0;
line-height: 1.5;
}
/* Estilos del formulario */
.form-group {
text-align: left;
margin-bottom: 16px;
}
label {
display: block;
font-size: 14px;
font-weight: 600;
margin-bottom: 6px;
color: var(--color-dark);
}
/* Crítico: el tamaño de fuente debe ser de al menos 16px para evitar el zoom automático en iOS */
input[type="email"],
input[type="text"] {
width: 100%;
height: 48px;
padding: 12px 16px;
font-size: 16px;
border: 1px solid var(--color-border);
border-radius: var(--radius-element);
background-color: var(--color-white);
color: var(--color-dark);
outline: none;
transition: border-color 0.2s;
}
input[type="email"]:focus,
input[type="text"]:focus {
border-color: var(--color-primary);
box-shadow: 0 0 0 3px rgba(116, 88, 253, 0.15);
}
/* Estilos de consentimiento */
.consent-group {
display: flex;
align-items: flex-start;
text-align: left;
margin: 20px 0;
}
/* Tamaño del área táctil optimizado para móviles */
input[type="checkbox"] {
width: 20px;
height: 20px;
margin: 2px 12px 0 0;
flex-shrink: 0;
cursor: pointer;
accent-color: var(--color-primary);
}
.consent-label {
font-size: 13px;
line-height: 1.4;
color: #4B5563;
user-select: none;
}
.consent-label a {
color: var(--color-primary);
text-decoration: none;
font-weight: 600;
}
.consent-label a:hover {
text-decoration: underline;
}
/* Touch-Friendly CTA Button (Minimum 44px height) */
.btn-submit {
width: 100%;
height: 48px;
background-color: var(--color-primary);
color: var(--color-white);
border: none;
border-radius: var(--radius-element);
font-size: 16px;
font-weight: 600;
cursor: pointer;
transition: background-color 0.2s;
display: flex;
align-items: center;
justify-content: center;
}
.btn-submit:hover {
background-color: #5B3EE3;
}
.btn-submit:active {
background-color: #4A2FD4;
}
/* Legal Terms Scrollbox */
.terms-scrollbox {
display: none; /* Toggled via JS */
text-align: left;
font-size: 11px;
color: #6B7280;
background-color: var(--color-light);
padding: 12px;
border-radius: var(--radius-element);
max-height: 100px;
overflow-y: auto;
margin-bottom: 16px;
border: 1px solid var(--color-border);
}
.footer {
margin-top: 24px;
font-size: 11px;
color: #9CA3AF;
}
</style>
</head>
<body>
<div class="portal-card">
<div class="logo-container">
<!-- Replace src with your actual Base64-encoded SVG or PNG -->
<svg class="logo" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 30">
<rect width="100" height="30" rx="6" fill="#7458FD"/>
<text x="50" y="20" font-family="sans-serif" font-size="12" fill="#FFFFFF" font-weight="bold" text-anchor="middle">SU MARCA</text>
</svg>
</div>
<h1>Le damos la bienvenida a Guest WiFi</h1>
<p>Introduzca sus datos a continuación para obtener un acceso seguro y de alta velocidad a Internet.</p>
<!-- Form must submit natively (full page navigation) to clear Apple CNA -->
<form action="/login/submit" method="POST" onsubmit="return validateForm()">
<div class="form-group">
<label for="guest_name">Nombre completo</label>
<input type="text" id="guest_name" name="name" placeholder="Juan Pérez" required autocomplete="name">
</div>
<div class="form-group">
<label for="guest_email">Dirección de correo electrónico</label>
<input type="email" id="guest_email" name="email" placeholder="juan@ejemplo.com" required autocomplete="email">
</div>
<div class="consent-group">
<input type="checkbox" id="terms_consent" name="terms_accepted" required>
<label for="terms_consent" class="consent-label">
Acepto los <a href="#" onclick="toggleTerms(event)">Términos de servicio</a> y doy mi consentimiento para el tratamiento de datos de conformidad con el reglamento GDPR.
</label>
</div>
<div id="terms_box" class="terms-scrollbox">
<strong>Términos de servicio de WiFi:</strong><br>
1. Este servicio se proporciona tal cual, sin garantías.<br>
2. Los usuarios no deben realizar actividades ilegales que consuman mucho ancho de banda.<br>
3. Los datos personales se recopilan exclusivamente para la autenticación y la aceptación de comunicaciones de marketing, de conformidad con nuestra Política de privacidad.
</div>
<button type="submit" class="btn-submit">Conectarse a WiFi</button>
</form>
<div class="footer">
Tecnología de Purple | Secure Guest WiFi
</div>
</div>
<script>
function toggleTerms(e) {
e.preventDefault();
var box = document.getElementById('terms_box');
box.style.display = (box.style.display === 'block') ? 'none' : 'block';
}
function validateForm() {
var consent = document.getElementById('terms_consent');
if (!consent.checked) {
alert('Debe aceptar los Términos de servicio para conectarse.');
return false;
}
return true;
}
</script>
</body>
</html>
Solución de problemas y mitigación de riesgos
Al implementar Captive Portals con código HTML/CSS personalizado, los equipos de operaciones de TI suelen encontrarse con varios riesgos operativos graves:
1. El bucle de advertencia de certificados SSL/TLS
Debido a que los Captive Portals funcionan interceptando el tráfico, presentan un conflicto fundamental con la seguridad web HTTPS moderna. Cuando un usuario intenta visitar un sitio HTTPS (por ejemplo, https://www.google.com) y la puerta de enlace intenta redirigir ese tráfico a un Captive Portal HTTP, el navegador detecta una discrepancia en el certificado SSL y muestra una advertencia de seguridad crítica de "La conexión no es privada".
- Mitigación: Nunca intente interceptar el tráfico HTTPS directamente. Confíe plenamente en el asistente CNA nativo del sistema operativo (que realiza una solicitud HTTP no cifrada para activar la redirección). Asegúrese de que el dominio de su Captive Portal tenga un certificado SSL válido y de confianza pública (por ejemplo, Let's Encrypt o DigiCert) y que se sirva a través de HTTPS solo después de que la redirección HTTP inicial haya dirigido correctamente al usuario al dominio de su portal [2].
2. Fallos de resolución DNS (la trampa del jardín vallado)
Si su página HTML personalizada hace referencia a recursos externos, como un endpoint OAuth de inicio de sesión social (por ejemplo, Facebook, Google) o una pasarela de pago, las solicitudes DNS para estos dominios fallarán a menos que estén explícitamente en la lista blanca en el Walled Garden del controlador inalámbrico. Si falta un dominio en la lista blanca, el flujo de inicio de sesión se detendrá, mostrando una pantalla en blanco.
- Mitigación: Mantenga una lista de Walled Garden estricta y mínima. Si utiliza inicios de sesión sociales, incluya en la lista blanca los dominios comodín específicos recomendados por los proveedores de identidad (por ejemplo,
*.google.com,*.gstatic.com).
3. Vulnerabilidades de tiempo de espera de sesión y suplantación de MAC
Los portales cautivos estándar autentican los dispositivos en función de sus direcciones MAC. Sin embargo, los sistemas operativos móviles modernos (iOS 14+ y Android 10+) utilizan direcciones MAC aleatorias (direcciones WiFi privadas) por defecto, rotándolas periódicamente. Esto puede hacer que se pida repetidamente a los invitados que se vuelvan a autenticar, destruyendo la experiencia de usuario [1].
- Mitigación: Implemente tiempos de espera de sesión razonables (por ejemplo, 24 horas) en el servidor RADIUS para evitar sesiones inactivas, y utilice estándares de autenticación modernos como Passpoint (Hotspot 2.0) o WPA3-Enterprise para una incorporación fluida y segura que evite por completo los portales cautivos basados en MAC.
Relevancia del producto Purple: Desarrollar frente a comprar
Aunque codificar una sola página HTML es sencillo, alojar, asegurar y escalar una infraestructura de portal cautivo personalizada plantea enormes obstáculos técnicos y de cumplimiento normativo. La siguiente tabla compara las realidades operativas y de ingeniería de autoalojar un portal personalizado frente a utilizar la plataforma gestionada para empresas de Purple:
| Característica / Requisito operativo | Portal personalizado autoalojado | Plataforma WiFi empresarial de Purple |
|---|---|---|
| Personalización de HTML/CSS | Codificación totalmente manual, subiendo archivos a puntos de acceso individuales o servidores web locales. | Editor para desarrolladores con precisión de píxel que permite inyecciones de HTML/CSS personalizadas, combinado con un constructor visual de arrastrar y soltar. |
| Infraestructura RADIUS | Debe implementar, configurar y mantener servidores FreeRADIUS o Cloud RADIUS de alta disponibilidad [4]. | RADIUS nativo de la nube, integrado y distribuido globalmente con redundancia activo-activo y acuerdos de nivel de servicio de tiempo de actividad del 99.99%. |
| Soporte de AP de múltiples proveedores | Se requieren scripts de integración personalizados para cada proveedor de hardware (Cisco, Aruba, Meraki, Ruckus) [5]. | Integración nativa y lista para usar con más de 200 modelos de hardware; despliegue de portal unificado en parques de hardware mixto. |
| Privacidad de datos y cumplimiento | El establecimiento asume el 100% de la responsabilidad legal para el cumplimiento de GDPR, CCPA y PCI DSS, incluyendo el cifrado seguro de bases de datos y los flujos de trabajo de eliminación de datos. | Totalmente conforme por diseño. Gestión de consentimiento integrada, solicitudes automatizadas de eliminación de datos de los interesados y alojamiento seguro con certificación ISO 27001. |
| Identity Provider Integrations | Integraciones manuales de OAuth2 con Google, Facebook, Apple y pasarelas de SMS locales. | Integraciones en un solo clic con las principales plataformas sociales, pasarelas de SMS y Azure AD / Okta para invitados corporativos. |
La plataforma de Purple resuelve el dilema entre "crear o comprar". Ofrece a los desarrolladores la total libertad creativa de un espacio de trabajo HTML/CSS personalizado, al tiempo que elimina la compleja ingeniería de infraestructura de backend de alto riesgo necesaria para soportar la autenticación RADIUS segura a escala.
ROI e impacto empresarial
Invertir en un portal cautivo personalizado, adaptativo y diseñado profesionalmente ofrece un retorno cuantificable en las operaciones de TI, el marketing y el cumplimiento legal.
1. Reducción de costes operativos (tickets de soporte de TI)
En despliegues a gran escala, como un estadio o una cadena minorista con múltiples ubicaciones, un portal cautivo con fallos es uno de los principales desencadenantes de escaladas de soporte de TI. Cuando los invitados se encuentran con una "pantalla en blanco" o un botón de inicio de sesión que no responde, saturan al personal de las instalaciones o envían tickets de soporte.
$$\text{Ahorro anual en soporte} = (\text{Total de visitas anuales de invitados} \times \text{Tasa de fallos del portal} \times \text{Tasa de contacto con soporte}) \times \text{Coste por ticket de soporte}$$
- Escenario: Un centro de convenciones con 1.000.000 de visitantes anuales. Un portal mal codificado tiene una tasa de fallos del 5% en dispositivos iOS más antiguos, lo que genera una tasa de contacto con el soporte técnico del 10%. Con un coste estándar de mercado de 15 $ por ticket de soporte, el coste operativo es: $$(1.000,000 \times 0,05 \times 0,10) \times $15 = $75.000 \text{ anuales en gastos de soporte evitables}$$
- Resultado: La transición a una plantilla optimizada para CNA y centrada en móviles reduce la tasa de fallos del portal a <0,1%, eliminando prácticamente este desgaste operativo.
2. Captura de datos de marketing y optimización de suscripciones
Para los sectores de comercio minorista y hostelería, el portal WiFi para invitados es el mecanismo principal para capturar datos limpios de primera mano de los clientes. Una interfaz de usuario mal diseñada con texto microscópico o un diseño de formulario engorroso provoca altas tasas de rebote - los usuarios abandonan el proceso de inicio de sesión por completo, lo que se traduce en la pérdida de oportunidades de marketing.
- Caso de estudio (Comercio minorista): Una cadena nacional de tiendas implementó un portal cautivo optimizado para móviles utilizando la plataforma de Purple. Al sustituir un formulario de registro de varios pasos por un campo único para introducir el correo electrónico (tamaño de fuente: 16px) y un botón optimizado con un área de interacción de 48px, registraron un incremento del 42% en registros completados y un aumento del 28% en las suscripciones al boletín de marketing en el primer trimestre [6].
3. Mitigación de riesgos legales y regulatorios
Bajo el GDPR y la CCPA, la recopilación de datos que no cumpla con las normativas acarrea graves sanciones financieras (hasta el 4% de la facturación anual global bajo el GDPR). Confiar en casillas de verificación previamente marcadas o no proporcionar una Política de Privacidad clara y de fácil acceso en su página de bienvenida expone a la empresa a una inmensa responsabilidad legal.
- ROI de la mitigación: La implementación de una casilla de consentimiento explícita y sin marcar, junto con el alojamiento de las condiciones dentro de un cuadro de desplazamiento optimizado, garantiza el cumplimiento normativo al 100%, mitigando el riesgo de multas reguladoras multimillonarias y protegiendo la reputación de la marca.
Resumen de conclusiones clave
- El Sandbox de CNA es restrictivo: La Websheet de Apple iOS y el CNA de macOS son entornos altamente aislados en sandbox que bloquean recursos externos, cookies y fuentes web. Todo el estilo y los recursos deben ser autónomos (CSS en línea, imágenes Base64, fuentes del sistema) [1].
- AJAX interrumpe el saludo de salida de iOS: Para realizar con éxito la transición del dispositivo iOS de "cautivo" a "conectado" (cambiando el botón superior derecho de "Cancelar" a "Listo"), debe activar una redirección HTTP de página completa. Las actualizaciones asíncronas del DOM dejarán al dispositivo en un bucle cautivo.
- El enfoque móvil primero es obligatorio: Más del 90% de los inicios de sesión se realizan en dispositivos móviles. Diseñe un diseño de una sola columna (ancho máximo: 480px), utilice objetivos táctiles fáciles de pulsar (mínimo 44px x 44px) y aplique un tamaño de fuente mínimo de 16px en todos los campos de entrada de texto para evitar el zoom automático del navegador de iOS.
- Los jardines vallados controlan el DNS: Cualquier dominio externo referenciado durante el inicio de sesión (por ejemplo, las API de inicio de sesión social) debe estar explícitamente en la lista blanca en el jardín vallado del controlador inalámbrico, o de lo contrario la página no se cargará.
- Purple elimina la complejidad del backend: El uso del creador de portales de Purple ofrece a los desarrolladores un control total de HTML/CSS a través de un editor personalizado, al tiempo que delega las inmensas cargas de seguridad, escalabilidad y cumplimiento normativo de RADIUS, las integraciones de AP de múltiples proveedores y la gestión de bases de datos conforme al GDPR [3].
Referencias
- [1] Wireless Broadband Alliance: Captive Network Portal Behaviour
- [2] Android Open Source Project: Captive Portal Login Webview Integration
- [3] European Data Protection Board: Guidelines on Consent under Regulation 2016/679
- [4] Cómo implementar la autenticación 802.1X con Cloud RADIUS
- [5] Cisco Wireless APs: Guía de productos y despliegue 2026
- [6] Plataforma de marketing y analítica Purple WiFi
Escuche la sesión técnica informativa
Escuche a un arquitecto de soluciones sénior analizar las limitaciones técnicas y las estrategias de implementación para portales cautivos personalizados:
Definiciones clave
Captive Portal
Una página web que se muestra a los usuarios recién conectados a una red WiFi antes de que se les conceda un acceso más amplio a los recursos de la red, utilizada normalmente para la autenticación, el pago o la visualización de las condiciones del servicio.
Los equipos de TI despliegan portales cautivos a nivel de pasarela para controlar el acceso de invitados, capturar datos de usuarios y garantizar el cumplimiento legal.
Captive Network Assistant (CNA)
Un mininavegador en entorno seguro (sandbox) y altamente restringido que los sistemas operativos (como Apple iOS y macOS) inician automáticamente al detectar una redirección de red cautiva, diseñado exclusivamente para facilitar la autenticación en el portal.
Las vistas web de CNA imponen limitaciones estrictas, incluyendo el bloqueo de CDN externas, cookies persistentes y almacenamiento local, lo que con frecuencia rompe los diseños web estándar.
Walled Garden
Una lista restringida de direcciones IP, subredes o nombres de dominio a los que un usuario invitado no autenticado tiene permiso para acceder a través de la pasarela antes de completar el proceso de inicio de sesión en el Captive Portal.
Los desarrolladores deben asegurarse de que cualquier recurso externo (como las API de inicio de sesión social o las pasarelas de pago) esté incluido en la lista permitida del walled garden para evitar que el flujo de inicio de sesión se detenga.
Codificación Base64
Un esquema de codificación de binario a texto que representa datos binarios (como imágenes) como una cadena ASCII, lo que permite incrustar los recursos directamente dentro de documentos HTML o CSS.
El uso de la codificación Base64 para logotipos e iconos elimina las solicitudes HTTP externas, garantizando que los recursos se rendericen perfectamente dentro de entornos CNA sin conexión.
RADIUS (Remote Authentication Dial-In User Service)
Un protocolo de red que proporciona una gestión centralizada de autenticación, autorización y contabilidad (AAA) para los usuarios que se conectan y utilizan un servicio de red.
El servidor del Captive Portal se comunica con un servidor RADIUS para autorizar la dirección MAC del invitado en la pasarela de red una vez que se cumplen los criterios de autenticación.
Pila de fuentes del sistema
Una declaración CSS font-family que prioriza las fuentes preinstaladas del sistema operativo (como San Francisco en iOS, Segoe UI en Windows y Roboto en Android) sobre las fuentes web externas.
La implementación de una pila de fuentes del sistema garantiza una renderización tipográfica inmediata sin activar solicitudes HTTP externas bloqueadas a servicios como Google Fonts.
Canary URL
Una URL HTTP dedicada y no cifrada mantenida por los proveedores de sistemas operativos (por ejemplo, captive.apple.com) para comprobar si un dispositivo tiene conectividad a internet sin restricciones.
El gestor de red en segundo plano del sistema operativo comprueba esta URL para detectar la presencia de un Captive Portal y activar la ventana emergente de la CNA.
Passpoint (Hotspot 2.0)
Un estándar del sector desarrollado por la WiFi Alliance que permite a los dispositivos móviles descubrir y autenticarse automáticamente de forma segura en puntos de acceso WiFi, evitando los inicios de sesión manuales en el Captive Portal.
Las empresas utilizan Passpoint junto con plataformas como Purple para que los invitados pasen de páginas de bienvenida con fricciones a experiencias de itinerancia seguras y fluidas, similares a las de la red móvil.
Ejemplos prácticos
Una cadena de hoteles de lujo de 250 habitaciones [Hospitality](/industries/hotels) desea implementar una página de inicio de sesión de WiFi para invitados personalizada que se adapte perfectamente a las directrices de su marca premium. Su agencia creativa diseñó una página de bienvenida utilizando tipografía de marca personalizada (alojada en Adobe Fonts), múltiples imágenes de fondo de alta resolución (alojadas en un contenedor público de AWS S3) y un asistente de JavaScript animado de varios pasos. Al implementarlo, los invitados con iOS se conectan al SSID, pero el portal aparece como una pantalla blanca en blanco y los usuarios no pueden autenticarse.
Para resolver la pantalla en blanco y el diseño de marca roto, debemos reestructurar la arquitectura frontend del portal para cumplir con las restricciones del entorno de pruebas (sandbox) de Apple CNA:
- Remediación de tipografía: Dado que Adobe Fonts requiere una solicitud HTTP externa que está bloqueada por el CNA, reemplazamos la llamada a la fuente personalizada con una pila de fuentes del sistema nativa y premium (
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif;). Esto garantiza un renderizado instantáneo sin llamadas de red externas. - Optimización de recursos: Las imágenes de fondo en AWS S3 están bloqueadas porque S3 no está en el walled garden de la puerta de enlace. Comprimimos el logotipo principal de la marca, lo convertimos a un formato SVG ligero y lo codificamos directamente en el HTML como un Data URI en Base64. Para el fondo, reemplazamos las imágenes pesadas con un degradado CSS limpio y adaptativo que utiliza los colores de la marca del hotel, reduciendo significativamente el peso de la página.
- Simplificación de JavaScript: El asistente animado de varios pasos depende de las librerías externas jQuery y GSAP. Eliminamos estas dependencias externas y refactorizamos el formulario en una estructura HTML de una sola columna y una sola página. La validación del formulario se reescribe en JavaScript nativo y ligero.
- Apretón de manos de autenticación: El envío del formulario se modifica de un envío basado en AJAX a un formulario HTML nativo
<form action="/submit" method="POST">para activar una redirección de página completa, lo que permite que el Websheet de iOS ejecute su comprobación de canary y muestre el botón "Hecho".
Una cadena minorista nacional [Retail](/industries/retail) con 450 tiendas desea capturar los correos electrónicos de los invitados a través de páginas de bienvenida de WiFi para alimentar su CRM. Solicitan que los invitados opten por recibir boletines de marketing. El diseño inicial tiene una casilla de verificación previamente marcada que dice "Acepto recibir correos electrónicos de marketing". Además, el portal está alojado en un único servidor local en su sede central. Durante las horas punta (sábado por la tarde), los invitados de todo el país experimentan graves retrasos y muchos no pueden cargar la página de inicio de sesión, lo que provoca una caída masiva en las tasas de captura de datos.
Debemos abordar tanto la infracción de cumplimiento normativo como el cuello de botella en la infraestructura:
- Corrección de cumplimiento: Bajo el GDPR y la CCPA, las casillas de consentimiento premarcadas son ilegales. Modificamos el HTML para que la casilla de consentimiento de marketing no esté marcada por defecto (
<input type="checkbox" id="marketing_consent">). También añadimos una casilla obligatoria y separada para las Condiciones del servicio con el fin de desvincular el acuerdo legal del consentimiento de marketing. - Escalado de infraestructura: Alojar un Captive Portal nacional en un único servidor centralizado genera un único punto de fallo y un cuello de botella masivo de latencia. Migramos el frontend del portal a una red de distribución de contenidos (CDN) altamente disponible y distribuida globalmente con almacenamiento en caché perimetral (edge-caching).
- Integración RADIUS: Configuramos los puntos de acceso de las tiendas locales para que apunten a un clúster RADIUS nativo de la nube con redundancia activo-activo, garantizando que las solicitudes de autenticación se procesen localmente en el extremo con una latencia inferior a 50 ms, incluso durante los picos de tráfico de los sábados.
- Migración a Purple: Para eliminar toda esta carga de ingeniería, el minorista se migra a Purple. Las herramientas integradas de consentimiento de GDPR de Purple gestionan automáticamente las altas de conformidad, y su infraestructura en la nube distribuida globalmente procesa millones de autenticaciones diarias con un tiempo de actividad del 99.99 %, resolviendo por completo el cuello de botella de escalado.
Preguntas de práctica
Q1. Un equipo de TI de un gran aeropuerto internacional [Transport](/industries/trains) despliega un Captive Portal codificado a medida. Observan que, aunque los usuarios de Android se conectan sin problemas, una parte importante de los usuarios de iOS experimenta un problema por el cual se autentican correctamente pero no pueden navegar por la web. Al examinarlo más de cerca, los dispositivos iOS muestran que están conectados al SSID, pero el botón superior derecho de la ventana emergente del portal sigue diciendo "Cancelar" en lugar de "Aceptar". ¿Cuál es la causa principal de este problema y cómo debe solucionarlo el desarrollador?
Sugerencia: Analice cómo el asistente CNA de Apple detecta que una red ha pasado de cautiva a autenticada, y qué acción del navegador es necesaria para activar esta comprobación.
Ver respuesta modelo
La causa principal es que la página de éxito del portal actualiza la interfaz de usuario de forma dinámica a través de JavaScript (enrutamiento AJAX/SPA) en lugar de realizar una navegación HTTP de página completa. El mini-navegador Captive Network Assistant (CNA) de Apple iOS solo vuelve a ejecutar su comprobación de conectividad en segundo plano (la solicitud canaria a captive.apple.com) cuando se produce un redireccionamiento o navegación de página completa. Si el desarrollador envía el formulario de inicio de sesión a través de AJAX y simplemente muestra un mensaje de "Éxito" en el DOM, la CNA no se entera de que la red se ha desbloqueado. Por consiguiente, el botón superior derecho sigue apareciendo como "Cancelar". Si el usuario hace clic en "Cancelar" para salir, el sistema operativo asume que el inicio de sesión ha fallado y se desconecta de la red WiFi.
Solución: El desarrollador debe modificar el controlador de éxito de la autenticación para forzar un redireccionamiento de página completa. Esto se puede lograr enviando el formulario de inicio de sesión de forma nativa a través de un HTML estándar <form action="/submit" method="POST"> o ejecutando window.location.href = '/success_landing_page' en JavaScript una vez que la API devuelva una respuesta de autenticación correcta. Esto activa la carga de página completa requerida, lo que obliga al asistente de la CNA a volver a evaluar el estado de la red, verificar que la Canary URL ahora es accesible y cambiar el botón superior derecho a "Aceptar".
Q2. Un equipo de operaciones de un estadio [Events] desea poner en marcha una red WiFi para invitados que capte suscripciones de marketing. El responsable de cumplimiento normativo insiste en que el portal debe cumplir al 100% con el GDPR. El equipo de desarrollo presenta una maqueta en la que el formulario de inicio de sesión tiene una casilla premarcada que dice "Acepto las Condiciones del servicio y doy mi consentimiento para recibir boletines de marketing". ¿Por qué este diseño no cumple con la normativa y cómo deberían reestructurarse el HTML/CSS y la estructura del formulario para satisfacer el GDPR manteniendo al mismo tiempo una alta tasa de conversión?
Sugerencia: Tenga en cuenta los estrictos requisitos del GDPR relativos al consentimiento explícito, la disociación de las opciones de marketing de las condiciones de servicio y la visibilidad física de los textos legales en las pantallas de los móviles.
Ver respuesta modelo
El diseño propuesto infringe el GDPR en dos aspectos principales: en primer lugar, las casillas de verificación marcadas previamente no constituyen un consentimiento válido, el cual debe ser libre, específico, informado e inequívoco. En segundo lugar, vincular el consentimiento de marketing con la aceptación de las Condiciones del servicio no cumple la normativa; no se puede obligar a un usuario a aceptar correos electrónicos de marketing como condición para utilizar el servicio WiFi.
Estrategia de refactorización:
- Desvincular el consentimiento: Divida la casilla de verificación en dos casillas distintas. La casilla A es obligatoria y cubre las Condiciones del servicio y la Política de privacidad. La casilla B es opcional y cubre la suscripción al boletín de marketing.
- Establecer como desmarcada: Asegúrese de que ambas casillas estén desmarcadas por defecto en el HTML (omitiendo el atributo
checked). - Visibilidad CSS: Dado que más del 90% de los usuarios acceden desde dispositivos móviles, coloque las casillas de verificación justo encima del botón "Conectar" para que sean visibles en la parte superior sin necesidad de hacer scroll. Utilice una pila de fuentes del sistema y establezca el tamaño de fuente de la etiqueta en 14px con una altura de línea de 1.4 para mejorar la legibilidad.
- Cuadro de desplazamiento de condiciones: Para evitar que el texto legal desplace los elementos del formulario fuera de la pantalla, coloque las Condiciones del servicio detalladas en un contenedor con desplazamiento y altura fija (
max-height: 100px; overflow-y: auto; background-color: #F5F1ED; border: 1px solid #D1D5DB; border-radius: 6px;) que se pueda abrir o cerrar mediante un enlace de texto. Esto mantiene un diseño limpio y de alta conversión, garantizando al mismo tiempo el cumplimiento legal absoluto.
Q3. Una cadena de tiendas [Retail](/industries/retail) está implementando una página de inicio (splash page) codificada a medida en 100 tiendas. El diseñador utilizó Google Fonts (Montserrat) y enlazó a una hoja de estilo Bootstrap alojada en un CDN en la cabecera HTML. Durante las pruebas en una red corporativa, la página se visualiza perfectamente. Sin embargo, al implementarla en un AP de prueba de una tienda con una configuración de red cautiva, la página se muestra con texto sin estilo en Times New Roman, la alineación rota y faltan iconos. ¿Por qué ocurre esto y cómo se deben refactorizar los recursos?
Sugerencia: Analice el estado de la conexión de red antes de que se autentique un usuario y determine cómo gestiona el navegador las solicitudes HTTP externas a dominios fuera del walled garden.
Ver respuesta modelo
Este fallo se produce porque el dispositivo se encuentra en un estado cautivo no autenticado cuando se carga la página de inicio. En este estado, la pasarela inalámbrica bloquea todo el tráfico de internet saliente, permitiendo únicamente solicitudes a los dominios incluidos explícitamente en la lista blanca del Walled Garden de la pasarela. Dado que los dominios de CDN para Bootstrap (cdn.jsdelivr.net) y Google Fonts (fonts.googleapis.com) no están en la lista blanca, las solicitudes del navegador para obtener la hoja de estilo y los archivos de fuentes fallan silenciosamente. En consecuencia, el navegador recurre a su motor de renderizado por defecto, lo que da como resultado un HTML sin estilo (texto en Times New Roman) y diseños rotos.
Estrategia de refactorización:
- CSS en línea: Elimine el enlace externo a la hoja de estilo Bootstrap. Copie las reglas CSS de grid/flexbox necesarias directamente en un bloque
<style>dentro del<head>del HTML. Esto garantiza que todas las instrucciones de diseño se entreguen en la carga inicial de la página única. - Implementar pila de fuentes del sistema: Elimine la llamada
@importo<link>de Google Fonts. Reemplácela por una pila de fuentes nativas del sistema en el CSS (font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;). Esto obliga al dispositivo a utilizar fuentes de alta calidad ya preinstaladas en el sistema operativo, eliminando por completo la dependencia de la red externa. - Codificar iconos/logotipos en Base64: Si el diseño depende de imágenes externas o librerías de iconos (como FontAwesome), convierta estos iconos al formato SVG e intégrelos en línea dentro del HTML o como URI de datos Base64 en el CSS. Esto garantiza que la página sea 100% autónoma y se visualice perfectamente incluso con conectividad a internet cero.
Preguntas frecuentes
¿Qué es el Captive Network Assistant (CNA) y por qué el HTML y CSS de un Captive Portal personalizado se comportan de manera diferente en él?
El Captive Network Assistant (CNA) es una vista web aislada (sandbox) y restringida que se genera automáticamente por sistemas operativos como iOS, macOS, Android y Windows al detectar la interceptación de la red. Los CNA carecen de las funciones completas de un navegador: con frecuencia bloquean ventanas emergentes, restringen el almacenamiento de cookies persistentes, limitan la velocidad de ejecución de JavaScript, desactivan las descargas de archivos y aplican límites estrictos a la ventana de visualización (viewport). El HTML y CSS de un Captive Portal personalizado debe ser ligero, independiente y evitar redirecciones externas que puedan finalizar prematuramente la sesión de CNA.
¿Qué dominios y direcciones IP deben incluirse en el walled garden de un Captive Portal?
Un walled garden (lista de permitidos previa a la autenticación) permite que los clientes inalámbricos no autenticados accedan a recursos críticos antes de iniciar sesión. Debe incluir los nombres de host para cualquier hoja de estilo CSS, paquetes de JavaScript, fuentes web o recursos de CDN alojados externamente que se utilicen en la página de inicio. Si ofrece inicio de sesión social o verificación por SMS, también debe autorizar los puntos de conexión de autenticación para Apple, Google o pasarelas de SMS, así como la redirección del controlador y los puntos de conexión de la API RFC 8908.
¿Cómo modernizan las especificaciones RFC 8908 y RFC 8910 la detección del Captive Portal frente a la redirección HTTP heredada?
Los portales cautivos tradicionales interceptan solicitudes HTTP en texto claro (puerto 80) y devuelven una redirección HTTP 302, lo que provoca advertencias de seguridad de certificados SSL/TLS si el cliente intenta una conexión HTTPS. Las especificaciones RFC 8908 y RFC 8910 establecen una API de Captive Portal estandarizada donde la red inalámbrica anuncia una URL de API a través de la opción 114 de DHCP o la opción 38 de anuncio de router IPv6. El sistema operativo del cliente consulta directamente este punto de conexión JSON, recibiendo de forma explícita el estado cautivo, las condiciones del establecimiento y las URL de autenticación sin manipulación de paquetes ni errores de certificado.
¿Qué patrones de diseño CSS funcionan mejor para las páginas de inicio de los Captive Portal en dispositivos móviles?
Las mejores prácticas para el CSS de un Captive Portal incluyen el uso de diseños fluidos con Flexbox o CSS Grid, establecer elementos táctiles interactivos de al menos 48x48 píxeles para mejorar la ergonomía táctil, utilizar fuentes del sistema (como -apple-system, BlinkMacSystemFont, Segoe UI) para evitar descargas de fuentes web que bloqueen la renderización, incorporar iconos SVG críticos en línea para minimizar las peticiones HTTP y especificar una etiqueta meta de viewport móvil estricta (width=device-width, initial-scale=1) para evitar el incómodo desplazamiento horizontal en mininavegadores.
¿Cómo simplifica Purple la implementación de un Captive Portal personalizado y la gestión de Walled Gardens?
Purple sustituye los frágiles servidores web autohospedados por una plataforma de Captive Portal en la nube para empresas. Purple ofrece herramientas de branding dinámico, orquestación automatizada de Walled Gardens en Cisco Meraki, HPE Aruba, Ruckus, Ubiquiti UniFi y Fortinet, soporte completo del estándar RFC 8908 y rigurosas pruebas de compatibilidad en webviews CNA de iOS y Android, todo ello respaldado por un 99.99% de tiempo de actividad en la nube e integraciones de marketing con CRM.
Continúe leyendo esta serie
El portal de invitados Ubiquiti UniFi no redirige: causas y soluciones
Esta guía aísla los fallos de redirección del portal de invitados de UniFi analizando en secuencia el estado del invitado, la redirección, la ruta de preautorización y la autorización del controlador. Ofrece a los equipos de TI de los establecimientos un método estructurado para resolver la confusión entre red de invitados y Hotspot, integraciones con portales externos, los requisitos actuales de las cuentas de UniFi OS y pruebas de aislamiento de DNS.
La página de splash de Cisco Meraki no funciona: diagrama de flujo para la resolución de problemas
Esta guía práctica de mantenimiento aísla el punto exacto donde ha fallado un flujo de splash de Cisco Meraki: autorización del cliente, inicio de redirección HTTP, accesibilidad del walled garden o inicio de sesión RADIUS. Proporciona a los equipos de TI de los establecimientos una ruta de pruebas controlada para restablecer el WiFi de invitados sin realizar cambios drásticos en una red en producción.
Guía de configuración de WiFi para invitados empresariales: segmentación por VLAN, seguridad y Captive Portals
Esta guía técnica muestra a los equipos de TI cómo configurar el WiFi de invitados como un servicio controlado de acceso a internet, mediante segmentación por VLAN, políticas de firewall y un Captive Portal. También explica cómo los formularios de registro y los controles de incorporación de Purple admiten una experiencia de visitante proporcionada sin debilitar el límite en torno a los sistemas de personal, pago y operativos.
¿Tiene preguntas sobre su configuración específica?
Nuestro equipo trabaja con operadores de recintos, responsables de TI e ingenieros de redes en 80 000 espacios. Reserve una llamada de 20 minutos y le mostraremos cómo lo han solucionado otros profesionales como usted.