Vai al contenuto principale

Integrazione dell'autenticazione WiFi WeChat: onboarding tramite Captive Portal per i clienti APAC

WeChat conta 1,41 miliardi di utenti attivi mensili, il che lo rende l'identità digitale principale per i consumatori cinesi a livello globale. Questa guida spiega come integrare l'autenticazione OAuth 2.0 di WeChat nei Captive Portal aziendali per le sedi APAC, coprendo la registrazione sulla piattaforma, la selezione dell'ambito, l'applicazione della Change of Authorisation di RADIUS e la conformità al doppio framework con il GDPR e la PIPL cinese. Si rivolge a responsabili IT, architetti di rete e direttori operativi delle sedi che devono intervenire in questo trimestre.

📖 9 minuti di lettura📝 2,051 parole🔧 2 esempi pratici4 domande di esercitazione📚 10 definizioni chiave

Ascolta questa guida

Visualizza trascrizione del podcast
COME CONFIGURARE L'AUTENTICAZIONE OAUTH DI WECHAT PER I CAPTIVE PORTAL Un briefing tecnico di Purple - Circa 10 minuti INTRODUZIONE E CONTESTO (circa 1 minuto) Benvenuto. Se sei responsabile del WiFi per gli ospiti in un hotel, una catena retail, uno stadio o un centro congressi che accoglie visitatori cinesi, questo briefing è per te. WeChat conta 1,41 miliardi di utenti attivi mensili nel 2025, secondo i dati di Tencent. La stragrande maggioranza si trova in Cina, ma la piattaforma ha anche un'impronta internazionale significativa. La Malesia conta 12 milioni di utenti WeChat. Il Giappone 5,5 milioni. La Corea del Sud, 5 milioni. E i numeri sono in crescita in tutto il Sud-est asiatico, in Medio Oriente e in Europa. Quando un ospite cinese si connette al tuo WiFi e visualizza una pagina di login che richiede solo email, Facebook o un codice voucher, incontra un ostacolo immediato. Potrebbe non avere un indirizzo email locale configurato su quel dispositivo. Quasi certamente ha WeChat. Quindi la domanda non è se offrire il login tramite WeChat. È come configurarlo correttamente, in modo sicuro e tale da generare dati di prima parte che si possano effettivamente utilizzare. Questo è ciò che tratteremo oggi. Esamineremo il flusso OAuth 2.0, le due registrazioni di piattaforma necessarie, la decisione sullo scope che determina quali dati raccogliere, il meccanismo di enforcement lato rete e le considerazioni di conformità rilevanti nel 2026. APPROFONDIMENTO TECNICO (circa 5 minuti) Cominciamo dall'architettura. Un Captive Portal intercetta il traffico HTTP da un dispositivo non autenticato e lo reindirizza a una pagina di login. Questa pagina di login è ospitata su un server portal, in locale o nel cloud. Quando aggiungi l'OAuth di WeChat, inserisci un provider di identità terzo in quel flusso. Ecco la sequenza. L'ospite si connette al tuo SSID. L'access point o il controller wireless rileva che il dispositivo non ha una sessione autenticata e reindirizza tutto il traffico HTTP all'URL del tuo Captive Portal. La pagina del portale si carica e presenta le opzioni di login, tra cui WeChat. L'ospite tocca il login con WeChat. Il server del tuo portale reindirizza il browser all'endpoint di autorizzazione di WeChat, passando l'AppID, l'URI di reindirizzamento, il tipo di risposta 'code' e lo scope. WeChat gestisce l'autenticazione interamente sui propri server. Se l'ospite ha già effettuato l'accesso a WeChat nel browser, visualizza una schermata di consenso. Se utilizza il browser in-app di WeChat, l'esperienza può avvenire in modalità invisibile con lo scope base snsapi, ovvero senza alcuna richiesta di consenso. WeChat reindirizza poi all'URI di reindirizzamento del portale con un codice di autorizzazione temporaneo. Il server del portale scambia quel codice con un token di accesso chiamando l'API di WeChat. WeChat restituisce un token di accesso, un token di aggiornamento, l'OpenID dell'utente e lo scope concesso. Se hai richiesto lo scope userinfo di snsapi, puoi effettuare una seconda chiamata API per recuperare il nickname, l'avatar, il sesso e la città dell'utente. Ora, parliamo delle due registrazioni della piattaforma. È qui che la maggior parte delle implementazioni fallisce. WeChat ha due piattaforme di sviluppo distinte. La WeChat Open Platform gestisce le applicazioni web e le app mobili. La WeChat Official Accounts Platform gestisce gli account pubblici, che è ciò di cui la maggior parte delle location ha effettivamente bisogno. Per un captive portal che serve gli ospiti all'interno del browser in-app di WeChat, è necessario un Service Account sulla Official Accounts Platform. Un Subscription Account non funzionerà. Non dispone dei permessi di autorizzazione per le pagine web tramite OAuth. Un Service Account sì, e supporta sia lo scope snsapi base che lo scope snsapi userinfo. Per un captive portal effettuato da un browser mobile standard al di fuori di WeChat, come Chrome su Android o Safari su iOS, è necessaria una Website Application registrata sulla Open Platform. Questa utilizza lo scope snsapi login e presenta un codice QR che l'utente scansiona con la propria app WeChat. In pratica, la maggior parte delle implementazioni nelle location utilizza entrambi. Un ospite in un hotel potrebbe aprire il portale in Chrome, vedere un codice QR, scansionarlo con WeChat e autenticarsi. Oppure potrebbe seguire un link all'interno di WeChat stesso, atterrare nel browser in-app e autenticarsi silenziosamente con snsapi base. Parliamo della selezione dello scope, perché questo è un vero e proprio punto decisionale. Lo scope snsapi base restituisce solo l'OpenID. Si tratta di un identificatore univoco per quell'utente all'interno del tuo Official Account. Non richiede alcuna richiesta di consenso all'utente. L'autenticazione è invisibile per l'utente. Questo è l'ideale per gli ospiti abituali che hai già profilato, o per le location in cui desideri un attrito pari a zero al costo di zero nuovi dati. Lo scope snsapi userinfo restituisce l'OpenID più il nickname di WeChat dell'utente, l'immagine del profilo, il genere, l'impostazione della lingua e la città. Richiede una schermata di consenso esplicito. L'utente visualizza una richiesta in cui viene chiesto se consente al tuo Official Account di accedere alle sue informazioni. La maggior parte degli utenti accetta, ma si crea un attrito. La scelta giusta dipende dal tuo caso d'uso. Per la registrazione di un ospite al primo accesso in cui desideri creare un profilo, utilizza snsapi userinfo e associalo a un livello di consenso conforme al GDPR sulla pagina del tuo portale. Per un ospite di ritorno che ha già fornito il consenso e di cui possiedi già il profilo, utilizza snsapi base per una riautenticazione silenziosa. Ora, passiamo al lato dell'applicazione di rete. L'ottenimento di un token OAuth attesta l'identità, ma non apre automaticamente la rete. È necessario un meccanismo per tradurre un'autenticazione riuscita in accesso alla rete. I due approcci standard sono il RADIUS Change of Authorisation, definito in RFC 3576, e il MAC address bypass. Con il RADIUS CoA, il server del portale invia una richiesta CoA al controller di rete dopo un OAuth andato a buon fine, e il controller sposta il dispositivo dalla VLAN non autenticata alla VLAN ospiti. Funziona con Cisco Meraki, HPE Aruba, Ruckus, Juniper Mist, Ubiquiti UniFi, Cambium, Extreme e Fortinet. Con il bypass del MAC, il server del portale registra l'indirizzo MAC del dispositivo come client autorizzato e il controller lo consente. Il bypass del MAC è più semplice da implementare ma meno sicuro, in quanto gli indirizzi MAC possono essere contraffatti e gli smartphone moderni utilizzano sempre più la randomizzazione dell'indirizzo MAC, il che interrompe il meccanismo alla riconnessione. La piattaforma Guest WiFi di Purple gestisce entrambi i meccanismi. Al completamento di WeChat OAuth, l'overlay cloud di Purple invia il segnale appropriato all'hardware sottostante. L'operatore della sede non deve gestire tale conversione manualmente. RACCOMANDAZIONI DI IMPLEMENTAZIONE E TRAPPOLE COMUNI (circa 2 minuti) Ecco i cinque motivi per cui le implementazioni di WeChat OAuth nei Captive Portal falliscono. Primo: la mancata corrispondenza dell'URI di reindirizzamento. WeChat convalida l'URI di reindirizzamento rispetto al dominio autorizzato registrato sulla piattaforma. Se il server del portale utilizza un sottodominio diverso, un percorso diverso o HTTP anziché HTTPS, il flusso OAuth fallisce con l'errore 40029, che indica un codice non valido. Registra ogni variante di dominio utilizzata, inclusi gli ambienti di staging. Secondo: l'AppSecret lato client. L'AppSecret non deve mai apparire nel JavaScript lato client o nel binario di un'applicazione mobile. Deve risiedere sul tuo server. Se viene esposto, chiunque può impersonare la tua applicazione e chiamare le API di WeChat per tuo conto. Terzo: mancanza di protezione CSRF. Il parametro state nella richiesta OAuth esiste specificamente per prevenire la cross-site request forgery. Genera un valore di state crittograficamente casuale, memorizzalo nella sessione dell'utente e convalidalo quando WeChat reindirizza l'utente. Se salti questo passaggio, avrai una reale vulnerabilità. Quarto: la mancata rilevazione del browser in-app. Il browser in-app di WeChat imposta una stringa user agent specifica contenente MicroMessenger. Se il tuo portale non rileva questo elemento e non fornisce il corretto flusso OAuth, gli utenti riscontreranno un'esperienza interrotta o un errore. Quinto: allineamento a GDPR e PIPL. Se ti rivolgi a visitatori europei, il GDPR si applica ai dati raccolti tramite WeChat OAuth. Se ti rivolgi a visitatori cinesi, la legge cinese sulla protezione delle informazioni personali (PIPL) si applica al modo in cui elabori i loro dati. Entrambe richiedono una base giuridica per il trattamento, una chiara limitazione delle finalità e la minimizzazione dei dati. L'ambito snsapi_base è più facile da giustificare in base ai principi di minimizzazione dei dati rispetto a snsapi_userinfo. Qualsiasi dato tu raccolga, documenta la base giuridica e il periodo di conservazione. DOMANDE E RISPOSTE RAPIDE (circa 1 minuto) Domanda: Posso utilizzare il login WeChat su un portale che offre anche l'accesso tramite e-mail e SMS? Sì. La maggior parte delle piattaforme di portali aziendali, inclusa Purple, supporta più metodi di autenticazione sulla stessa pagina del portale. WeChat appare come un'opzione tra le altre. Domanda: WeChat OAuth funziona su iOS? Sì, ma con una sfumatura. Il framework App Tracking Transparency di Apple non influisce sui flussi OAuth lato server. L'accesso a WeChat in Safari su iOS funziona tramite il flusso del codice QR o il flusso di reindirizzamento. La stessa app WeChat gestisce l'autenticazione. Domanda: Cosa succede se l'API di WeChat non è disponibile? Il tuo portale dovrebbe implementare un fallback. Se la chiamata API di WeChat va in timeout o restituisce un errore, reindirizza l'utente a un metodo di accesso alternativo. Non lasciarli con uno schermo vuoto. Domanda: Posso usare l'OpenID come identificativo cliente persistente? All'interno del tuo Account Ufficiale, sì. L'OpenID è stabile per un determinato utente e un determinato Account Ufficiale. Se disponi di più Account Ufficiali, lo stesso utente avrà OpenID diversi tra di essi. Per la risoluzione dell'identità tra più account, WeChat fornisce un UnionID, che richiede che i tuoi account siano collegati sulla Open Platform. RIASSUNTO E PROSSIMI PASSI (circa 1 minuto) Per riassumere. L'autenticazione WeChat OAuth per i Captive Portal è un esercizio di registrazione su due piattaforme, una decisione sull'ambito (scope), un'integrazione per l'applicazione delle regole di rete e una revisione della conformità. Se gestisci correttamente questi quattro elementi, avrai un metodo di accesso che serve oltre un miliardo di potenziali visitatori con zero attriti legati alle password. I prossimi passi pratici sono questi. Innanzitutto, stabilisci se i tuoi visitatori incontrano il portale all'interno del browser in-app di WeChat o in un browser mobile standard. Questo determina quale registrazione sulla piattaforma è necessaria. In secondo luogo, decidi lo scope. Usa snsapi base per gli ospiti che ritornano e snsapi userinfo per la prima registrazione con consenso. In terzo luogo, conferma che l'hardware di rete supporti RADIUS CoA o configura il MAC bypass come alternativa. In quarto luogo, esamina l'informativa sulla privacy e il flusso di consenso rispetto ai requisiti GDPR e PIPL. In quinto luogo, testa l'URI di reindirizzamento, la validazione del parametro di stato e il rilevamento del browser in-app prima di andare online. Se desideri vedere come Purple gestisce WeChat OAuth come parte di una più ampia piattaforma di Guest WiFi e analytics, in 80.000 location e 440 milioni di accessi nel 2024, visita purple.ai o parla con il team del tuo account. Grazie per l'attenzione.

📚 Parte della nostra serie principale: Captive Portal Guide

header_image.png

Executive summary

For enterprise venues operating across the APAC region, or serving Chinese tourists globally, WeChat WiFi authentication is no longer optional. With 1.41 billion monthly active users as of 2025 (source: Tencent), WeChat is the primary digital identity for Chinese consumers. A guest who connects to your SSID and sees only email or Facebook login options faces immediate friction. They almost certainly have WeChat. They almost certainly do not have a local email address configured on that device.

This guide details how to integrate WeChat OAuth 2.0 into a captive portal. We cover the two distinct platform registrations Tencent requires, the scope decision that determines what first-party data you collect, and the RADIUS Change of Authorisation (CoA) mechanism that translates a successful OAuth exchange into actual network access. We also address the overlapping compliance requirements of GDPR and China's Personal Information Protection Law (PIPL).

Purple's Guest WiFi platform automates the network enforcement layer across Cisco Meraki, HPE Aruba, Ruckus, Juniper Mist, Ubiquiti UniFi, Cambium, Extreme, and Fortinet hardware. Purple operates across 80,000+ live venues and recorded 440 million logins in 2024 (Purple internal data).

Technical deep-dive

The OAuth 2.0 flow

A captive portal (a web-based authentication gateway that intercepts HTTP traffic from unauthenticated devices) redirects guests to a login page hosted on a portal server, either on-premises or in the cloud. Adding WeChat OAuth inserts Tencent's identity infrastructure into that flow.

The sequence runs as follows. The guest associates with the SSID. The wireless controller detects the absence of an authenticated session and redirects all HTTP traffic to the captive portal URL. The portal page loads and presents login options, including WeChat. The guest selects WeChat. The portal server constructs a redirect to WeChat's authorisation endpoint at open.weixin.qq.com, passing four parameters: the AppID, the redirect URI, the response type set to code, and the requested scope.

WeChat authenticates the user entirely on its own infrastructure. If the guest is already signed in via the WeChat in-app browser, the snsapi_base scope allows silent authentication with no visible prompt. WeChat redirects back to the portal's registered redirect URI with a short-lived authorisation code. The portal server exchanges this code for an access token by calling api.weixin.qq.com/sns/oauth2/access_token with the AppID, AppSecret, code, and grant type. WeChat returns an access token, a refresh token, the user's OpenID, and the granted scope. If snsapi_userinfo was requested, a second API call to api.weixin.qq.com/sns/userinfo retrieves the user's nickname, profile image, gender, and city.

architecture_overview.png

Platform registration: the decision that trips most deployments

Tencent operates two separate developer platforms, and selecting the wrong one is the most common cause of failed implementations.

Access context Required registration Platform URL Supported scopes
WeChat in-app browser Service Account (Official Accounts Platform) mp.weixin.qq.com snsapi_base, snsapi_userinfo
Standard mobile browser (Chrome, Safari) Website Application (Open Platform) open.weixin.qq.com snsapi_login (QR code flow)

A Subscription Account on the Official Accounts Platform will not work. It lacks OAuth web page authorisation permissions. Only a Service Account carries those permissions.

Most enterprise deployments in Hospitality and Retail implement both registrations. A guest at a hotel might open the portal in Chrome, scan a QR code with WeChat, and authenticate via the Open Platform flow. Or they might follow a link inside WeChat itself, land in the in-app browser, and authenticate silently via the Official Accounts flow. Both paths must be handled.

Scope selection and data collection

The OAuth scope is a genuine architectural decision, not a configuration detail. It determines the friction the user experiences and the data your WiFi Analytics platform receives.

snsapi_base returns only the OpenID - a stable, unique identifier for that user within your Official Account. It requires no user consent prompt. Authentication is invisible. Use this for returning guests whose profiles you already hold, or for high-throughput environments such as stadiums and transport hubs where connection speed is the priority.

snsapi_userinfo returns the OpenID plus nickname, profile image, gender, language setting, and city. It triggers an explicit consent screen. Use this for first-time guest registration to build a first-party data profile, paired with a PIPL-compliant and GDPR-compliant consent layer on the portal page.

The practical rule: use snsapi_base for speed, snsapi_userinfo for data. You can implement both by checking whether the user's OpenID already exists in your database. If it does, request snsapi_base. If it does not, request snsapi_userinfo.

Network enforcement: RADIUS CoA and MAC bypass

An OAuth token proves identity. It does not open the network. A separate mechanism must translate the successful authentication into a network policy change.

RADIUS Change of Authorisation (CoA), defined in RFC 3576, is the standard approach. After the portal server receives a valid OAuth token, it sends a CoA request to the wireless controller. The controller updates the session, moving the device from the walled garden VLAN (a restricted network segment that allows only portal traffic) to the full guest VLAN. This works with Cisco Meraki, HPE Aruba, Ruckus, Juniper Mist, Ubiquiti UniFi, Cambium, Extreme, and Fortinet.

MAC address bypass registers the device's MAC address as an authorised client after successful OAuth. The controller then permits traffic from that address without further challenge. It is simpler to implement but carries two risks: MAC addresses can be spoofed, and iOS 14 and Android 10 onwards use MAC address randomisation by default, which breaks the mechanism on reconnection.

For any deployment where security matters, RADIUS CoA is the correct choice. For more on securing guest networks, see What Is Secure WiFi: Essential Guide for Business 2026 and Enterprise WiFi Security: A Complete Guide for 2026 .

Implementation guide

Pre-deployment checklist

Before writing a line of configuration, complete these five steps.

First, determine the access context. Survey your venue and identify whether guests will encounter the portal inside the WeChat in-app browser, in a standard mobile browser, or both. The answer determines your platform registration requirements.

Second, register on the correct platform. For in-app browser access, create a Service Account on the WeChat Official Accounts Platform. For standard browser access, register a Website Application on the WeChat Open Platform. Note your AppID and AppSecret for each.

Third, configure your redirect URIs. Register every domain and subdomain your portal uses, including staging environments. WeChat enforces exact-match validation. A mismatch returns error 40029.

Fourth, implement server-side token exchange. The AppSecret must never appear in client-side code. Build a server-side endpoint that accepts the authorisation code, exchanges it for a token, and returns only the data your portal needs.

Fifth, implement the state parameter for CSRF protection. Generate a cryptographically random value, store it in the user's session, pass it in the OAuth request, and validate it on return.

Configuration steps for Ruckus SmartZone

For venues running Ruckus SmartZone, the WeChat portal configuration sits under Services and Profiles, then Hotspots and Portals, then the WeChat tab. You configure the Authentication URL (your portal server's WeChat callback endpoint), the DNAT Destination (the server that handles unauthenticated client redirects), and the Grace Period (the window during which a recently disconnected user can reconnect without re-authenticating, defaulting to 60 minutes). You also configure the walled garden whitelist to permit traffic to WeChat's API endpoints during the authentication phase. See also the Step-by-Step Guide: Configuring Ruijie Wireless Controllers for Guest WiFi Captive Portals for comparable controller configuration patterns.

In-app browser detection

WeChat's in-app browser sets a user agent string containing MicroMessenger. Your portal must detect this string and serve the appropriate OAuth flow. If MicroMessenger is present, use the Official Accounts flow. If absent, use the Open Platform QR code flow. Failure to detect this correctly produces broken experiences or authentication errors.

Best practices

Data minimisation and dual-framework compliance

GDPR (applicable to European visitors) and PIPL (applicable to Chinese citizens) both require a lawful basis for processing personal data, clear purpose limitation, and data minimisation. The snsapi_base scope is easier to justify under data minimisation principles than snsapi_userinfo. When you do collect demographic data via snsapi_userinfo, document your legal basis, your retention period, and your data processing agreement with Tencent.

PILP, in force since November 2021, requires explicit consent for sensitive personal information and mandates that data processors outside China implement equivalent protection standards. If your portal server sits outside mainland China, you must assess whether cross-border data transfer rules apply to the WeChat OpenID and profile data you receive.

UnionID for multi-property deployments

The OpenID is unique per user per Official Account. If you operate multiple Official Accounts across properties, the same guest will have different OpenIDs in each. WeChat provides a UnionID that remains consistent across all accounts linked to the same Open Platform registration. For hotel chains, retail groups, or airport operators managing multiple venues, implement UnionID-based identity resolution from the start.

Security hardening

Store the AppSecret in an environment variable or secrets manager, never in source code. Rotate it immediately if you suspect exposure. Implement rate limiting on your token exchange endpoint to prevent abuse. Log all OAuth errors, particularly 40029 (invalid code) and 40163 (code expired), as these indicate either misconfiguration or active probing.

For a broader view of guest network security architecture, see Why Consumer WiFi Gear Doesn't Belong on Your Guest Network .

Case studies

Luxury hotel chain, Singapore

A 350-room luxury hotel in Singapore serving a predominantly Chinese business travel segment implemented WeChat WiFi authentication alongside their existing email login option. Prior to implementation, front-desk staff reported an average of 15 guest complaints per day about WiFi login difficulties. Chinese guests were attempting to use email addresses they had not configured on their travel devices.

The hotel registered a Service Account on the WeChat Official Accounts Platform and a Website Application on the Open Platform. They configured snsapi_userinfo for first-time connections and snsapi_base for returning guests identified by MAC address. The HPE Aruba controller was configured for RADIUS CoA to handle session promotion.

Within 30 days, guest WiFi login complaints dropped to under two per day. The hotel's WiFi Analytics database grew by 4,200 verified first-party profiles in the first month, with city-level demographic data enabling targeted post-stay communications.

International retail mall, Kuala Lumpur

A premium retail mall in Kuala Lumpur with 12 million WeChat users in Malaysia alone needed a WiFi onboarding experience that matched the digital expectations of its shopper base. The mall operated Cisco Meraki access points across 180,000 square metres of retail floor.

The deployment used Purple's Guest WiFi platform as the cloud overlay, with WeChat OAuth as the primary authentication method and SMS OTP as the fallback. Purple's hardware-agnostic architecture handled the RADIUS CoA integration with Cisco Meraki without requiring custom development.

The mall recorded a 34% increase in WiFi session starts in the first quarter post-deployment, attributed to reduced onboarding friction for WeChat users. The first-party data collected via snsapi_userinfo consent flows enabled the mall's marketing team to segment shoppers by home city for targeted campaign delivery.

retail_venue_wechat_wifi.png

Troubleshooting and risk mitigation

Error Cause Resolution
40029 invalid code Redirect URI mismatch or code reuse Verify registered URIs match exactly; codes are single-use
40163 code expired Token exchange delayed beyond 5 minutes Reduce server-side processing time; implement retry logic
Blank screen after authentication RADIUS CoA not configured or failing Check controller CoA settings and firewall rules on UDP port 3799
MAC randomisation breaks returning guest flow iOS/Android MAC randomisation Migrate to OpenID-based session tracking; avoid MAC-only identification
snsapi_userinfo returns empty fields User has set WeChat privacy restrictions Handle null fields gracefully; do not require profile data for access

ROI and business impact

The business case for WeChat WiFi authentication rests on three measurable outcomes.

First-party data acquisition. Each snsapi_userinfo authentication generates a verified guest profile with demographic data. For a 200-room hotel running at 70% occupancy with 40% Chinese guests, that represents approximately 20,000 new verified profiles per year, each tied to a WeChat identity that supports ongoing re-engagement.

Reduced support burden. Login friction is the primary driver of guest WiFi support calls. Venues that add WeChat authentication alongside existing options consistently report a reduction in WiFi-related front-desk queries, freeing staff time for higher-value interactions.

Marketing reach. WeChat Official Accounts allow venues to push notifications to followers. A guest who authenticates via your Official Account can be prompted to follow it, creating a direct communication channel that operates within WeChat's ecosystem, where Chinese consumers spend an average of 82 minutes per day (source: Walk the Chat).

Purple's Engage plan extends this further, enabling automated post-visit messaging, loyalty triggers, and segmented campaigns built on the first-party data collected at the point of WiFi authentication.

Definizioni chiave

Captive Portal

Un gateway di autenticazione web che intercetta il traffico HTTP da un dispositivo non autenticato e lo reindirizza a una pagina di login prima di concedere l'accesso alla rete.

Il meccanismo attraverso il quale l'autenticazione WiFi degli ospiti viene presentata agli utenti. WeChat OAuth è uno dei diversi metodi di autenticazione che un Captive Portal può offrire.

OAuth 2.0

Un protocollo di autorizzazione standard del settore che consente a un'applicazione di terze parti (il Captive Portal) di ottenere un accesso limitato a un servizio web (WeChat) per conto di un utente, senza che quest'ultimo debba condividere la propria password con la terza parte.

Il framework sottostante che rende possibile il login con WeChat. Il portale non vede mai le credenziali WeChat dell'utente; riceve solo un token che conferma che WeChat lo ha autenticato.

RADIUS CoA

Change of Authorisation. Un meccanismo definito in RFC 3576 che consente a un server RADIUS di modificare dinamicamente gli attributi di autorizzazione della sessione di un client di rete attivo, come la modifica dell'assegnazione VLAN.

Il meccanismo di enforcement di rete che traduce una corretta transazione WeChat OAuth in un effettivo accesso alla rete. Senza CoA, l'ospite si autentica ma il controller non sa di dover aprire la rete.

OpenID

Un identificatore univoco assegnato da WeChat a uno specifico utente per uno specifico Account Ufficiale o Applicazione Web. È stabile tra le sessioni ma differisce da un account all'altro.

La chiave primaria utilizzata per identificare un ospite nel database di analytics WiFi. Utilizza UnionID se gestisci più Account Ufficiali e hai bisogno di una risoluzione dell'identità cross-account.

snsapi_base

Uno scope OAuth di WeChat che consente l'autenticazione silenziosa, restituendo solo l'OpenID dell'utente senza mostrare una richiesta di consenso.

Da utilizzare per gli ospiti che ritornano o in ambienti ad alta densità in cui la velocità di connessione è la priorità. Non restituisce dati demografici oltre all'OpenID.

snsapi_userinfo

Uno scope OAuth di WeChat che restituisce l'OpenID dell'utente, il nickname, l'immagine del profilo, il genere, la lingua e la città, richiedendo una schermata di consenso esplicito dell'utente.

Da utilizzare per la registrazione dei nuovi ospiti per creare un profilo di dati proprietari. Deve essere associato a un livello di consenso conforme a GDPR e PIPL.

PIPL

Personal Information Protection Law. La legislazione globale sulla privacy dei dati in Cina, in vigore da novembre 2021, che disciplina le modalità di raccolta, trattamento e trasferimento dei dati personali dei cittadini cinesi.

Si applica a qualsiasi sede che raccolga dati da cittadini cinesi tramite WeChat OAuth, indipendentemente dal luogo in cui si trova la sede. Richiede consenso esplicito, limitazione delle finalità e minimizzazione dei dati.

AppSecret

Una chiave crittografica riservata emessa da WeChat che autentica la tua applicazione quando chiama l'API di scambio token di WeChat.

Deve essere memorizzato solo sul lato server. L'esposizione nel codice lato client consente a chiunque di impersonare l'applicazione ed effettuare chiamate API non autorizzate a WeChat.

VLAN

Virtual Local Area Network. Un segmento di rete logico che isola il traffico a livello di collegamento dati, consentendo a una singola rete fisica di trasportare più flussi di traffico isolati.

Utilizzato nelle distribuzioni di Captive Portal per separare i dispositivi non autenticati (walled garden VLAN) dagli ospiti autenticati (guest VLAN). RADIUS CoA sposta un dispositivo tra le VLAN a seguito di un'autenticazione riuscita.

UnionID

Un identificatore WeChat che rimane coerente per un determinato utente in tutti gli Account Ufficiali e le Applicazioni Web collegati alla stessa registrazione Open Platform.

Essenziale per catene alberghiere, gruppi retail e operatori multi-sede che devono riconoscere lo stesso ospite in diverse proprietà, ciascuna con il proprio Account Ufficiale.

Esempi pratici

Un hotel di lusso da 200 camere a Singapore utilizza controller HPE Aruba e serve un elevato volume di viaggiatori d'affari cinesi. Desidera raccogliere dati demografici dai visitatori al primo accesso e garantire che gli ospiti che ritornano si connettano automaticamente senza visualizzare nuovamente il portale. Come deve configurare l'integrazione di WeChat OAuth?

Passo 1: Registrare un Service Account sulla WeChat Official Accounts Platform (mp.weixin.qq.com) per gestire gli ospiti che accedono al portale all'interno del browser in-app di WeChat. Registrare una Website Application sulla WeChat Open Platform (open.weixin.qq.com) per gli ospiti che utilizzano browser mobili standard.

Passo 2: Configurare il Captive Portal per rilevare la stringa user agent MicroMessenger. Fornire il flusso OAuth di Official Accounts per gli utenti del browser in-app e il flusso di codici QR di Open Platform per gli utenti di browser standard.

Passo 3: Per le connessioni al primo accesso (nessun OpenID esistente nel database), richiedere lo scope snsapi_userinfo. Presentare una schermata di consenso conforme al PIPL prima del reindirizzamento OAuth. Memorizzare l'OpenID restituito, il nickname, la città e il genere nel database dei profili degli ospiti.

Passo 4: Per gli ospiti che ritornano (l'OpenID esiste già nel database), richiedere lo scope snsapi_base. Questo autentica l'utente in modo silenzioso senza alcun prompt visibile.

Passo 5: Configurare il controller HPE Aruba per RADIUS CoA sulla porta UDP 3799. Dopo il successo dell'autenticazione OAuth, il server del portale invia una richiesta CoA per promuovere il dispositivo dalla VLAN walled garden alla VLAN ospiti.

Passo 6: Implementare la registrazione dell'indirizzo MAC insieme all'OpenID per gestire il rilevamento degli ospiti che ritornano. Si noti che la randomizzazione del MAC richiede l'uso di OpenID come identificatore primario, non il solo indirizzo MAC.

Commento dell'esaminatore: Questo approccio separa correttamente le registrazioni delle due piattaforme in base al contesto di accesso, utilizza la selezione dello scope per bilanciare l'attrito con la raccolta dei dati e implementa RADIUS CoA per l'applicazione sicura delle policy di rete. L'uso di OpenID come identificatore primario per gli ospiti che ritornano è la risposta corretta alla randomizzazione del MAC. Il livello di consenso PIPL non è negoziabile per i dati dei cittadini cinesi.

Il team IT di una catena di negozi segnala un alto tasso di fallimento per i login WiFi di WeChat in tre centri commerciali. Gli utenti si autenticano in WeChat ma vengono reindirizzati alla pagina del portale con un errore. I log del portale mostrano l'errore 40029. Qual è la causa probabile e come si risolve?

L'errore 40029 significa che WeChat ha rifiutato il codice di autorizzazione durante lo scambio dei token. Le due cause più comuni sono una discrepanza del redirect URI e il riutilizzo del codice.

Passo 1: Accedere alla console sviluppatori di WeChat sia per la Official Accounts Platform che per la Open Platform. Navigare nelle impostazioni OAuth ed elencare tutti i redirect URI registrati.

Passo 2: Confrontarli con i redirect URI effettivi utilizzati dal server del portale in produzione in tutte e tre le sedi. Verificare la presenza di differenze nei sottodomini (portal.brand.com rispetto a brand.com), differenze di protocollo (HTTP rispetto a HTTPS) e differenze di percorso (/callback rispetto a /wechat/callback).

Passo 3: Registrare ogni variante nella console di WeChat. WeChat esegue una convalida a corrispondenza esatta, non a prefisso.

Passo 4: Se gli URI corrispondono, verificare se il server del portale sta tentando di riutilizzare i codici di autorizzazione. I codici WeChat sono monouso e scadono dopo cinque minuti. Se il server tenta nuovamente lo scambio di token con lo stesso codice, riceverà l'errore 40029 al secondo tentativo.

Passo 5: Implementare l'idempotenza nell'endpoint di scambio dei token per prevenire richieste duplicate.

Commento dell'esaminatore: L'errore 40029 è l'errore più comune nelle implementazioni di WeChat OAuth ed è quasi sempre causato da una discrepanza del redirect URI. Le implementazioni multi-sede sono particolarmente vulnerabili perché ogni sede potrebbe utilizzare un sottodominio o un indirizzo di bilanciamento del carico differente. La causa secondaria, il riutilizzo del codice, è meno comune ma merita di essere verificata se la registrazione degli URI risulta corretta.

Domande di esercitazione

Q1. Stai implementando un Captive Portal per uno stadio da 60.000 posti che ospita eventi internazionali con una significativa base di fan cinesi. La priorità è connettere online tutti i partecipanti entro i primi 15 minuti dall'apertura dei cancelli per ridurre la congestione cellulare. La raccolta di dati di marketing è un obiettivo secondario. Quale scope OAuth di WeChat dovresti configurare e perché?

Suggerimento: Considera l'impatto di una schermata di consenso mostrata a 15.000 utenti simultanei su un server del portale.

Visualizza risposta modello

Configura lo scope snsapi_base. Questo consente l'autenticazione silenziosa senza alcuna richiesta di consenso all'utente, offrendo l'esperienza di onboarding più rapida possibile. Su scala da stadio, una schermata di consenso aggiunge attrito che si moltiplica su migliaia di connessioni simultanee e può causare picchi di carico sul server del portale. snsapi_base restituisce solo l'OpenID, che è sufficiente per registrare la sessione e identificare i fan che ritornano. Per i fan che accedono per la prima volta e di cui si desiderano i dati demografici, è possibile richiedere il completamento del profilo tramite un sondaggio post-connessione anziché al gate di autenticazione.

Q2. Un network architect del tuo team propone di memorizzare l'AppSecret di WeChat nel JavaScript lato client del Captive Portal per ridurre i round-trip del server effettuando la chiamata di scambio del token direttamente dal browser. Spiega perché questo approccio rappresenta una falla di sicurezza critica e qual è l'architettura corretta.

Suggerimento: Considera chi può visualizzare il codice lato client e cosa consente di fare l'AppSecret.

Visualizza risposta modello

La memorizzazione dell'AppSecret nel JavaScript lato client lo espone a chiunque visualizzi il codice sorgente della pagina o intercetti il traffico di rete. L'AppSecret autentica la tua applicazione verso l'API di WeChat. Con esso, un malintenzionato può impersonare la tua applicazione, chiamare l'endpoint di scambio token di WeChat con qualsiasi codice di autorizzazione valido, recuperare gli OpenID e i dati del profilo degli utenti e potenzialmente esaurire i limiti di velocità della tua API. L'architettura corretta prevede un endpoint di scambio token lato server. Il browser riceve il codice di autorizzazione da WeChat e lo passa al tuo server. Il tuo server, utilizzando l'AppSecret memorizzato in una variabile d'ambiente o in un gestore di segreti, scambia il codice con un token e restituisce solo i dati di cui il portale ha bisogno. L'AppSecret non lascia mai il tuo server.

Q3. La tua struttura gestisce tre hotel in città diverse, ognuno con il proprio account ufficiale WeChat. Un membro del programma fedeltà che si è autenticato in tutte e tre le strutture ha tre diversi OpenID nel tuo database. Come risolvi questo problema in un'unica identità ospite?

Suggerimento: WeChat fornisce un meccanismo per la risoluzione dell'identità cross-account che richiede una configurazione specifica della piattaforma.

Visualizza risposta modello

Implementa il meccanismo UnionID di WeChat. Collega tutti e tre gli account ufficiali alla stessa registrazione Open Platform su open.weixin.qq.com. Una volta collegati, WeChat restituisce un UnionID insieme all'OpenID nella risposta snsapi_userinfo. L'UnionID è coerente per un determinato utente in tutti gli account collegati alla stessa registrazione Open Platform. Migra il tuo database per utilizzare l'UnionID come identificatore principale dell'ospite per i record cross-property, conservando l'OpenID specifico per account per le chiamate API specifiche dell'account. Per gli ospiti che si sono autenticati prima dell'implementazione dell'UnionID, attiva una nuova autenticazione con snsapi_userinfo alla loro prossima visita per acquisire l'UnionID.

Q4. Dopo aver implementato l'autenticazione WeChat WiFi in uno spazio commerciale con access point Cisco Meraki, gli ospiti segnalano di aver completato con successo il login di WeChat ma di essere reindirizzati alla pagina del portale senza poter navigare in internet. I log del server del portale mostrano un recupero del token andato a buon fine. Qual è la causa più probabile e come si diagnostica?

Suggerimento: Il portale ha verificato l'identità. Cosa non è ancora successo?

Visualizza risposta modello

Il RADIUS Change of Authorisation (CoA) non si sta completando. Il server del portale ha verificato l'identità dell'ospite tramite l'OAuth di WeChat ma non ha istruito con successo il controller Cisco Meraki a spostare il dispositivo dalla VLAN del walled garden alla VLAN ospiti. Diagnostica controllando: (1) se il controller Meraki ha il RADIUS CoA abilitato e se l'IP del server del portale è elencato come client CoA autorizzato; (2) se la porta UDP 3799 è aperta tra il server del portale e il controller; (3) i log del server del portale per errori o timeout della richiesta CoA; e (4) se il segreto condiviso configurato su entrambi i lati corrisponde. Se il CoA non è supportato nel tuo livello di licenza Meraki, il bypass del MAC address è la soluzione alternativa, sebbene comporti il rischio di randomizzazione del MAC indicato nella guida.