Vai al contenuto principale

Captive Portal per Ubiquiti UniFi

Questa guida tecnica autorevole illustra in dettaglio la configurazione di un captive portal esterno (Purple) sull'applicazione Ubiquiti UniFi Network. Copre i meccanismi di rete sottostanti, l'implementazione passo dopo passo della rete ospiti, la whitelist del walled garden, l'autenticazione RADIUS e le strategie di risoluzione dei problemi per professionisti IT senior e amministratori di rete.

📖 10 minuti di lettura📝 2,475 parole🔧 2 esempi pratici3 domande di esercitazione📚 8 definizioni chiave

Ascolta questa guida

Visualizza trascrizione del podcast
Captive Portal for Ubiquiti UniFi — A Purple Technical Briefing [INTRODUZIONE E CONTESTO — circa 1 minuto] Benvenuti alla serie Purple Technical Briefing. Sono il vostro ospite e oggi approfondiremo le specifiche della distribuzione di un Captive Portal esterno su infrastruttura Ubiquiti UniFi, una delle piattaforme di rete più diffuse a livello globale nei settori hospitality, retail e aziendale. Se siete IT manager, network architect o systems integrator e lavorate con UniFi Cloud Gateways, Dream Machines o con l'applicazione UniFi Network, questo episodio fa al caso vostro. Analizzeremo esattamente come funziona il meccanismo del portale esterno sotto il cofano, come configurarlo correttamente, quali sono i problemi più comuni e perché l'integrazione di Purple su una distribuzione UniFi rappresenta la scelta architetturale ideale per le strutture che richiedono molto di più di una semplice splash page di base. Iniziamo. [APPROFONDIMENTO TECNICO — circa 5 minuti] In primo luogo, cerchiamo di capire cosa accade effettivamente quando un dispositivo ospite si connette a un SSID UniFi con Captive Portal abilitato. Quando un dispositivo ospite si associa al vostro SSID ospite, l'Access Point UniFi gli assegna un indirizzo IP tramite DHCP, come di consueto. Tuttavia, il dispositivo viene immediatamente inserito in quello che UniFi definisce uno stato "in attesa". In questo stato, il processo DNSmasq integrato nell'AP intercetta ogni richiesta DNS effettuata dal dispositivo, indipendentemente dal server DNS che il dispositivo crede di utilizzare. L'AP reindirizza tutto il traffico DNS a se stesso. Contemporaneamente, l'AP esegue un redirector HTTP leggero sulla porta 80. Nel momento in cui il browser dell'ospite effettua una qualsiasi richiesta HTTP (e questa è la parola chiave: HTTP, non HTTPS), il redirector risponde con un reindirizzamento 302, inviando il browser alla splash page del Captive Portal. Questo è il meccanismo che attiva la notifica "Accedi al WiFi" sui dispositivi iOS e Android. Ora, è qui che la distinzione tra portale integrato e portale esterno diventa fondamentale. Con l'Hotspot Portal integrato di UniFi, la splash page viene servita direttamente dall'applicazione UniFi Network. È funzionale, è veloce da configurare, ma è estremamente limitata. Offre solo l'autenticazione tramite password di base, voucher e pagamenti Stripe. Non è prevista l'acquisizione di indirizzi e-mail, né l'accesso tramite social, né la gestione del consenso GDPR, né l'integrazione con CRM, né alcuna analisi significativa oltre al conteggio delle sessioni. Quando si configura un Server Portale Esterno (la configurazione su cui ci concentriamo oggi), si indica al controller UniFi di reindirizzare gli ospiti a un'applicazione web completamente separata. Nel nostro caso, si tratta di Purple. L'URL inserito nel campo Server Portale Esterno diventa la destinazione di tutti i reindirizzamenti 302. Ecco l'importante dettaglio tecnico relativo a quell'URL di reindirizzamento. Quando UniFi reindirizza un ospite al tuo portale esterno, aggiunge diversi parametri di query all'URL. Questi includono: l'indirizzo MAC dell'AP, l'indirizzo MAC del dispositivo client, un timestamp Unix, l'URL originale che il client stava cercando di raggiungere e il nome dell'SSID. Il tuo portale esterno — Purple in questo contesto — acquisisce tali parametri, li utilizza per identificare il dispositivo che si connette, presenta la Captive Portal appropriata, gestisce l'autenticazione e quindi effettua una chiamata API di ritorno all'applicazione di rete UniFi per autorizzare quell'indirizzo MAC. Quella chiamata API è la stretta di mano fondamentale. A partire dalla UniFi Network Application 9.1 e successive, è presente un'API REST ufficiale con una corretta autenticazione basata su chiavi. L'endpoint di autorizzazione è una richiesta POST alla versione uno dell'API dei siti, che si rivolge allo specifico ID client, con un corpo JSON in grado di specificare limiti di tempo in minuti, limiti di utilizzo dei dati in megabyte e limiti di velocità in kilobit al secondo. Una volta che il controller riceve tale autorizzazione, invia l'istruzione all'AP e l'ospite passa da in attesa ad autorizzato. L'accesso a Internet viene concesso. Parliamo ora del Walled Garden, che UniFi chiama Pre-Authorization Access. Si tratta della whitelist di domini e indirizzi IP che gli ospiti possono raggiungere prima di essersi autenticati. È essenziale ed è una delle fonti più comuni di configurazione errata. Come minimo, il tuo walled garden deve includere il nome di dominio completo del tuo portale Purple e gli indirizzi IP o gli intervalli CIDR a cui si risolve l'infrastruttura di Purple. Se utilizzi il social login — Facebook, Google, Microsoft — devi aggiungere anche i domini degli endpoint OAuth per tali provider. Gli endpoint di accesso di Google coprono più intervalli IP e diversi domini, tra cui accounts.google.com e oauth2.googleapis.com. Anche l'infrastruttura di accesso di Facebook richiede diversi inserimenti. La documentazione di Purple fornisce un elenco aggiornato delle voci esatte richieste, e questo elenco viene mantenuto aggiornato man mano che i provider aggiornano la loro infrastruttura. C'è una particolarità critica specifica di UniFi che mette in difficoltà molte installazioni. Il reindirizzatore HTTP sull'AP intercetta solo il traffico HTTP in chiaro sulla porta 80. I dispositivi moderni — iOS, Android, Windows, macOS — eseguono tutti il rilevamento del captive portal basato su HTTPS. I dispositivi Apple raggiungono captive.apple.com tramite HTTPS. I dispositivi Android raggiungono connectivitycheck.gstatic.com. Se tali richieste HTTPS non ricevono una risposta specifica, il dispositivo potrebbe decidere che non esiste alcun captive portal e semplicemente non mostrare la richiesta di accesso. La soluzione consiste nel garantire che il walled garden includa i domini di rilevamento del captive portal per i principali sistemi operativi e che il portale Purple sia accessibile tramite HTTPS con un certificato SSL valido e attendibile. I certificati autofirmati causeranno avvisi di sicurezza del browser che impediranno il caricamento del portale. Questo è non negoziabile per le installazioni di produzione. L'altra considerazione specifica per UniFi riguarda l'accessibilità del controller. L'UniFi Network Application — sia che sia in esecuzione su un Cloud Gateway, un Cloud Key o un server self-hosted — deve essere raggiungibile dall'infrastruttura di Purple affinché le chiamate API di autorizzazione vadano a buon fine. Se il controller si trova su una rete privata dietro NAT, dovrai assicurarti che le relative porte API siano accessibili. Per i controller self-hosted, si tratta in genere della porta 8443 per l'API legacy, o della porta HTTPS standard 443 per la versione più recente dell'API introdotta nella versione 9.1. La documentazione di supporto di Purple specifica gli intervalli IP esatti che richiedono l'accesso in entrata al controller. Per l'autenticazione basata su RADIUS — rilevante quando si distribuisce Purple insieme a SSID WPA2-Enterprise o WPA3-Enterprise piuttosto che con il modello di Captive Portal aperto per gli ospiti — il server RADIUS integrato di UniFi supporta i metodi standard EAP 802.1X. Configura il profilo RADIUS in Settings, Networks, RADIUS Servers, e poi fai riferimento a quel profilo nella configurazione del tuo SSID. UniFi supporta anche RADIUS su TLS, noto come RADSEC, a partire dalla versione 8.4, che crittografa il traffico RADIUS tra l'AP e il server di autenticazione. Per le installazioni multi-sito in cui il traffico RADIUS attraversa la rete internet pubblica, RADSEC è fortemente raccomandato. [RACCOMANDAZIONI DI IMPLEMENTAZIONE E TRAPPOLE DA EVITARE — circa 2 minuti] Ecco la checklist pratica di implementazione che seguirei con qualsiasi cliente che distribuisce Purple su UniFi. In primo luogo, la segmentazione della rete. Il tuo SSID ospite deve essere su una VLAN dedicata, isolata dalle reti aziendali e IoT. UniFi rende questo processo semplicissimo: crea una rete dedicata in Settings, Networks, assegna un ID VLAN e associa il tuo SSID ospite a quella rete. Abilita l'isolamento dei client sulla rete ospite per impedire il traffico tra gli utenti ospiti. In secondo luogo, il controller deve avere un FQDN valido e un certificato SSL attendibile. Non affidarti all'indirizzo IP. Usa un nome di dominio corretto, ottieni un certificato Let's Encrypt o commerciale e configura UniFi per utilizzare quel certificato. Questo risolve la maggior parte dei problemi di reindirizzamento HTTPS. In terzo luogo, crea con cura il tuo walled garden e testalo. Le voci minime sono: il dominio del tuo Captive Portal Purple e i suoi intervalli IP, i domini di rilevamento del Captive Portal per iOS, Android e Windows, e tutti i domini dei provider OAuth che stai utilizzando. Esegui i test con un dispositivo che non si è mai connesso alla rete prima d'ora: la cache DNS e lo stato della rete possono mascherare le lacune del walled garden durante i test. In quarto luogo, per l'integrazione API, utilizza un account amministratore locale dedicato nell'applicazione UniFi Network con i permessi minimi richiesti. Non utilizzare le tue credenziali di amministratore principali. Se utilizzi Network Application 9.1 o versioni successive, usa il nuovo meccanismo di chiavi API in Control Plane, Integrations: è più sicuro e non richiede l'autenticazione basata su credenziali. In quinto luogo, considera attentamente la durata della sessione. La scadenza predefinita della sessione ospite di UniFi può essere di appena otto ore. Per le installazioni nel settore dell'ospitalità in cui gli ospiti potrebbero soggiornare per più notti, configura durate di sessione adeguate nelle impostazioni del portale Purple e assicurati che tali durate siano trasmesse correttamente nella chiamata di autorizzazione API. L'errore più comune che riscontro è l'installazione su un controller self-hosted che non è accessibile pubblicamente. Se Purple non riesce a raggiungere il tuo controller per autorizzare gli ospiti, il portale si caricherà ma l'autenticazione fallirà in modo silenzioso. Verifica sempre la connettività API dall'infrastruttura di Purple prima del lancio. [Q&A RAPIDO — circa 1 minuto] Funziona su UniFi Dream Machine Pro? Sì. Tutte le console UniFi OS — UDM, UDM Pro, UDM SE, UCG Ultra, UCG-Max — supportano la configurazione External Portal Server. L'applicazione di rete viene eseguita sul dispositivo. Posso utilizzare Purple su più siti UniFi da un unico account Purple? Sì. L'architettura multi-sito di Purple è progettata esattamente per questo. Ogni sede è configurata come un sito separato in Purple, mappato al sito UniFi corrispondente. Devo aprire le porte del firewall sul gateway UniFi? Devi assicurarti che il traffico VLAN degli ospiti possa raggiungere il dominio del portale Purple sulla porta 443. Anche la porta API del controller deve essere raggiungibile dai server di Purple. La documentazione di Purple fornisce gli intervalli IP specifici. E per quanto riguarda il WPA3? UniFi supporta WPA3 Personal e WPA3 Enterprise. Il meccanismo del Captive Portal funziona con WPA3 Personal sulle reti ospiti. WPA3 Enterprise utilizza 802.1X e RADIUS, che è un flusso di autenticazione diverso. [RIASSUNTO E PROSSIMI PASSI — circa 1 minuto] Per riassumere: implementare Purple come Captive Portal esterno su UniFi è un'integrazione ben supportata e solida dal punto di vista architetturale. I passaggi chiave sono: configurare il tuo SSID ospite con l'opzione External Portal Server che punta all'URL del tuo portale Purple, creare un walled garden completo che copra l'infrastruttura di Purple e tutti i provider OAuth che stai utilizzando, assicurarti che il tuo controller UniFi abbia un certificato SSL valido e sia accessibile dai server API di Purple, e configurare durate di sessione adeguate per il tipo di sede. Il caso aziendale è semplice. Il portale UniFi integrato offre una splash page. Purple offre una piattaforma per l'esperienza degli ospiti pronta per la conformità e basata sugli analytics, che si integra con il tuo CRM, acquisisce dati di prima parte con il consenso GDPR e fornisce le analisi delle visite e dei tempi di sosta di cui i gestori delle sedi e i team di marketing hanno effettivamente bisogno. Se sei un MSP o un integratore di sistemi che implementa UniFi su larga scala, la gestione multi-sito e le funzionalità white-label di Purple la rendono la soluzione di overlay ideale per i tuoi clienti. Per la documentazione dettagliata sulla configurazione, gli elenchi IP del walled garden e le guide all'integrazione API, visita purple.ai. Grazie per l'ascolto.

📚 Parte della nostra serie principale: Multi-Tenant WiFi

header_image.png

Executive Summary

As enterprise physical venues — ranging from large-scale retail chains [1] and multi-site hospitality groups [2] to major transport hubs [3] and educational institutions [4] — seek to maximise the value of their wireless infrastructure, the limitations of built-in hotspot controllers become a significant operational bottleneck. The Ubiquiti UniFi ecosystem provides highly reliable, cost-effective, and scalable hardware. However, its native guest portal lacks the advanced data capture, multi-site analytics, CRM integration, global privacy compliance (GDPR, CCPA, PCI DSS), and monetisation capabilities required by modern enterprise operations.

This technical reference guide provides a comprehensive architectural walkthrough for overlaying Purple's Enterprise WiFi Intelligence Platform [5] onto a Ubiquiti UniFi Network architecture. By utilising UniFi's External Portal Server capability, network architects and systems integrators can bypass local controller limitations. This integration routes guest authentication through Purple's secure, cloud-hosted identity and analytics engine, transforming a basic utility into an enterprise-grade marketing and operational asset.


Technical Deep-Dive

To deploy a secure and stable external captive portal, network engineers must understand the low-level communication and state transitions that occur when an unauthenticated client connects to the wireless network.

The Guest Connection and Redirection Lifecycle

The UniFi captive portal workflow operates on a strict state-based model. When a client associates with a guest-enabled SSID, the following sequential process is initiated:

Phase Component Action / State Transition Technical Mechanism
1. Association Client & Access Point Client associates with the SSID; DHCP server assigns IP address, subnet mask, gateway, and DNS servers. Standard 802.11 association and DHCP lease.
2. Quarantine UniFi Access Point (AP) AP places the client MAC address in a Quarantined / Pending state (authorized: false). Layer 2/3 blocking rules applied locally on the AP's virtual interface.
3. DNS Interception AP Local Daemon AP runs a local DNSmasq process that intercepts all DNS queries from pending clients. AP redirects all port 53 (UDP/TCP) traffic to its local DNS resolver, regardless of client DNS settings.
4. HTTP Interception AP Redirector AP runs a lightweight HTTP redirector daemon on port 80. Any HTTP request made by the client is intercepted. The AP responds with an HTTP 302 Found redirect.
5. Redirection Client Browser Client's browser (or the OS Captive Portal Assistant) is redirected to the configured External Portal URL. The 302 redirect URL is appended with critical query parameters containing client and AP metadata.
6. Authentication External Portal (Purple) Client interacts with the Purple splash page, completing authentication (e.g., social login, email registration, SMS OTP). Secure HTTPS session hosted on Purple's cloud infrastructure.
7. API Handshake Purple Cloud & UniFi Controller Purple validates the credentials and issues a secure API call to the UniFi Network Application. REST API call (POST request) containing the client MAC address, site ID, and session parameters.
8. Authorization UniFi Controller & AP UniFi Controller updates the client state to authorized: true and pushes the updated ACL to the AP. AP removes Layer 2/3 blocks for the client MAC address, granting full routing to the internet gateway.

The Redirection Query Parameters

When the UniFi AP issues the HTTP 302 redirect, it appends a standardised set of query parameters to the External Portal URL. The external portal must capture these parameters to identify the client and perform the subsequent API authorisation:

https://portal.purplehotspot.com/guest/s/default/?ap=94:2a:6f:d0:30:57&id=1c:71:25:63:e4:24&t=1742398732&url=http://connectivitycheck.gstatic.com%2F&ssid=purple-guest
  • ap: The MAC address of the specific UniFi Access Point to which the client is associated.
  • id: The MAC address of the client device requesting network access.
  • t: A Unix epoch timestamp representing the redirect initiation time, used for security verification.
  • url: The original URL the client attempted to access (often an OS captive portal detection endpoint).
  • ssid: The SSID name the client connected to, allowing the portal to present site-specific branding.

architecture_overview.png

The Walled Garden (Pre-Authorisation Access Control)

Before a client is authorised, all traffic is blocked except for destinations explicitly defined in the Pre-Authorisation Access list (commonly referred to as the Walled Garden). Because modern client devices run automated Captive Portal Assistants (CPAs) that test connectivity over HTTPS, and because external authentication often relies on third-party identity providers (IdPs), configuring a robust and accurate walled garden is critical.

If a required domain or IP range is omitted from the walled garden, the splash page will fail to load, social login buttons will freeze, or the client device will drop the WiFi connection entirely, assuming a broken network.


Implementation Guide

This section outlines the step-by-step configuration required to integrate Purple's External Captive Portal with the Ubiquiti UniFi Network Application (Controller).

Step 1: Network Segmentation and VLAN Configuration

To ensure enterprise-grade security and compliance (such as PCI DSS and GDPR), guest traffic must be completely isolated from corporate resources, POS systems, and IoT networks.

  1. Navigate to Settings > Networks in the UniFi Network Application.
  2. Click Create New Network.
  3. Configure the network settings as follows:
    • Name: Purple Guest Network
    • VLAN ID: 90 (or any dedicated guest VLAN tag)
    • Network Type: Guest (this automatically applies client isolation, preventing guest-to-guest communication).
    • Gateway IP/Subnet: Configure an appropriate subnet (e.g., 10.90.0.1/22 to support up to 1022 concurrent guest leases).
    • DHCP Range: Enable DHCP and define the range (e.g., 10.90.0.10 to 10.90.3.254).
    • DNS Server: Set to reliable public resolvers (e.g., Cloudflare 1.1.1.1 and Google 8.8.8.8) to ensure fast DNS resolution.

Step 2: Guest SSID Configuration

  1. Navigate to Settings > WiFi and click Create New WiFi Network.
  2. Configure the SSID parameters:
    • Name (SSID): Purple Guest WiFi
    • Security Protocol: Open (the captive portal will handle authentication).
    • Network: Select the Purple Guest Network (VLAN 90) created in Step 1.
    • Client Device Isolation: Ensure this is toggled ON.
  3. Scroll down to Hotspot Portal and check the box to Enable Captive Portal.

Step 3: Configuring the External Portal Server

Once the Hotspot Portal is enabled, you must redirect authentication to Purple's secure cloud servers.

  1. Navigate to Settings > Profiles > Guest Hotspot (or Settings > Guest Control in older controller versions).
  2. Under Authentication, select External Portal Server.
  3. Configure the following fields:
    • IP / FQDN: Enter the FQDN provided by Purple (e.g., portal.purplehotspot.com).
    • Use Secure Portal (HTTPS): Toggle ON (Mandatory for security and modern browser compatibility).
    • Redirect Using Hostname: Toggle ON and enter the FQDN portal.purplehotspot.com.
    • Port: 443 (standard HTTPS).
    • HTTPS Redirection: Toggle ON (this allows the AP to intercept initial HTTPS requests and redirect them, though it requires careful DNS management).

Step 4: Configuring Pre-Authorisation Access (Walled Garden)

To allow unauthenticated guests to load the Purple splash page and authenticate via third-party IdPs, add the following domains and IP ranges to the Pre-Authorisation Access list under Settings > Profiles > Guest Hotspot > Pre-Authorisation Access:

[
  "portal.purplehotspot.com",
  "*.purple.ai",
  "*.purplehotspot.com",
  "accounts.google.com",
  "ssl.gstatic.com",
  "*.googleapis.com",
  "*.facebook.com",
  "*.facebook.net",
  "*.fbcdn.net",
  "*.apple.com",
  "captive.apple.com",
  "connectivitycheck.gstatic.com",
  "*.microsoft.com",
  "*.live.com"
]

Note: For deployments utilising Stripe payment processing, add *.stripe.com and *.stripe.network to the pre-authorisation list.

Step 5: Establishing the API Handshake

For Purple to authorise guests, its cloud servers must communicate with your UniFi Network Application.

For UniFi Network Application 9.1 and Later (Recommended REST API)

  1. In the UniFi controller, navigate to Settings > Control Plane > Integrations.
  2. Under the API Keys section, click Generate New API Key.
  3. Assign a name (e.g., Purple Integration Key) and set the permissions to Administrator.
  4. Copy the generated API Key.
  5. Log in to your Purple Portal, navigate to Venue Settings > Integration > Ubiquiti UniFi, and paste the API Key along with your UniFi Controller's public FQDN (e.g., unifi.yourdomain.com:443).

For Legacy Controllers (Credential-Based API)

  1. Navigate to Settings > System > Admins.
  2. Create a dedicated local administrator account (e.g., purple_api).
  3. Assign Administrator or Hotspot Operator privileges.
  4. Configure a strong, unique password.
  5. In the Purple Portal, enter these credentials under the UniFi Integration tab.

Best Practices

1. SSL Certificate Requirements

Never use a self-signed SSL certificate on a production UniFi Controller or External Portal Server. Modern web browsers and operating system Captive Portal Assistants (CPAs) enforce strict SSL/TLS validation. A self-signed certificate will trigger a highly visible security warning (e.g., "Your connection is not private"), leading to high abandonment rates and brand damage.

  • Deploy a valid, publicly trusted SSL certificate (e.g., Let's Encrypt or a commercial CA certificate) on the UniFi Controller's FQDN.
  • Ensure that the controller's FQDN resolves correctly from both the internal guest VLAN and the public internet.

2. DNS Configuration

Slow DNS resolution is the primary cause of sluggish captive portal redirection.

  • Do not point guest DNS to the UniFi Gateway's local IP unless the gateway has high-performance DNS forwarding configured.
  • Instead, configure the guest DHCP scope to distribute fast, resilient public DNS servers directly to clients (e.g., Primary: 1.1.1.1, Secondary: 8.8.8.8).

3. RADIUS Guest WiFi Configuration (Enterprise Alternative)

For venues requiring certificate-based or credential-based 802.1X security rather than an open SSID with a web portal, UniFi supports external Cloud RADIUS integration [6].

  • Configure a RADIUS Profile under Settings > Profiles > RADIUS.
  • Enter the Primary and Secondary RADIUS Server IPs and Shared Secrets provided by Purple.
  • Enable RADIUS Accounting and set the Interim Update Interval to 300 seconds to ensure real-time session tracking.
  • Under the SSID settings, set the Security Protocol to WPA2 Enterprise or WPA3 Enterprise [7] and select the RADIUS Profile.

comparison_chart.png


Troubleshooting & Risk Mitigation

When deploying external captive portals, network administrators frequently encounter several common failure modes. The table below details these issues, their root causes, and exact mitigation steps:

Symptom Root Cause Analysis Corrective Action & Mitigation
White Screen / Portal Fails to Load The client device cannot resolve or reach the FQDN of the external portal server. 1. Verify that portal.purplehotspot.com is in the Pre-Authorization Access list.
2. Ensure the guest client has received a valid IP and DNS server via DHCP.
3. Perform a DNS lookup on the client device to verify resolution of the portal FQDN.
"Connection Not Private" SSL Error The UniFi Controller is using a self-signed certificate, or the redirection FQDN does not match the SSL certificate common name. 1. Install a publicly trusted SSL certificate on the UniFi Controller.
2. Verify that Redirect Using Hostname is enabled and matches the FQDN on the certificate exactly.
3. Disable "Redirect HTTPS" in the UniFi guest control settings to prevent the AP from trying to intercept HTTPS traffic on port 443, which naturally triggers SSL warnings.
Authentication Succeeds, but Internet is Blocked The Purple cloud was able to authorise the user, but the API call to authorise the client MAC address on the UniFi Controller failed. 1. Check firewall rules to ensure port 443 (or 8443 for legacy) is open inbound to the UniFi Controller from Purple's IP ranges.
2. Verify that the API Key or local admin credentials entered in the Purple Portal are valid and have Administrator permissions.
3. Check the UniFi Controller logs (server.log) for API authentication failures.
Social Login (e.g., Google) Buttons Fail to Work The IdP's authentication domains are blocked by the AP's access control list. 1. Add the complete wildcard domains for the specific IdP to the Pre-Authorization Access list (e.g., *.google.com, *.googleapis.com).
2. If using Facebook, ensure the Facebook SDK domains are fully whitelisted.
Frequent Disconnections / Re-authentication Prompts The UniFi Controller session timeout is shorter than the Purple session duration, or DHCP lease times are too short. 1. Align the UniFi Guest Hotspot Session Timeout setting with the Purple session policy (e.g., 24 hours).
2. Increase the DHCP lease time on the Guest VLAN to at least 12 or 24 hours to prevent IP address exhaustion and mid-session re-auth.

ROI & Business Impact

While deploying an external captive portal requires careful network engineering, the business outcomes and return on investment (ROI) far outweigh the initial implementation complexity.

Enterprise Data Capture and CRM Enrichment

The native UniFi guest portal is a "blind" utility; it grants internet access without capturing user identity. By overlaying Purple, venues can capture valuable first-party data (emails, phone numbers, social profiles) in a fully GDPR and CCPA-compliant manner. This data is automatically synchronised in real-time with CRM systems, marketing platforms (e.g., Salesforce, HubSpot, Mailchimp), and loyalty programmes, enabling highly targeted marketing campaigns that drive repeat visits and customer lifetime value.

Multi-Site Management and White-Labelling

For Managed Service Providers (MSPs) and multi-site enterprise operators, managing guest WiFi across hundreds of venues via individual UniFi controllers is highly inefficient. Purple provides a single, centralised cloud dashboard to manage splash pages, compliance terms, and analytics across all venues globally, regardless of the underlying UniFi controller distribution.

Real-Time Analytics and Spatial Intelligence

Purple transforms the UniFi wireless network into a powerful sensor array. By analysing probe requests and connection metadata, Purple delivers deep spatial intelligence, including:

  • Footfall Analytics: Total visitors, pass-by traffic, and conversion rates (pass-by to enter).
  • Dwell Time: Average duration of visits, segmented by customer type (new vs. returning).
  • Recency and Frequency: How often customers return and the elapsed time between visits.
  • Venue Heatmaps: Visual representation of visitor flow and density, enabling retail and venue operators to optimise layouts and staffing.

Monetisation via Retail Media Networks

For large venues such as stadiums, shopping malls, and airports, the captive portal splash page represents highly valuable digital real estate. Purple enables venues to monetise this space by integrating with retail media networks, serving targeted programmatic advertising, sponsored login experiences, and localised promotions directly to guests at the moment of connection.


References

Definizioni chiave

Captive Portal

Una pagina web che intercetta la connessione di rete iniziale di un ospite e richiede l'autenticazione, la registrazione o l'accettazione dei termini prima di concedere l'accesso completo a Internet.

Si incontra immediatamente dopo la connessione a un SSID guest aperto; gestito dal redirector dell'AP e dal server del portale esterno.

External Portal Server

Un'applicazione web di terze parti (come Purple) che ospita la splash page per gli ospiti e gestisce l'autenticazione degli utenti, superando i limiti del portale del controller integrato.

Configurato nelle impostazioni di UniFi Guest Hotspot per sostituire la landing page nativa di UniFi.

Walled Garden (Pre-Authorization Access)

Una whitelist di domini, sottodomini o indirizzi IP a cui i client non autenticati possono accedere prima di completare il processo di login del Captive Portal.

Essenziale per caricare la pagina stessa del portale, le risorse CSS/JS e gli endpoint di login OAuth di terze parti.

DNSmasq

Un forwarder DNS leggero e server DHCP eseguito localmente sugli Access Point UniFi per intercettare e reindirizzare le query DNS dei guest durante lo stato di pre-autorizzazione.

Gestisce il reindirizzamento DNS iniziale che costringe i dispositivi client ad attivare i propri assistenti integrati per il Captive Portal.

API Authorization Handshake

Il processo in cui il server del portale esterno (Purple) effettua una chiamata API sicura al controller UniFi per far passare l'indirizzo MAC di un client da 'quarantined' a 'authorized'.

Avviene immediatamente dopo che l'utente ha completato con successo il flusso di login sulla splash page.

Client Device Isolation

Una funzionalità di sicurezza che impedisce ai client wireless sullo stesso SSID o VLAN di comunicare tra loro, mitigando il rischio di attacchi alla rete locale.

Abilitato nelle impostazioni WiFi e Network di UniFi per proteggere la privacy degli ospiti e mettere in sicurezza la rete della struttura.

RADSEC (RADIUS over TLS)

Un protocollo che protegge il traffico di autenticazione e accounting RADIUS racchiudendolo in un tunnel TLS sicuro, impedendo l'intercettazione e la manomissione sulle reti pubbliche.

Supportato in UniFi Network 8.4+ per implementazioni aziendali multi-sito sicure che utilizzano WPA2/WPA3 Enterprise.

CPA (Captive Portal Assistant)

Un'utilità di sistema integrata su iOS, Android, Windows e macOS che rileva automaticamente un Captive Portal tentando di recuperare un endpoint HTTP/HTTPS noto.

Attiva la finestra pop-up 'Accedi al WiFi' sul dispositivo dell'utente immediatamente dopo la connessione.

Esempi pratici

Un centro commerciale ad alta affluenza con 150 AP UniFi e un'applicazione UniFi Network self-hosted su AWS deve implementare Purple. Il team IT desidera utilizzare il social login con Google e Facebook per l'autenticazione degli ospiti. Tuttavia, durante i test iniziali, gli ospiti che fanno clic sui pulsanti di social login si trovano di fronte a una schermata vuota o a un errore di risoluzione DNS.

Il problema è causato da un walled garden restrittivo (Pre-Authorization Access) che impedisce al dispositivo dell'ospite di risolvere o raggiungere gli endpoint di autenticazione di Google e Facebook prima di essere autorizzato. Per risolvere questo problema, l'amministratore di rete deve accedere all'applicazione UniFi Network, andare su Settings > Profiles > Guest Hotspot ed espandere la sezione Pre-Authorization Access. Deve aggiungere i domini wildcard completi per i provider di identità Google e Facebook. Per Google, questo include accounts.google.com, ssl.gstatic.com e *.googleapis.com. Per Facebook, richiede *.facebook.com, *.facebook.net e *.fbcdn.net. Inoltre, assicurarsi che lo scope DHCP della rete ospiti sia configurato per distribuire server DNS pubblici e veloci (ad esempio, 1.1.1.1 e 8.8.8.8) direttamente ai client, invece di indirizzarli al gateway UniFi locale, che può diventare un collo di bottiglia per le query DNS di pre-autorizzazione.

Commento dell'esaminatore: Questo è un classico fallimento dovuto a una lacuna nel walled garden. Poiché i flussi di social login si basano su reindirizzamenti OAuth complessi su più sottodomini, l'omissione anche di un solo dominio di distribuzione dei contenuti (come il CDN di Facebook `fbcdn.net`) impedirà il rendering della pagina. I progettisti di rete dovrebbero sempre utilizzare le wildcard (`*.domain.com`) ove supportate dal controller e verificare la risoluzione DNS da un client non autenticato utilizzando strumenti standard come `nslookup` o `dig` sui domini inseriti nella whitelist.

Un MSP sta implementando Purple in una catena di 50 boutique hotel. Ogni hotel ha un UniFi Cloud Gateway Max locale in loco. L'MSP desidera gestire tutti i siti da un unico account Purple, ma è preoccupato per la sicurezza e per come il cloud di Purple comunicherà con i singoli controller locali per autorizzare gli indirizzi MAC degli ospiti, dato che i gateway locali si trovano dietro IP pubblici dinamici con NAT.

L'architettura ottimale utilizza l'API REST ufficiale di UniFi con port forwarding in entrata o un reverse proxy, combinato con il DNS dinamico (DDNS). Per ogni hotel: 1) Configurare un nome host DDNS sul Cloud Gateway Max (ad es. hotel01.mspdomain.com) in modo che l'IP pubblico del gateway sia sempre tracciabile. 2) Configurare una regola di port forwarding sul gateway per inoltrare il traffico HTTPS in entrata su una porta alta non standard (ad es. 10443) all'IP di gestione del gateway locale sulla porta 443. 3) Nel controller UniFi, andare su Settings > Control Plane > Integrations e generare una API Key univoca. 4) Nel Portale Purple, configurare una 'Venue' univoca per ogni hotel, selezionando l'integrazione Ubiquiti UniFi. Inserire l'indirizzo DDNS univoco con la porta inoltrata (ad es. hotel01.mspdomain.com:10443) e la API Key specifica generata per quel sito. Infine, proteggere il port forwarding in entrata su ciascun gateway limitando gli IP di origine agli intervalli IP del cloud pubblico di Purple, impedendo l'accesso non autorizzato dal resto di Internet.

Commento dell'esaminatore: L'uso di una porta alta non standard per il port forwarding, combinato con una whitelist rigorosa degli IP di origine per consentire solo i blocchi IP cloud di Purple, riduce i rischi di sicurezza legati all'esposizione della porta API del controller a Internet pubblico. Questa architettura evita la necessità di costosi IP pubblici statici in ogni sito, mantenendo al contempo solide funzionalità di autorizzazione MAC in tempo reale.

Domande di esercitazione

Q1. Un amministratore di rete ha configurato un captive portal esterno su una rete guest UniFi. Durante i test, nota che la splash page del captive portal si carica correttamente, ma dopo che l'ospite inserisce il proprio indirizzo email e clicca su 'Connetti', il browser si blocca e infine mostra un errore di timeout. Il client rimane in quarantena. Qual è la causa più probabile di questo problema e come dovrebbe essere esaminata?

Suggerimento: La pagina del portale è stata caricata, il che significa che il DNS e il walled garden funzionano. L'errore si verifica *dopo* che l'ospite ha inviato le proprie credenziali.

Visualizza risposta modello

La causa più probabile è un errore nell'handshake di autorizzazione API tra il cloud Purple e il controller UniFi. Poiché la pagina del portale è stata caricata e l'ospite ha potuto interagire con essa, le configurazioni DNS e di Pre-Authorization Access (Walled Garden) sono corrette. Tuttavia, quando l'ospite completa l'autenticazione, Purple tenta di inviare una chiamata API REST sicura (richiesta POST) al controller UniFi per autorizzare l'indirizzo MAC del client. Se il controller UniFi si trova dietro un firewall, NAT, o su una rete privata senza un corretto port forwarding, o se le credenziali API (o la chiave API) non sono corrette, la richiesta di autorizzazione fallirà o andrà in timeout. Per indagare: 1) Verificare che l'FQDN e la porta del controller UniFi siano accessibili pubblicamente dagli intervalli IP di Purple. 2) Controllare le regole del firewall in entrata sul gateway che protegge il controller UniFi per assicurarsi che la porta 443 (o 8443) sia aperta. 3) Nel portale Purple, verificare che le impostazioni di integrazione di UniFi contengano la chiave API o le credenziali di amministratore corrette e che l'URL del controller sia accurato. 4) Esaminare il file server.log del controller UniFi per eventuali tentativi di connessione in entrata o errori di autenticazione API provenienti dagli IP di Purple.

Q2. Un'implementazione aziendale richiede la configurazione di una rete ospiti con un Captive Portal esterno. L'architetto di rete desidera utilizzare HTTPS per tutto il traffico del Captive Portal per evitare lo sniffing delle credenziali. Abilita "Use Secure Portal (HTTPS)" e "Redirect Using Hostname" in UniFi, puntando all'FQDN del portale esterno. Tuttavia, quando i client si connettono, i loro browser visualizzano immediatamente un grave avviso di "SSL Certificate Common Name Mismatch" o "Certificate Not Trusted", bloccando l'accesso. Come si può risolvere questo problema?

Suggerimento: Pensa a quale dispositivo sta effettuando il reindirizzamento iniziale e quale certificato SSL sta presentando al client.

Visualizza risposta modello

Questo problema si verifica perché l'Access Point o il controller UniFi tenta di intercettare una richiesta HTTPS dal client e di reindirizzarla al Captive Portal. Quando un client si connette e tenta di visitare un sito web HTTPS (ad esempio, https://www.google.com), il redirector dell'AP intercetta il traffico. Per eseguire il reindirizzamento tramite HTTPS, l'AP deve presentare un certificato SSL. Poiché l'AP non possiede un certificato SSL valido per www.google.com, il browser del client rileva una condizione di Man-in-the-Middle (MITM) e genera un grave avviso SSL. Per risolvere questo problema: 1) Assicurarsi che il controller UniFi stesso abbia installato un certificato SSL valido e pubblicamente attendibile corrispondente all'FQDN configurato. 2) Nelle impostazioni della rete ospiti di UniFi, disabilitare "Redirect HTTPS" (lasciare abilitato solo il reindirizzamento HTTP). Ciò impedisce all'AP di tentare di intercettare il traffico HTTPS. Al contrario, la rete si affiderà al Captive Portal Assistant (CPA) del sistema operativo del dispositivo client, che verifica la connettività utilizzando endpoint HTTP semplici (ad esempio, http://captive.apple.com o http://connectivitycheck.gstatic.com). L'AP può intercettare in modo sicuro queste richieste HTTP sulla porta 80 e reindirizzarle all'URL HTTPS sicuro del portale Purple (https://portal.purplehotspot.com) senza attivare alcun avviso SSL del browser.

Q3. Una catena alberghiera desidera implementare la sicurezza WPA3-Enterprise per la propria rete ospiti VIP, mantenendo al contempo l'integrazione con la piattaforma di analisi di Purple. Il team IT locale non è sicuro di poter utilizzare il reindirizzamento standard del Captive Portal esterno con WPA3-Enterprise. Qual è l'approccio architetturale corretto per questo scenario?

Suggerimento: WPA3-Enterprise utilizza l'autenticazione 802.1X, che avviene nella fase di associazione, prima che venga assegnato un indirizzo IP. Questo è fondamentalmente diverso da un SSID aperto con un Captive Portal.

Visualizza risposta modello

WPA3-Enterprise (e WPA2-Enterprise) utilizza l'autenticazione 802.1X, che è fondamentalmente incompatibile con il reindirizzamento web standard del Captive Portal. In una rete 802.1X, l'autenticazione avviene nella fase di associazione (Layer 2) utilizzando metodi EAP (come EAP-TLS o PEAP) prima che al client venga assegnato un indirizzo IP o sia consentito l'accesso alla rete. Pertanto, non è possibile reindirizzare un client a una splash page basata sul web. Per integrare WPA3-Enterprise con Purple: 1) Passare dal modello 'External Portal Server' a un modello RADIUS esterno. 2) Configurare un Profilo RADIUS nell'applicazione UniFi Network, inserendo gli indirizzi IP dei server Cloud RADIUS di Purple, le porte di autenticazione (solitamente 1812), le porte di accounting (solitamente 1813) e il segreto condiviso. 3) Abilitare RADIUS Accounting e impostare un Intervallo di aggiornamento intermedio di 300 secondi. 4) Configurare l'SSID VIP per utilizzare WPA3 Enterprise e selezionare il profilo RADIUS. Quando un ospite VIP si connette, il suo dispositivo si autentica direttamente con il server Cloud RADIUS di Purple utilizzando le proprie credenziali aziendali univoche o un certificato. Il server RADIUS di Purple autorizza la connessione e riceve gli aggiornamenti di accounting, consentendo alla location di acquisire dati analitici sulla connessione, durata della sessione e utilizzo dei dati senza richiedere una splash page basata sul web.

Continua a leggere questa serie

Integrazione di CommScope Ruckus con Purple WiFi: Guida alla Configurazione e all'Installazione

Questa guida di riferimento tecnico fornisce un manuale di configurazione autorevole per l'integrazione delle architetture CommScope Ruckus con Purple WiFi. Dettaglia passo dopo passo le implementazioni per i Captive Portal per Guest WiFi, il WiFi aziendale sicuro per il personale tramite 802.1X e l'isolamento di rete Multi-Tenant utilizzando Ruckus Dynamic PSK.

Leggi la guida →

Integrazione degli Access Point Allied Telesis con Purple WiFi

Questa guida fornisce un playbook di configurazione completo per integrare gli access point Allied Telesis serie TQ con Purple WiFi. Copre il reindirizzamento al Captive Portal esterno, l'autenticazione RADIUS 802.1X e lo steering dinamico delle VLAN utilizzando le chiavi PPSK (Private Pre-Shared Keys) per implementazioni multi-tenant sicure.

Leggi la guida →

Integrazione degli Access Point Grandstream GWN con Purple WiFi

Questa guida tecnica di riferimento dettagliata spiega come integrare gli access point Grandstream GWN con la piattaforma di Guest WiFi e analytics di Purple. Copre la configurazione del Captive Portal Grandstream, le impostazioni RADIUS AAA, la configurazione del walled garden, l'autenticazione sicura del personale tramite 802.1X con instradamento VLAN dinamico e la segmentazione PPSK multi-tenant, offrendo una guida pratica e passo dopo passo per MSP e team IT che implementano WiFi per ospiti e personale su larga scala.

Leggi la guida →