- Purple
- Captive portals: a complete guide
- Captive Portal Personalizado: Guia de HTML e CSS
Captive Portal Personalizado: Guia de HTML e CSS
Este guia de referência técnica autoritário descreve as normas de desenvolvimento, a arquitetura CSS e as restrições ao nível da rede necessárias para conceber e programar uma página de destino de Captive Portal personalizada. Fornece aos programadores frontend e arquitetos de rede estratégias práticas para navegar nos ambientes Apple CNA e webview Android, garantindo experiências de WiFi para convidados com precisão ao nível do píxel, em conformidade e com elevado desempenho.
Video overview
Ouça este guia
Ver transcrição do podcast
Parte da nossa série principal: Guia de Captive Portal →
- Resumo Executivo
- Análise Técnica Profunda
- O Ciclo de Vida do Captive Portal
- Restrições do Mini-Browser Específicas da Plataforma
- Programar Contornando a Armadilha do Botão "Concluído" do Apple CNA
- Guia de Implementação
- A Regra de Ouro: Projetar para Conectividade de Internet Zero
- 1. Configuração do Viewport
- 2. Incorporação de CSS e Remoção de Dependências Externas
- 3. Codificação de Ativos em Base64
- 4. Otimização de Campos de Introdução de Dados e Alvos de Toque
- 5. Consentimento Legal e Conformidade com o GDPR
- Modelo de HTML/CSS Personalizado de Captive Portal
- Resolução de Problemas e Mitigação de Riscos
- 1. O Loop de Aviso de Certificado SSL/TLS
- 2. Falhas de Resolução de DNS (A Armadilha do Jardim Vedado)
- 3. Vulnerabilidades de Limite de Tempo de Sessão e MAC Spoofing
- Relevância dos Produtos Purple: Construir vs. Comprar
- ROI e Impacto no Negócio
- 1. Redução de Custos Operacionais (Pedidos de Suporte de TI)
- 2. Captação de Dados de Marketing e Otimização de Consentimento
- 3. Mitigação de Riscos Legais e Regulamentares
- Resumo dos Principais Aspetos a Reter
- Referências
- Ouça o Briefing Técnico

Resumo Executivo
Para espaços empresariais - desde hotéis de luxo Hospitality e cadeias de retalho Retail a centros de transporte Transport e campus médicos modernos Healthcare - a splash page de WiFi para convidados é a porta de entrada digital. No entanto, mais de 90% dos logins de WiFi para convidados ocorrem em dispositivos móveis, onde a renderização é controlada não por browsers normais como o Safari ou Chrome, mas por webviews altamente restritas do Captive Network Assistant (CNA) [1]. Estes "mini-browsers" impõem limitações severas de sandbox: bloqueiam CDNs externos, desativam cookies persistentes, ignoram fontes web externas e restringem severamente a execução de JavaScript para mitigar riscos de segurança e prevenir o desvio de sessões [2].
Quando um programador desenha uma splash page utilizando padrões web tradicionais, estas restrições resultam em layouts corrompidos, elementos de marca em falta e botões de login não funcionais, afetando diretamente a satisfação do cliente e o envolvimento digital. Este guia fornece soluções para estes desafios, apresentando práticas de codificação defensivas - tais como CSS inline, codificação de ativos em Base64, pilhas de fontes do sistema e handshakes de autenticação explícitos baseados em navegação - para garantir uma renderização multiplataforma perfeita. Além disso, analisamos como a utilização de uma solução gerida como o construtor de portais da Purple permite aos programadores manter o controlo criativo total de HTML/CSS enquanto delegam a autenticação RADIUS, o dimensionamento de bases de dados, a conformidade com o GDPR/PCI e as integrações de AP de múltiplos fornecedores [3].
Análise Técnica Profunda
Para construir um Captive Portal personalizado e resiliente, os programadores devem compreender a interceção ao nível da rede e a virtualização do browser que ocorre quando um convidado se associa a um SSID (Service Set Identifier) aberto.
O Ciclo de Vida do Captive Portal
Quando um dispositivo cliente se associa a um SSID cativo, a seguinte sequência é acionada:
- Associação de IP: O dispositivo conclui um handshake de 3 vias e solicita um endereço IP via DHCP.
- Procura Ativa de Conetividade: O gestor de rede em segundo plano do sistema operativo envia imediatamente um pedido HTTP GET para um URL canário dedicado e neutro em termos de fornecedor (por exemplo, o
http://captive.apple.com/hotspot-detect.htmlda Apple ou ohttp://connectivitycheck.gstatic.com/generate_204da Google) [1]. - Interceção de DNS/HTTP: O Wireless LAN Controller (WLC) local ou Access Point (AP) intercepta este pedido HTTP da porta 80. Em vez de retornar o status HTTP 200 ou 204 esperado, o gateway redireciona o tráfego do cliente para o URL da página de destino do Captive Portal através de um redirecionamento HTTP 302 [2].
- Abertura de Webview: Ao detetar o redirecionamento, o SO abre o seu mini-browser nativo Captive Network Assistant (CNA) para exibir a splash page redirecionada, evitando a necessidade de o utilizador abrir manualmente um browser completo.5. Autenticação e Transição de Estado: O utilizador preenche o formulário de início de sessão, enviando as credenciais de volta para o servidor do portal, o qual instrui o gateway (frequentemente através de um RADIUS Access-Accept ou chamada de API externa) a autorizar o endereço MAC.
- Handshake de Saída do CNA: O mini-browser do CNA executa outro HTTP GET para o seu URL canário. Se receber a resposta 200/204 esperada, altera o seu botão superior direito de "Cancelar" para "Concluído" e estabelece a ligação WiFi como a interface de rede principal.
Restrições do Mini-Browser Específicas da Plataforma
Cada sistema operativo gere este ciclo de vida dentro de diferentes ambientes de webview, resultando num comportamento altamente fragmentado. A tabela abaixo detalha estas restrições críticas:
| Plataforma / Webview | Método de Apresentação | Cookies Persistentes | Fontes Web Externas | Execução de JavaScript | Dimensões da Janela | Gatilho de Handshake de Saída |
|---|---|---|---|---|---|---|
| Apple iOS CNA (Websheet) | Popup de Mini-Browser | Bloqueado (Destruído ao fechar) | Bloqueado (Offline) | Limitado (Sem localStorage/sessionStorage) | Responsivo (Largura do dispositivo) | Apenas Redirecionamento HTTP de Página Completa [1] |
| Apple macOS CNA (Captive Network Assistant) | Popup de Mini-Browser | Bloqueado | Bloqueado | Limitado (Sem caixas de diálogo alert/confirm) | Fixo (900px x 572px) | Apenas Redirecionamento HTTP de Página Completa |
| Android (Google) (CaptivePortalLogin) | Notificação Push -> Chrome Custom Tab | Permitido (Partilhado com o Chrome) | Permitido (Se na lista de permissões do walled garden) | Completo | Responsivo | Automático (Captive Portal API / Verificação 204) [2] |
| Samsung Android (Samsung Internet) | Notificação Push -> Mini-Browser | Permitido | Permitido | Completo | Responsivo | Automático |
| Windows 10/11 (Browser Predefinido) | Início Automático do Browser Predefinido | Permitido (Contexto completo do browser) | Permitido | Completo | Responsivo | Manual / Automático |

Programar Contornando a Armadilha do Botão "Concluído" do Apple CNA
Um dos modos de falha mais frequentes no desenvolvimento de portais personalizados é a Armadilha do Botão "Concluído" em dispositivos iOS. Quando um utilizador se autentica, a webview do iOS Websheet deve detetar que a rede já não é cativa. Faz isso monitorizando o sucesso dos seus pedidos canários em segundo plano.
Crucialmente, o CNA do iOS só acionará esta verificação após uma navegação HTTP de página inteira (redirecionamento de localização). Se um programador criar uma Single Page Application (SPA) moderna que envia dados de formulário através de uma chamada AJAX assíncrona (por exemplo, fetch() ou Axios) e atualiza o DOM dinamicamente sem alterar o URL, o CNA nunca executará novamente a sua verificação de conectividade. O utilizador será autenticado ao nível do gateway, mas o botão do CNA no canto superior direito continuará a ser "Cancelar". Se o utilizador frustrado clicar em "Cancelar", o dispositivo iOS irá imediatamente desassociar-se do SSID, terminando a sessão de WiFi [1].
Para evitar isto, o processador de sucesso de autenticação deve realizar um redirecionamento de página inteira para uma página de destino física (por exemplo, window.location.href = '/success') ou enviar o formulário de início de sessão nativamente através de uma ação HTTP POST padrão.
Guia de Implementação
Para garantir uma renderização consistente em todas as plataformas, os programadores devem fazer a transição de um web design moderno e rico em recursos para um estilo de codificação defensivo e altamente autónomo.
A Regra de Ouro: Projetar para Conectividade de Internet Zero
Durante o estado cativo, o dispositivo cliente não tem qualquer acesso à internet geral. Só consegue resolver e aceder a endereços IP e domínios explicitamente listados na Walled Garden do controlador sem fios (como o próprio IP do servidor do Captive Portal). Portanto, qualquer recurso externo referenciado no seu HTML falhará ao carregar, resultando num esquema desconfigurado.
Para projetar defensivamente, implemente a seguinte Lista de Verificação de Design de Captive Portal Mobile-First:

1. Configuração do Viewport
Para evitar que os dispositivos móveis reduzam a escala do viewport para uma largura de desktop (normalmente 980px), o <head> HTML deve incluir uma etiqueta meta de viewport responsiva. Sem isto, o texto e os campos de introdução de dados parecerão microscópicos nos dispositivos móveis:
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
2. Incorporação de CSS e Remoção de Dependências Externas
Nunca ligue a ficheiros CSS externos ou CDNs (por exemplo, Bootstrap, Tailwind ou Google Fonts). Todo o CSS deve ser incorporado dentro de um bloco <style> no <head> HTML.
Para a tipografia, utilize uma pilha de fontes do sistema que referencie fontes locais pré-instaladas no sistema operativo. Isto evita totalmente os pedidos HTTP e garante que a página seja carregada instantaneamente utilizando o tipo de letra sans-serif nativo e de alta qualidade do dispositivo:
body {
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
background-color: #F5F1ED; /* Cor da Marca Pearl White */
color: #011638; /* Cor da Marca Dark Blue */
margin: 0;
padding: 0;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
min-height: 100vh;
}
3. Codificação de Ativos em Base64
Imagens, logótipos e ícones não devem ser referenciados através de URLs HTTP externos, a menos que o domínio de alojamento esteja incluído na lista de permissões (walled garden) do gateway. O método mais fiável é codificar pequenos ativos visuais (como logótipos PNG ou SVG) diretamente no HTML ou CSS como URIs de Dados Base64:
<!-- Exemplo de Logótipo Base64 Inline -->
<img src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAgMTAwIj48Y2lyY2xlIGN4PSI1MCIgY3k9IjUwIiByPSI0MCIgZmlsbD0iIzc0NThGRCIvPjwvc3ZnPg==" alt="Purple Logo" class="brand-logo">
4. Otimização de Campos de Introdução de Dados e Alvos de Toque
Para cumprir as normas de usabilidade móvel (como as Diretrizes de Interface Humana da Apple), todos os elementos interativos têm de ser otimizados para toque:
- Tamanho de Letra do Campo de Introdução: Os tamanhos de letra do texto de introdução têm de ser de pelo menos 16px. Se o tamanho de letra for inferior (por exemplo, 14px), o Safari do iOS e o CNA farão zoom automático no campo de introdução quando este estiver focado, distorcendo o esquema da página [1].
- Alvos de Toque: Os botões, caixas de seleção e hiperligações têm de ter uma área mínima de alvo de toque de 44px x 44px para evitar cliques acidentais ou a frustração do utilizador.
5. Consentimento Legal e Conformidade com o GDPR
Ao recolher dados de convidados (por exemplo, e-mail, número de telefone ou perfis sociais), a estrutura HTML tem de suportar o consentimento legal explícito. Sob o GDPR, as caixas de seleção previamente marcadas ou declarações de consentimento implícito (por exemplo, "Ao iniciar sessão, aceita os nossos termos") não estão em conformidade [3].
- Disponibilize uma caixa de seleção desmarcada por predefinição para os Termos e Condições e Políticas de Privacidade.
- Envolva o texto legal detalhado num contentor com altura limitada e barra de rolagem (
max-height: 120px; overflow-y: auto;) para manter o formulário de início de sessão principal visível sem necessidade de fazer scroll.
<div class="consent-container">
<input type="checkbox" id="terms_consent" name="terms_consent" required>
<label for="terms_consent">
Aceito explicitamente os <a href="#" onclick="showTerms()">Termos de Serviço</a> e consinto o processamento dos meus dados de acordo com a <a href="#" onclick="showPrivacy()">Política de Privacidade</a>.
</label>
</div>
Tem dúvidas sobre a sua configuração específica?
A nossa equipa trabalha com operadores de espaços, gestores de TI e engenheiros de rede em 80.000 espaços. Agende uma chamada de 20 minutos e mostraremos como outros profissionais na sua área o resolveram.
Modelo de HTML/CSS Personalizado de Captive Portal
Abaixo encontra-se um modelo completo de ficheiro único HTML/CSS, pronto para produção, que incorpora todas as melhores práticas mobile-first e em conformidade com o CNA. Apresenta um esquema responsivo, um conjunto de tipos de letra do sistema, marcadores de posição para ativos prontos para Base64, campos de introdução otimizados para toque e estruturas de consentimento explícitas em conformidade com o GDPR:
<!DOCTYPE html>
<html lang="pt">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<title>Guest WiFi Login</title>
<style>
/* CSS Reset & Variable Declarations */
:root {
--color-primary: #7458FD; /* Purple Brand Colour */
--color-dark: #011638; /* Dark Blue */
--color-light: #F5F1ED; /* Pearl White */
--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;
}
/* Layout do Card Responsivo */
.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 Posição de Logótipo Base64 Incorporado */
.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 do Formulário */
.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: font-size deve ser de pelo menos 16px para evitar o zoom automático no 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 Consentimento */
.consent-group {
display: flex;
align-items: flex-start;
text-align: left;
margin: 20px 0;
}
/* Tamanho de destino otimizado para ecrãs táteis */
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">A SUA MARCA</text>
</svg>
</div>
<h1>Bem-vindo ao WiFi de Convidados</h1>
<p>Por favor, introduza os seus dados abaixo para obter um acesso seguro e de alta velocidade à 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">Nome Completo</label>
<input type="text" id="guest_name" name="name" placeholder="John Doe" required autocomplete="name">
</div>
<div class="form-group">
<label for="guest_email">Endereço de Email</label>
<input type="email" id="guest_email" name="email" placeholder="john@example.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">
Aceito os <a href="#" onclick="toggleTerms(event)">Termos de Serviço</a> e dou o meu consentimento para o processamento de dados em conformidade com os regulamentos do GDPR.
</label>
</div>
<div id="terms_box" class="terms-scrollbox">
<strong>Termos de Serviço de WiFi:</strong><br>
1. Este serviço é fornecido "tal como está", sem garantias.<br>
2. Os utilizadores não devem envolver-se em atividades ilegais de consumo intensivo de largura de banda.<br>
3. Os dados pessoais são recolhidos exclusivamente para fins de autenticação e opções de marketing, em conformidade com a nossa Política de Privacidade.
</div>
<button type="submit" class="btn-submit">Ligar ao WiFi</button>
</form>
<div class="footer">
Disponibilizado por 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('Tem de aceitar os Termos de Serviço para se ligar.');
return false;
}
return true;
}
</script>
</body>
</html>
Resolução de Problemas e Mitigação de Riscos
Ao implementar Captive Portals com codificação HTML/CSS personalizada, as equipas de operações de TI deparam-se frequentemente com vários riscos operacionais graves:
1. O Loop de Aviso de Certificado SSL/TLS
Como os Captive Portals funcionam intercetando o tráfego, estes apresentam um conflito fundamental com a segurança web HTTPS moderna. Quando um utilizador tenta aceder a um site HTTPS (por exemplo, https://www.google.com) e o gateway tenta redirecionar esse tráfego para um Captive Portal HTTP, o navegador deteta uma incompatibilidade no certificado SSL e apresenta um aviso crítico de segurança "A sua ligação não é privada".
- Mitigação: Nunca tente intercetar tráfego HTTPS diretamente. Confie inteiramente no assistente CNA nativo do sistema operativo (que faz um pedido HTTP não encriptado para acionar o redirecionamento). Certifique-se de que o domínio do seu Captive Portal tem um certificado SSL válido e publicamente fidedigno (por exemplo, Let's Encrypt ou DigiCert) e é disponibilizado através de HTTPS apenas após o redirecionamento HTTP inicial ter encaminhado com sucesso o utilizador para o domínio do seu portal [2].
2. Falhas de Resolução de DNS (A Armadilha do Jardim Vedado)
Se a sua página HTML personalizada fizer referência a recursos externos - como um endpoint OAuth de início de sessão social (ex: Facebook, Google) ou um gateway de pagamento - os pedidos de DNS para estes domínios irão falhar, a menos que estejam explicitamente na lista de permissões do Walled Garden do controlador sem fios. Se um domínio estiver em falta na lista de permissões, o fluxo de início de sessão irá parar, apresentando um ecrã em branco.
- Mitigação: Mantenha uma lista do Walled Garden rigorosa e mínima. Se utilizar inícios de sessão sociais, adicione à lista de permissões os domínios wildcard específicos recomendados pelos fornecedores de identidade (ex:
*.google.com,*.gstatic.com).
3. Vulnerabilidades de Limite de Tempo de Sessão e MAC Spoofing
Os portais cativos padrão autenticam os dispositivos com base nos seus endereços MAC. No entanto, os sistemas operativos móveis modernos (iOS 14+ e Android 10+) utilizam endereços MAC aleatórios (endereços privados de WiFi) por predefinição, rodando-os periodicamente. Isto pode fazer com que os convidados sejam repetidamente solicitados a autenticarem-se novamente, destruindo a experiência do utilizador [1].
- Mitigação: Implemente limites de tempo de sessão razoáveis (ex: 24 horas) no servidor RADIUS para evitar sessões obsoletas, e utilize normas de autenticação modernas como o Passpoint (Hotspot 2.0) ou WPA3-Enterprise para uma integração segura e sem falhas que contorna completamente os portais cativos baseados em MAC.
Relevância dos Produtos Purple: Construir vs. Comprar
Embora programar uma única página HTML seja simples, alojar, proteger e dimensionar uma infraestrutura de Captive Portal personalizada apresenta enormes obstáculos técnicos e de conformidade. A tabela abaixo compara as realidades operacionais e de engenharia de autoalojar um portal personalizado versus utilizar a plataforma empresarial gerida da Purple:
| Funcionalidade / Requisito Operacional | Portal Personalizado Autoalojado | Plataforma Purple Enterprise WiFi |
|---|---|---|
| Personalização de HTML/CSS | Programação totalmente manual, carregamento de ficheiros para APs individuais ou servidores web locais. | Editor de programador pixel-perfect que permite injeções personalizadas de HTML/CSS, combinado com um construtor visual do tipo arrastar e largar. |
| Infraestrutura RADIUS | É necessário implementar, configurar e manter servidores FreeRADIUS ou Cloud RADIUS de alta disponibilidade [4]. | RADIUS nativo na nuvem, distribuído globalmente e incorporado com redundância ativo-ativo e SLAs de tempo de atividade de 99,99%. |
| Suporte de AP de Vários Fabricantes | Scripts de integração personalizados necessários para cada fabricante de hardware (Cisco, Aruba, Meraki, Ruckus) [5]. | Integração nativa imediata com mais de 200 modelos de hardware; implementação unificada de portais em parques de hardware misto. |
| Privacidade de Dados e Conformidade | O local assume 100% de responsabilidade legal pela conformidade com o GDPR, CCPA e PCI DSS, incluindo encriptação segura de base de dados e fluxos de eliminação de dados. | Totalmente em conformidade por conceção. Gestão de consentimento integrada, pedidos automatizados de eliminação de titulares de dados e alojamento seguro com certificação ISO 27001. |
| Analytics & Marketing | Requer a criação de pipelines personalizados de ingestão de dados e a integração de ferramentas de marketing de terceiros. | Painel de análise de classe empresarial com monitorização de tráfego pedonal em tempo real, métricas de taxa de retorno e gatilhos automatizados de campanhas de marketing [6]. |
| Integrações de Fornecedores de Identidade | Integrações OAuth2 manuais com o Google, Facebook, Apple e gateways de SMS locais. | Integrações num clique com as principais plataformas sociais, gateways de SMS e Azure AD / Okta para convidados corporativos. |
A plataforma da Purple resolve o dilema de "Construir versus Comprar". Oferece aos programadores a total liberdade criativa de um espaço de trabalho HTML/CSS personalizado, eliminando ao mesmo tempo a complexa engenharia de infraestrutura de backend de alto risco necessária para suportar a autenticação RADIUS segura à escala.
ROI e Impacto no Negócio
O investimento num portal captivo personalizado, profissionalmente concebido e responsivo, proporciona retornos quantificáveis nas operações de TI, marketing e conformidade legal.
1. Redução de Custos Operacionais (Pedidos de Suporte de TI)
Em implementações de grande escala, como um estádio ou uma cadeia de retalho com vários locais, um Captive Portal com falhas é um dos principais fatores de escalonamento de pedidos de suporte para as TI. Quando os convidados se deparam com um "ecrã branco" ou um botão de início de sessão que não responde, sobrecarregam a equipa local ou submetem pedidos de suporte.
$$\text{Poupança Anual de Suporte} = (\text{Total de Visitas Anuais de Convidados} \times \text{Taxa de Falha do Portal} \times \text{Taxa de Contacto com o Suporte}) \times \text{Custo por Pedido de Suporte}$$
- Cenário: Um centro de congressos com 1 000 000 de visitantes anuais. Um portal mal codificado tem uma taxa de falha de 5% em dispositivos iOS mais antigos, o que leva a uma taxa de contacto com o suporte de 10%. A um custo padrão da indústria de 15 $ por pedido de suporte, o custo operacional é de: $$(1 000 000 \times 0,05 \times 0,10) \times $15 = $75 000 \text{ anuais em despesas gerais de suporte evitáveis}$$
- Resultado: A transição para um modelo otimizado para CNA e prioritário para dispositivos móveis reduz a taxa de falha do portal para <0,1%, eliminando praticamente este desgaste operacional.
2. Captação de Dados de Marketing e Otimização de Consentimento
Para espaços de retalho e hotelaria, o portal de WiFi de convidados é o principal mecanismo para recolher dados limpos e em primeira mão dos clientes. Uma interface de utilizador mal desenhada, com texto microscópico ou um esquema de formulário confuso, causa elevadas taxas de rejeição - os utilizadores abandonam completamente o processo de início de sessão, resultando na perda de oportunidades de marketing.
- Estudo de Caso (Retalho): Uma cadeia nacional de retalho implementou um Captive Portal otimizado e prioritário para dispositivos móveis utilizando a plataforma da Purple. Ao substituir um formulário de início de sessão com vários passos por uma introdução de email num único campo (font-size: 16px) e um botão otimizado para toque de 48px, registaram um aumento de 42% nas inscrições concluídas e um aumento de 28% nas subscrições de newsletters de marketing no primeiro trimestre [6].
3. Mitigação de Riscos Legais e Regulamentares
Ao abrigo do GDPR e do CCPA, a recolha de dados não conforme acarreta penalizações financeiras graves (até 4% do volume de negócios anual global ao abrigo do GDPR). Confiar em caixas de seleção pré-assinaladas ou não fornecer uma Política de Privacidade clara e de fácil acesso na sua splash page expõe a empresa a uma enorme responsabilidade legal.
- ROI de Mitigação: A implementação de uma caixa de seleção de consentimento explícita e não assinalada e o alojamento dos termos dentro de uma caixa de deslocamento otimizada garante 100% de conformidade regulamentar, mitigando o risco de multas regulamentares multimilionárias e protegendo a reputação da marca.
Resumo dos Principais Aspetos a Reter
- A Sandbox do CNA é Restritiva: O Websheet de iOS da Apple e o CNA de macOS são ambientes altamente isolados (sandboxed) que bloqueiam recursos externos, cookies e fontes web. Todo o estilo e recursos devem ser autónomos (CSS inline, imagens Base64, fontes do sistema) [1].
- O AJAX Quebra o Handshake de Saída do iOS: Para transferir com sucesso o dispositivo iOS de "cativo" para "ligado" (alterando o botão superior direito de "Cancelar" para "Concluído"), deve acionar um redirecionamento HTTP de página inteira. As atualizações assíncronas do DOM deixarão o dispositivo num ciclo cativo.
- O Mobile-First é Obrigatório: Mais de 90% dos inícios de sessão ocorrem em dispositivos móveis. Desenhe um esquema de coluna única (largura máxima: 480px), utilize alvos de toque adequados para dispositivos móveis (mínimo de 44px x 44px) e aplique um tamanho mínimo de fonte de 16px em todos os campos de introdução de texto para evitar o zoom automático do navegador iOS.
- Os Walled Gardens Controlam o DNS: Qualquer domínio externo referenciado durante o início de sessão (por exemplo, APIs de início de sessão social) deve ser explicitamente adicionado à lista de permissões (whitelist) no walled garden do controlador sem fios, caso contrário a página não será carregada.
- O Purple Elimina a Complexidade do Backend: A utilização do construtor de portais do Purple oferece aos programadores controlo total de HTML/CSS através de um editor personalizado, ao mesmo tempo que transfere os imensos encargos de segurança, escalabilidade e conformidade de RADIUS, integrações de AP multi-fornecedor e gestão de bases de dados em conformidade com o GDPR [3].
Referências
- [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] How to Implement 802.1X Authentication with Cloud RADIUS
- [5] Cisco Wireless APs: 2026 Guide to Products & Deployment
- [6] Purple WiFi Marketing & Analytics Platform
-
Ouça o Briefing Técnico
Ouça um arquiteto de soluções sénior a discutir as restrições técnicas e as estratégias de implementação para portais cativos personalizados:
Definições Principais
Captive Portal
Uma página web apresentada a utilizadores recém-conectados a uma rede WiFi antes de lhes ser concedido acesso mais amplo aos recursos da rede, normalmente utilizada para autenticação, pagamento ou apresentação de termos de serviço.
As equipas de TI implementam captive portals ao nível do gateway para controlar o acesso de convidados, capturar dados de utilizadores e garantir a conformidade legal.
Captive Network Assistant (CNA)
Um mini-browser em sandbox altamente restrito, iniciado automaticamente pelos sistemas operativos (como o Apple iOS e macOS) ao detetarem um redirecionamento de rede cativa, concebido exclusivamente para facilitar a autenticação no portal.
As webviews de CNA impõem limitações estritas, incluindo o bloqueio de CDNs externas, cookies persistentes e armazenamento local, o que frequentemente quebra os designs web padrão.
Walled Garden
Uma lista restrita de endereços IP, sub-redes ou nomes de domínio a que um utilizador convidado não autenticado tem permissão para aceder através do gateway antes de concluir o processo de login no Captive Portal.
Os programadores devem garantir que qualquer recurso externo (como APIs de login social ou gateways de pagamento) está incluído na lista de permissões do walled garden para evitar que o fluxo de login fique bloqueado.
Codificação Base64
Um esquema de codificação binário para texto que representa dados binários (como imagens) como uma string ASCII, permitindo que os elementos sejam incorporados diretamente em documentos HTML ou CSS.
A utilização de codificação Base64 para logótipos e ícones elimina pedidos HTTP externos, garantindo que os elementos visuais são compostos perfeitamente em ambientes CNA offline.
RADIUS (Remote Authentication Dial-In User Service)
Um protocolo de rede que fornece gestão centralizada de Autenticação, Autorização e Contabilidade (AAA) para utilizadores que se ligam e utilizam um serviço de rede.
O servidor do Captive Portal comunica com um servidor RADIUS para autorizar o endereço MAC do convidado no gateway de rede assim que os critérios de autenticação forem cumpridos.
System Font Stack
Uma declaração CSS font-family que prioriza os tipos de letra pré-instalados no sistema operativo (como o San Francisco no iOS, o Segoe UI no Windows e o Roboto no Android) em detrimento de tipos de letra web externos.
A implementação de uma system font stack garante a composição imediata da tipografia sem desencadear pedidos HTTP externos bloqueados para serviços como o Google Fonts.
Canary URL
Um URL HTTP dedicado e não encriptado, mantido pelos fornecedores de sistemas operativos (por exemplo, captive.apple.com), para testar se um dispositivo tem conectividade de internet sem restrições.
O gestor de rede em segundo plano do sistema operativo verifica este URL para detetar a presença de um Captive Portal e acionar a janela pop-up do CNA.
Passpoint (Hotspot 2.0)
Um padrão da indústria desenvolvido pela WiFi Alliance que permite que os dispositivos móveis descubram e se autentiquem automaticamente e de forma segura em hotspots WiFi, contornando os inícios de sessão manuais em Captive Portals.
As empresas utilizam o Passpoint em conjunto com plataformas como a Purple para fazer a transição dos convidados de páginas splash com fricção para experiências de roaming seguras e contínuas, semelhantes às das redes móveis.
Exemplos Práticos
Uma cadeia de hotéis de luxo com 250 quartos [Hospitality](/industries/hotels) pretende implementar uma página de início de sessão de WiFi para convidados personalizada que corresponda perfeitamente às diretrizes da sua marca premium. A sua agência criativa concebeu uma splash page utilizando tipografia de marca personalizada (alojada em Adobe Fonts), várias imagens de fundo de alta resolução (alojadas num bucket público AWS S3) e um assistente JavaScript animado em vários passos. Quando implementado, os convidados iOS ligam-se ao SSID, mas o portal surge como um ecrã branco em branco e os utilizadores não conseguem autenticar-se.
Para resolver o ecrã em branco e a identidade visual danificada, temos de reestruturar a arquitetura frontend do portal para cumprir as restrições da sandbox do Apple CNA:
- Remediação de Tipografia: Uma vez que o Adobe Fonts requer um pedido HTTP externo que é bloqueado pelo CNA, substituímos a chamada de fonte personalizada por uma pilha de fontes de sistema nativa e premium (
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif;). Isto garante uma renderização instantânea sem chamadas de rede externas. - Otimização de Recursos: As imagens de fundo no AWS S3 são bloqueadas porque o S3 não está no walled garden do gateway. Comprimimos o logótipo principal da marca, convertemo-lo num SVG leve e codificamo-lo diretamente no HTML como um Base64 Data URI. Para o fundo, substituímos as imagens pesadas por um gradiente CSS limpo e responsivo utilizando as cores da marca do hotel, reduzindo significativamente o peso da página.
- Simplificação de JavaScript: O assistente animado de vários passos depende de bibliotecas externas jQuery e GSAP. Removemos estas dependências externas e refatoramos o formulário numa estrutura HTML de página única e coluna única. A validação do formulário é reescrita em JavaScript puro e leve.
- Handshake de Autenticação: A submissão do formulário é modificada de uma submissão baseada em AJAX para um formulário HTML nativo
<form action="/submit" method="POST">para acionar um redirecionamento de página inteira, permitindo que a Websheet do iOS execute a sua verificação canário e exiba o botão 'Concluído'.
Uma cadeia de retalho nacional [Retail](/industries/retail) com 450 lojas pretende captar e-mails de convidados através de splash pages de WiFi para alimentar o seu CRM. Exigem que os convidados aceitem receber newsletters de marketing. O design inicial tem uma caixa de seleção pré-marcada "Aceito receber e-mails de marketing". Além disso, o portal está alojado num único servidor local na sua sede. Durante as horas de ponta (sábado à tarde), os convidados de todo o país registam atrasos graves e muitos não conseguem carregar a página de início de sessão, resultando numa queda maciça nas taxas de captação de dados.
Devemos resolver tanto a violação de conformidade como o estrangulamento da infraestrutura:
- Resolução de Conformidade: Ao abrigo do GDPR e da CCPA, as caixas de consentimento pré-selecionadas são ilegais. Modificamos o HTML para que a caixa de seleção de consentimento de marketing fique desmarcada por predefinição (
<input type="checkbox" id="marketing_consent">). Também adicionamos uma caixa de seleção separada e obrigatória para os Termos de Serviço para desassociar o acordo legal da adesão ao marketing. - Dimensionamento da Infraestrutura: Alojar um Captive Portal nacional num único servidor centralizado cria um ponto único de falha e um enorme estrangulamento de latência. Migramos o frontend do portal para uma Rede de Distribuição de Conteúdos (CDN) altamente disponível e globalmente distribuída com cache na periferia (edge-caching).
- Integração RADIUS: Configuramos os pontos de acesso das lojas locais para apontarem para um cluster RADIUS nativo na nuvem com redundância ativo-ativo, garantindo que os pedidos de autenticação são processados localmente na periferia com latência inferior a 50ms, mesmo durante o pico de tráfego de sábado.
- Migração para o Purple: Para eliminar todo este esforço de engenharia, o retalhista migra para o Purple. As ferramentas de consentimento integradas em conformidade com o GDPR do Purple gerem automaticamente as adesões em conformidade, e a sua infraestrutura de nuvem globalmente distribuída lida com milhões de autenticações diárias com um tempo de atividade de 99.99%, resolvendo por completo o estrangulamento de dimensionamento.
Perguntas de Prática
Q1. Uma equipa de TI num grande aeroporto internacional [Transport](/industries/trains) implementa um Captive Portal personalizado. Notam que, embora os utilizadores de Android se liguem sem problemas, uma parte significativa dos utilizadores de iOS enfrenta um problema em que se autenticam com sucesso mas não conseguem navegar na web. Numa inspeção mais detalhada, os dispositivos iOS mostram que estão ligados ao SSID, mas o botão no canto superior direito do pop-up cativo ainda diz 'Cancelar' em vez de 'Concluído'. Qual é a causa raiz deste problema e como deve o programador corrigi-lo?
Dica: Analise como o assistente CNA da Apple deteta que uma rede transitou de cativa para autenticada, e que ação do navegador é necessária para acionar esta verificação.
Ver resposta modelo
A causa raiz é que a página de sucesso do portal está a atualizar a interface do utilizador dinamicamente via JavaScript (encaminhamento AJAX/SPA) em vez de realizar uma navegação HTTP de página inteira. O mini-navegador do Captive Network Assistant (CNA) do Apple iOS apenas executa novamente a sua verificação de conectividade em segundo plano (o pedido canary para captive.apple.com) quando ocorre um redirecionamento de URL ou navegação de página inteira. Se o programador submeter o formulário de início de sessão via AJAX e simplesmente apresentar uma mensagem de 'Sucesso' no DOM, o CNA permanece sem saber que a rede foi desbloqueada. Consequentemente, o botão do canto superior direito continua a ser 'Cancelar'. Se o utilizador clicar em 'Cancelar' para sair, o sistema operativo assume que o início de sessão falhou e desliga-se da rede WiFi.
Solução: O programador deve modificar o processador de sucesso de autenticação para forçar um redirecionamento de página inteira. Isto pode ser alcançado submetendo o formulário de início de sessão nativamente através de um elemento HTML padrão <form action="/submit" method="POST"> ou executando window.location.href = '/success_landing_page' em JavaScript assim que a API devolver uma resposta de autenticação bem-sucedida. Isto aciona o carregamento de página inteira necessário, forçando o assistente CNA a reavaliar o estado da rede, a verificar que o Canary URL está agora acessível e a alterar o botão do canto superior direito para 'Concluído'.
Q2. Uma equipa de operações de um estádio [Events] pretende lançar uma rede WiFi para convidados que capte adesões de marketing. O responsável pela conformidade insiste que o portal deve ser 100% em conformidade com o GDPR. A equipa de desenvolvimento apresenta uma maqueta onde o formulário de início de sessão tem uma caixa pré-selecionada que diz 'Aceito os Termos de Serviço e dou o meu consentimento para receber newsletters de marketing'. Por que razão este design não está em conformidade e como deve o HTML/CSS e a estrutura do formulário ser reestruturados para cumprir o GDPR mantendo uma elevada taxa de conversão?
Dica: Considere os requisitos rigorosos do GDPR relativamente ao consentimento explícito, à dissociação das adesões de marketing dos termos de serviço e à visibilidade física do texto legal em ecrãs móveis.
Ver resposta modelo
O design proposto viola o GDPR em duas frentes principais: primeiro, as caixas de seleção pré-marcadas não constituem um consentimento válido, que deve ser livremente dado, específico, informado e inequívoco. Segundo, agrupar o consentimento de marketing com a aceitação dos Termos de Serviço não está em conformidade; um utilizador não pode ser forçado a aceitar e-mails de marketing como condição para utilizar o serviço de WiFi.
Estratégia de Refatoração:
- Desassociar o Consentimento: Divida a caixa de seleção em duas caixas de seleção distintas. A Caixa de Seleção A é obrigatória e cobre os Termos de Serviço e a Política de Privacidade. A Caixa de Seleção B é opcional e cobre a subscrição da newsletter de marketing.
- Definir como Desmarcado: Garanta que ambas as caixas de seleção estão desmarcadas por predefinição no HTML (atributo
checkedomitido). - Visibilidade por CSS: Uma vez que mais de 90% dos utilizadores estão em dispositivos móveis, coloque as caixas de seleção diretamente acima do botão "Connect" para que fiquem visíveis na parte superior do ecrã sem necessidade de fazer scroll. Utilize uma família de fontes do sistema e defina o tamanho da fonte do rótulo para 14px com uma altura de linha (line-height) de 1.4 para maior legibilidade.
- Scrollbox para Termos: Para evitar que o texto legal empurre os elementos do formulário para fora do ecrã, coloque os Termos de Serviço detalhados num contentor com barra de rolagem e altura fixa (
max-height: 100px; overflow-y: auto; background-color: #F5F1ED; border: 1px solid #D1D5DB; border-radius: 6px;) que pode ser aberto ou fechado através de um link de texto. Isto mantém um design limpo e de alta conversão, garantindo ao mesmo tempo a conformidade legal absoluta.
Q3. Uma cadeia de retalho [Retail](/industries/retail) está a implementar uma splash page personalizada em 100 lojas. O designer utilizou Google Fonts (Montserrat) e incluiu um link para uma folha de estilos Bootstrap alojada num CDN no cabeçalho HTML. Durante os testes numa rede corporativa, a página é apresentada perfeitamente. No entanto, quando implementada num AP de testes de uma loja com uma configuração de rede cativa, a página é apresentada com texto em Times New Roman sem formatação, alinhamento incorreto e ícones em falta. Por que razão isto acontece e como devem os recursos ser refatorados?
Dica: Analise o estado da ligação de rede antes de um utilizador ser autenticado e determine como o navegador lida com pedidos HTTP externos para domínios fora do walled garden.
Ver resposta modelo
Esta falha ocorre porque o dispositivo se encontra num estado cativo não autenticado quando a splash page é carregada. Neste estado, o gateway sem fios bloqueia todo o tráfego de internet de saída, permitindo pedidos apenas para domínios explicitamente incluídos na lista de permissões (Walled Garden) do gateway. Como os domínios de CDN do Bootstrap (cdn.jsdelivr.net) e do Google Fonts (fonts.googleapis.com) não estão na lista de permissões, os pedidos do navegador para obter a folha de estilos e os ficheiros de fontes falham silenciosamente. Consequentemente, o navegador recorre ao seu motor de renderização padrão, resultando em HTML sem formatação (texto em Times New Roman) e layouts desconfigurados.
Estratégia de Refatoração:
- CSS Incorporado (Inline): Remova o link externo para a folha de estilos Bootstrap. Copie as regras necessárias de CSS grid/flexbox diretamente para um bloco
<style>no<head>do HTML. Isto garante que todas as instruções de layout são entregues no carregamento inicial da página única. - Implementar Fontes do Sistema: Remova a chamada
@importou<link>do Google Fonts. Substitua-a por uma família de fontes nativas do sistema no CSS (font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;). Isto força o dispositivo a utilizar fontes de alta qualidade já pré-instaladas no sistema operativo, eliminando completamente a dependência de redes externas. - Codificar Ícones/Logótipos em Base64: Se o layout depender de imagens externas ou de bibliotecas de ícones (como o FontAwesome), converta esses ícones para o formato SVG e incorpore-os diretamente no HTML ou como URIs de dados Base64 no CSS. Isto garante que a página é 100% autónoma e renderiza perfeitamente mesmo sem qualquer conectividade à internet.
Perguntas frequentes
O que é o Captive Network Assistant (CNA) e por que razão o HTML e CSS de um Captive Portal personalizado se comportam de forma diferente nele?
O Captive Network Assistant (CNA) é uma webview restrita e isolada (sandbox) iniciada automaticamente por sistemas operativos como iOS, macOS, Android e Windows ao detetar a interceção de rede. Os CNAs carecem de funcionalidades completas de navegação: bloqueiam frequentemente pop-ups, restringem o armazenamento de cookies persistentes, limitam a velocidade de execução de JavaScript, desativam downloads de ficheiros e impõem limites estritos de viewport. O HTML e CSS do Captive Portal personalizado devem ser leves, autocontidos e evitar redirecionamentos externos que possam terminar a sessão CNA prematuramente.
Que domínios e endereços IP devem ser incluídos num walled garden de um Captive Portal?
Um walled garden (lista de permissões pré-autenticação) permite que clientes sem fios não autenticados acedam a recursos críticos antes de iniciarem sessão. Deve incluir os nomes de domínio de quaisquer folhas de estilo CSS, pacotes de JavaScript, fontes web ou recursos de CDN alojados externamente que sejam utilizados na splash page. Se suportar login social ou verificação por SMS, também deve incluir na lista de permissões os endpoints de autenticação da Apple, Google ou gateways de SMS, bem como o redirecionamento do controlador e os endpoints da API RFC 8908.
Como é que as normas RFC 8908 e RFC 8910 modernizam a deteção de Captive Portals face ao redirecionamento HTTP legado?
Os Captive Portals tradicionais intercetam pedidos HTTP em texto limpo (porta 80) e devolvem um redirecionamento HTTP 302, o que causa avisos de certificado SSL/TLS se o cliente tentar uma ligação HTTPS. As especificações RFC 8908 e RFC 8910 estabelecem uma API de Captive Portal padronizada, onde a rede sem fios anuncia um URL de API através da Opção DHCP 114 ou da Opção de Anúncio de Router IPv6 38. O sistema operativo do cliente consulta este endpoint JSON diretamente, recebendo o estado cativo explícito, os termos do local e os URLs de autenticação sem adulteração de pacotes ou erros de certificado.
Que padrões de design CSS funcionam melhor para páginas de entrada de captive portal em dispositivos móveis?
As melhores práticas para o CSS do captive portal incluem o uso de layouts fluidos em Flexbox ou CSS Grid, a definição de alvos de toque interativos com pelo menos 48x48 píxeis para ergonomia tátil, a utilização de fontes do sistema (como -apple-system, BlinkMacSystemFont, Segoe UI) para evitar o descarregamento de webfonts que bloqueiam a renderização, a inclusão direta de ícones SVG críticos para minimizar os pedidos HTTP e a especificação de uma etiqueta meta viewport móvel estrita (width=device-width, initial-scale=1) para evitar um scroll horizontal inadequado dentro de mini-browsers.
Como é que o Purple simplifica a implementação de captive portal personalizados e a gestão de walled gardens?
O Purple substitui servidores web auto-alojados frágeis por uma plataforma de captive portal empresarial na nuvem. O Purple oferece ferramentas de branding dinâmicas, orquestração automatizada de walled garden em Cisco Meraki, HPE Aruba, Ruckus, Ubiquiti UniFi e Fortinet, suporte total ao padrão RFC 8908 e testes de compatibilidade rigorosos em webviews CNA de iOS e Android, com a garantia de 99.99% de tempo de atividade na nuvem e integrações de marketing com CRM.
Continue a ler esta série
Portal de convidados Ubiquiti UniFi não redireciona: causas e correções
Este guia isola uma falha de redirecionamento do portal de convidados UniFi ao seguir sequencialmente o estado do convidado, o redirecionamento, a rota de pré-autorização e a autorização do controlador. Oferece às equipas de TI dos recintos um método fundamentado para resolver a confusão entre rede de convidados e Hotspot, transições de portais externos, requisitos atuais de conta do UniFi OS e testes de isolamento de DNS.
Cisco Meraki splash page não funciona: um fluxograma de resolução de problemas
Este guia prático do dia dois isola o ponto de falha num fluxo splash Cisco Meraki: autorização do cliente, início de redirecionamento HTTP, acessibilidade do walled-garden ou início de sessão RADIUS. Disponibiliza às equipas de TI dos locais um caminho de evidências controlado para que possam restaurar o WiFi de convidados sem fazer alterações gerais num parque ativo.
Guia de Configuração de WiFi para Visitantes Empresariais: Segmentação de VLAN, Segurança e Portais Cativos
Este guia técnico mostra às equipas de TI como configurar o WiFi para Visitantes como um serviço controlado de acesso à internet, utilizando segmentação de VLAN, política de firewall e um captive portal. Também explica como os formulários de registo e controlos de adesão do Purple apoiam uma experiência de visitante proporcional sem enfraquecer o limite em torno dos sistemas operacionais, de pagamento e dos funcionários.
Tem dúvidas sobre a sua configuração específica?
A nossa equipa trabalha com operadores de espaços, gestores de TI e engenheiros de rede em 80.000 espaços. Agende uma chamada de 20 minutos e mostraremos como outros profissionais na sua área o resolveram.