Vai al contenuto principale

Integrazione dell'autenticazione WeChat con i Captive Portal delle reti Guest WiFi

Questa guida spiega come integrare l'autenticazione WeChat OAuth 2.0 nei Captive Portal delle reti Guest WiFi aziendali. Copre i requisiti di registrazione su doppia piattaforma, la selezione dello scope per l'acquisizione di dati proprietari, l'applicazione delle policy di rete tramite RADIUS Change of Authorization e la conformità al GDPR e alla PIPL cinese. I gestori di location nei settori hospitality, retail ed eventi troveranno passaggi di implementazione concreti, casi di studio reali e linee guida per il rafforzamento della sicurezza per distribuire il login con WeChat su Guest WiFi su larga scala.

📖 8 minuti di lettura📝 1,966 parole🔧 2 esempi pratici4 domande di esercitazione📚 9 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 hai la responsabilità del WiFi per gli ospiti presso un hotel, una catena di negozi, uno stadio o un centro congressi che accoglie visitatori cinesi, questo briefing è rivolto a te. WeChat conta 1,38 miliardi di utenti attivi mensili, secondo i dati del 2024 di Tencent. La stragrande maggioranza si trova in Cina, ma la piattaforma vanta anche un'impronta internazionale significativa: quattro milioni di utenti negli Stati Uniti, 12 milioni in Malesia e numeri in crescita in tutto il Sud-est asiatico, in Europa e in Medio Oriente. Quando un ospite cinese si connette al tuo WiFi e visualizza una pagina di login che richiede solo un'e-mail, Facebook o un codice coupon, incontra un ostacolo immediato. Potrebbe non avere un indirizzo e-mail locale configurato su quel dispositivo. Di contro, avrà quasi certamente WeChat. Pertanto, la questione non è se offrire o meno l'accesso con WeChat, ma come configurarlo correttamente, in sicurezza e in modo da generare dati di prima parte che si possano effettivamente utilizzare. Questo è l'argomento che affronteremo oggi. Esamineremo il flusso OAuth 2.0, le due registrazioni di piattaforma necessarie, la scelta dello scope che determina quali dati raccogliere, il meccanismo di enforcement lato rete e le considerazioni di conformità fondamentali nel 2026. --- APPROFONDIMENTO TECNICO (circa 5 minuti) Iniziamo dall'architettura. Un Captive Portal intercetta il traffico HTTP proveniente da un dispositivo non autenticato e lo reindirizza a una pagina di login. Tale pagina di login è ospitata su un server del portale, sia on-premise che in cloud. Quando si aggiunge WeChat OAuth, si inserisce un provider di identità terzo in questo 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, incluso WeChat. L'ospite seleziona l'accesso tramite WeChat. Il server del tuo portale reindirizza il browser all'endpoint di autorizzazione di WeChat, passando l'App ID, l'URI di reindirizzamento, il tipo di risposta basato su codice e lo scope. WeChat gestisce l'autenticazione interamente sui propri server. Se l'ospite ha già effettuato l'accesso a WeChat nel proprio browser, visualizza una schermata di consenso. Se sta utilizzando il browser in-app di WeChat, l'esperienza può avvenire in background con lo scope snsapi base, senza alcuna richiesta di consenso. WeChat reindirizza poi all'URI di reindirizzamento del tuo portale con un codice di autorizzazione temporaneo. Il server del tuo portale scambia tale codice con un token di accesso, passando l'App ID, l'App Secret, il codice e il tipo di concessione di codice di autorizzazione. WeChat restituisce un token di accesso, un token di aggiornamento, l'Open ID dell'utente e lo scope concesso. Se hai richiesto lo scope snsapi userinfo, puoi quindi effettuare una seconda chiamata API per recuperare il nickname, l'avatar, il genere e la città dell'utente. Ora, le due registrazioni della piattaforma. Questo è il punto in cui la maggior parte delle implementazioni fallisce. WeChat ha due diverse piattaforme per sviluppatori. La WeChat Open Platform gestisce le applicazioni web e le app mobile. La WeChat Official Accounts Platform gestisce gli account pubblici, ossia ciò di cui la maggior parte delle strutture ha effettivamente bisogno. Per un Captive Portal destinato agli ospiti all'interno del browser in-app di WeChat, è necessario un Service Account sulla Official Accounts Platform. Un Subscription Account non funzionerà, poiché non dispone dei permessi di autorizzazione per le pagine web tramite OAuth. Un Service Account, invece, li possiede e supporta sia l'ambito snsapi base che snsapi userinfo. Per un Captive Portal a cui si accede da un normale browser mobile al di fuori di WeChat (Chrome su Android, Safari su iOS), è necessaria una Website Application registrata sulla Open Platform. Questa utilizza l'ambito snsapi login e presenta un codice QR che l'utente scansiona con la propria app WeChat. In pratica, la maggior parte delle installazioni nelle strutture utilizza entrambi. Un ospite sulla rete WiFi di 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 stessa, atterrare sul browser in-app e autenticarsi in modo silenzioso con snsapi base. Parliamo della selezione dell'ambito (scope), perché rappresenta un vero e proprio punto decisionale. snsapi base restituisce solo l'Open ID, 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 che ritornano e di cui hai già creato un profilo, o per le strutture in cui desideri azzerare gli attriti. snsapi userinfo restituisce l'Open ID insieme al nickname di WeChat dell'utente, all'immagine del profilo, al genere, alle impostazioni della lingua e alla città. Richiede una schermata di consenso esplicito. La maggior parte degli utenti accetta, ma si crea un attrito. La scelta corretta dipende dal tuo caso d'uso. Per la registrazione di un ospite che accede per la prima volta e di 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 che ritorna, che ha già fornito il consenso e di cui possiedi già il profilo, utilizza snsapi base per una ri-autenticazione silenziosa. Ora, passiamo al lato dell'applicazione di rete. L'ottenimento di un token OAuth prova 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 (CoA), definito nella specifica RFC 3576, e il bypass del MAC address. Con il RADIUS CoA, il server del tuo portale invia una richiesta CoA al controller di rete dopo che l'autenticazione OAuth è andata a buon fine, e il controller sposta il dispositivo dalla VLAN non autenticata alla VLAN ospiti. Questo sistema funziona con Cisco Meraki, HPE Aruba, Ruckus, Juniper Mist e la maggior parte dei controller di livello enterprise. Con il bypass del MAC, il server del portale registra l'indirizzo MAC del dispositivo come client autorizzato e il controller lo abilita. Il bypass del MAC è più semplice da implementare ma meno sicuro, in quanto gli indirizzi MAC possono essere contraffatti. 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, sia esso Cisco Meraki, HPE Aruba, Ruckus, Juniper Mist, Ubiquiti UniFi, Cambium, Extreme o Fortinet. L'operatore della sede non deve gestire questa traduzione manualmente. --- RACCOMANDAZIONI DI IMPLEMENTAZIONE E TRAPPOLE DA EVITARE (circa 2 minuti) Permettetemi di elencarvi i cinque fattori che causano il fallimento delle implementazioni del Captive Portal con WeChat OAuth. 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 vostro portale utilizza un sottodominio diverso, un percorso diverso o HTTP anziché HTTPS, il flusso OAuth fallisce con l'errore 40029 - codice non valido. Registrate ogni variante di dominio utilizzata, inclusi gli ambienti di staging. Secondo: l'App Secret sul lato client. Il vostro App Secret non deve mai apparire nel JavaScript lato client. Appartiene al vostro server. Se viene esposto, chiunque può impersonare la vostra applicazione e chiamare le API di WeChat per vostro conto. Terzo: mancanza di protezione CSRF. Il parametro di stato nella richiesta OAuth esiste specificamente per prevenire la falsificazione delle richieste intersito (cross-site request forgery). Generate un valore di stato crittograficamente casuale, memorizzatelo nella sessione dell'utente e convalidatelo al reindirizzamento di WeChat. Saltate questo passaggio e avrete una reale vulnerabilità. Quarto: il gap di rilevamento del browser in-app. Il browser in-app di WeChat imposta una stringa user agent specifica contenente MicroMessenger. Se il vostro portale non rileva questo elemento e non fornisce il corretto flusso OAuth, gli utenti riceveranno un'esperienza interrotta o un errore. Quinto: allineamento GDPR e PIPL. Se offrite servizi a visitatori europei, si applica il GDPR. Se vi rivolgete a visitatori cinesi, si applica la legge cinese sulla protezione delle informazioni personali (PIPL). Entrambe richiedono una base giuridica per il trattamento, una chiara limitazione delle finalità e la minimizzazione dei dati. "snsapi base" è più facile da giustificare in base ai principi di minimizzazione dei dati rispetto a "snsapi userinfo". Qualsiasi dato raccogliate, documentate la vostra base giuridica e il periodo di conservazione. --- DOMANDE E RISPOSTE RAPIDE (circa 1 minuto) Posso usare l'accesso WeChat su un portale che offre anche l'accesso tramite email e SMS? Sì. La maggior parte delle piattaforme di portali aziendali, inclusa Purple, supporta più metodi di autenticazione sulla stessa pagina del portale. WeChat OAuth funziona su iOS? Sì. L'accesso a WeChat in Safari su iOS funziona tramite il flusso del codice QR o il flusso di reindirizzamento. L'app WeChat stessa gestisce l'autenticazione. Cosa succede se l'API di WeChat non è disponibile? Implementate un fallback. Se la chiamata API di WeChat va in timeout o restituisce un errore, reindirizzate l'utente a un metodo di accesso alternativo. Posso utilizzare l'Open ID come identificatore cliente persistente? All'interno del vostro account ufficiale, sì. Per la risoluzione dell'identità cross-account su più proprietà, utilizzate invece l'UnionID. --- RIEPILOGO E PROSSIMI PASSI (circa 1 minuto) In sintesi. L'autenticazione WeChat OAuth per i Captive Portal richiede un'operazione di registrazione su due piattaforme, una decisione sull'ambito (scope), un'integrazione per l'applicazione delle policy di rete e una revisione della conformità. Gestendo correttamente questi quattro elementi, otterrai un metodo di accesso in grado di servire oltre un miliardo di potenziali visitatori, azzerando le frizioni legate alle password. I prossimi passi pratici: determina se i tuoi visitatori visualizzano il portale all'interno del browser in-app di WeChat o in un browser mobile standard. Definisci l'ambito (scope): snsapi base per gli utenti ricorrenti, snsapi userinfo per la prima registrazione previo consenso. Verifica che l'hardware di rete supporti RADIUS CoA. Esamina la tua informativa sulla privacy in conformità al GDPR e alla PIPL. Testa l'URI di reindirizzamento, la validazione del parametro di stato (state parameter) e il rilevamento del browser in-app prima del lancio ufficiale. Se desideri scoprire come Purple gestisce WeChat OAuth all'interno di una piattaforma più ampia di Guest WiFi e analytics — attiva su 80.000 location con 440 milioni di accessi nel 2024 — visita purple.ai o contatta il tuo account team. Grazie per l'attenzione. --- FINE DELLO SCRIPT

header_image.png

摘要

当中国访客连接到您的企业网络并遇到一个仅提供电子邮件、Facebook或凭证代码的 Captive Portal 时,您会立即产生摩擦。根据腾讯2024年的数据,微信拥有13.8亿月活跃用户。集成微信登录 guest wifi 功能并不是一种款待便利,而是在没有摩擦的情况下捕获该人群第一方数据的技术要求。

本指南详细介绍了将微信 OAuth 2.0 身份验证集成到 captive portals 的技术架构。它解释了支持标准移动浏览器和微信应用内浏览器所需的双平台注册,评估了用于数据收集的 snsapi_basesnsapi_userinfo 作用域之间的权衡,并概述了如何使用 RADIUS 授权变更 (CoA) 或 MAC 身份验证旁路来强制网络访问。它还涵盖了在 Cisco Meraki、HPE Aruba、Ruckus、Juniper Mist、Ubiquiti UniFi、Cambium、Extreme 和 Fortinet 基础设施中大规模部署此功能所需的安全配置和合规性指令——GDPR 和中国《个人信息保护法》(PIPL)。


技术深度剖析:微信 OAuth 2.0 架构

Captive Portal 会拦截来自未验证设备的 HTTP 流量,并将其重定向到托管在门户服务器上的登录页面。添加微信身份验证会使用 OAuth 2.0 协议将第三方身份验证提供商插入到此流程中,该协议与 Google、Microsoft Entra ID 和 Okta 用于联合身份验证的标准相同。

oauth_flow_diagram.png

认证流程的操作如下:访客连接到 SSID。接入点或无线控制器检测到未认证的会话,并将 HTTP 流量重定向到 Captive Portal URL。访客在 Portal 页面上选择微信登录。Portal 服务器将浏览器重定向到 open.weixin.qq.com 的微信授权端点,并传递 AppID、重定向 URI、code 的响应类型以及请求的 Scope。微信在其自己的服务器上处理认证。如果访客在微信内置浏览器中使用 snsapi_base Scope,则认证是无感知的——不会出现授权同意提示。如果使用 snsapi_userinfo,微信会显示一个授权同意页面。随后,微信将带着临时授权码重定向回 Portal 的重定向 URI。Portal 服务器通过调用 api.weixin.qq.com/sns/oauth2/access_token 并传递 AppIDAppSecret、该授权码以及 authorization_code 的授权类型,来将此授权码交换为 Access Token。微信将返回 Access Token、Refresh Token、用户的 OpenID 以及已授予的 Scope。如果授予了 snsapi_userinfo,服务器会发起第二次 API 调用,以获取用户的昵称、头像、性别和城市。

双平台注册要求

大多数实施方案都在注册阶段失败。微信运营着两个独立的开发者平台,而企业级部署通常两者都需要。

平台 URL 所需账号类型 支持的 Scope 浏览器环境
公众平台 mp.weixin.qq.com 服务号 snsapi_base, snsapi_userinfo 微信内置浏览器
开放平台 open.weixin.qq.com 网站应用 snsapi_login 标准移动浏览器

对于在微信内置浏览器内访问 Portal 的访客,您需要在公众平台上拥有一个服务号。订阅号将无法工作——它缺少 OAuth 网页授权权限。对于从 Android 上的 Chrome 或 iOS 上的 Safari 访问 Portal 的访客,您需要在开放平台上拥有一个网站应用,该应用使用 snsapi_login Scope 并显示一个二维码供用户扫描。

在实际操作中,大多数场所部署都会同时使用两者。酒店的访客可能会在 Chrome 中打开 Portal,看到一个二维码,用微信扫描它并进行认证。或者他们可能会直接点击微信内的链接,进入内置浏览器,并通过 snsapi_base 进行无感知认证。

Scope 选择:数据获取 vs. 用户摩擦

scope_comparison.png

您请求的 Scope 决定了您收集的数据以及访客体验到的摩擦。这是一个涉及合规性影响的实际决策点。

snsapi_base 仅返回 OpenID——即该用户在您公众号内的唯一标识符。它不需要用户同意授权提示。身份验证对访客是无感知的。适用于您已拥有其个人资料的返店访客,或者在您优先考虑无摩擦接入的场景。在 GDPR 和 PIPL 数据最小化原则下,snsapi_base 更容易证明其合理性。

snsapi_userinfo 返回 OpenID 以及用户的昵称、头像、性别和城市。它需要一个明确的授权同意页面。适用于需要建立个人资料的首次访客注册,并配合您 Portal 页面上符合合规要求的授权同意层。

跨门店部署的 UnionID

OpenID 针对用户与特定公众号的组合是唯一的。一家拥有 20 家门店且每家门店都有自己公众号的酒店集团,对于同一位访客会看到 20 个不同的 OpenID。UnionID 解决了这个问题。它是一个单一标识符,代表同一开放平台账号下链接的所有公众号和应用中的用户。将您的公众号链接到您的开放平台账号,OAuth 响应中就会返回 UnionID。这是跨门店访客识别的基础。


实施指南

网络强制执行机制

获取 OAuth 令牌仅能证明身份,并不能打开网络。您必须向控制器发送信号以允许流量通过。

RADIUS 授权变更 (CoA)(在 RFC 3576 中定义)是推荐的企业级方法。OAuth 验证成功后,Portal 服务器向网络控制器发送 CoA 请求。控制器将设备从认证前 VLAN 移动到访客 VLAN。这适用于 Cisco Meraki、HPE Aruba、Ruckus、Juniper Mist、Ubiquiti UniFi、Cambium、Extreme 和 Fortinet。

MAC 认证绕过 (MAB) 将设备的 MAC 地址作为已授权客户端注册到 RADIUS 数据库中。控制器根据该 MAC 允许访问。MAB 较易实施,但并不可靠:现代 iOS 和 Android 设备默认会随机化 MAC 地址,从而在重新连接时中断会话关联。

Purple 的 Guest WiFi 平台可自动完成此转换。微信 OAuth 完成后,Purple 的云端覆盖网络向底层硬件发送相应的 CoA 或 MAB 信号,从而免去了手动配置 VLAN 的麻烦。

安全配置

以下三项配置是不容妥协的。

  1. 保护 AppSecret。 AppSecret 绝不能出现在客户端 JavaScript 中。它必须保留在您的服务器上。如果泄露,攻击者可以冒充您的应用程序并代表您调用微信 API。
  2. 实施 CSRF 防护。 生成一个加密随机的 state 值,将其存储在用户会话中,并在微信重定向返回时进行验证。这可以防止 RFC 6749 中定义的跨站请求伪造攻击。
  3. 注册所有重定向 URI 变体。 微信会根据您注册的域名验证重定向 URI。请注册您使用的每一个子域名和路径变体(包括暂存环境),以防止出现 40029 错误(无效的代码)。

应用内浏览器检测

微信的应用内浏览器会设置包含 MicroMessenger 的用户代理(user agent)字符串。您的 Captive Portal 必须检测此字符串并进行相应路由:应用内浏览器使用公众号流程,标准浏览器使用开放平台二维码流程。如果未能检测到该字符串,会导致体验中断或身份验证错误。

hotel_wechat_wifi.png


最佳实践与合规性

GDPR 合规性

如果您服务于欧洲访客或在欧洲运营,GDPR 适用于您通过微信 OAuth 收集的数据。您必须确定合规的处理依据——通常是征得同意或合法利益。在进行身份验证之前,您必须在 Captive Portal 上提供清晰的隐私声明。您必须响应主体访问请求和删除请求。有关详细的合规框架,请参阅 合规手册:GDPR 与访客 WiFi 数据隐私

PIPL 合规性

当您处理中国公民的个人数据时,中国《个人信息保护法》(PIPL)适用。与 GDPR 类似,PIPL 要求明确的目的限制、数据最小化以及书面的合法依据。在数据最小化原则下,snsapi_basesnsapi_userinfo 更容易证明其合理性。无论您收集什么数据,请在上线前记录您的法律依据和保存期限。

网络隔离

使用 VLAN 隔离将访客 WiFi 流量与您的企业网络隔离开来。通过微信验证的访客应接入专用的访客 VLAN,且仅能访问互联网——无法访问内部系统。这符合 PCI DSS 对持卡人数据环境隔离的要求以及一般的企业安全实践。有关隔离架构的更多信息,请参阅 带宽管理:2026年实用指南

备用身份验证

如果微信的 API 不可用,您的门户必须重定向到替代的登录方式。不要让访客面对空白屏幕。提供电子邮箱或短信的备用方案可确保连贯性。这对于 交通运输医疗保健 环境中的场所尤为重要,在这些环境中,网络连接是一项服务义务。


真实案例研究

酒店业:奢华酒店集团

伦敦的一家拥有 400 间客房的奢华酒店接待了大量来自中国大陆的宾客。他们原有的 Captive Portal 要求提供电子邮件地址和短信验证。中国手机号码经常无法收到来自欧洲运营商的短信,而且许多宾客的设备上没有配置本地电子邮箱。这导致 Portal 的流失率高达 60%。

该酒店在公众号平台注册了服务号,并在开放平台注册了网站应用。Portal 检测到 MicroMessenger 用户代理,并为应用内浏览器用户触发 snsapi_base——在不到三秒的时间内将他们连接,且无需授权提示页面。通过 Chrome 或 Safari 访问的宾客则会看到一个二维码。在后续入住时,系统会识别出相同的 OpenID,并对宾客进行静默免密认证。酒店的 CRM 系统会记录该宾客的再次到访,从而实现有针对性的入店前沟通。有关在酒店环境中部署 WiFi 的更多信息,请参阅 酒店行业

零售:购物中心分析

一家大型购物中心希望获取中国消费者的受众特征数据,以辅助招商组合和营销决策。他们需要了解客源城市、性别和到访频率。此时仅靠 snsapi_base 远远不够——他们需要 snsapi_userinfo。Portal 会请求完整的 userinfo 作用域。宾客会看到微信授权提示页面,并点击允许。该购物中心与 Purple 的 WiFi Analytics 集成的分析平台接收到了经过验证的受众特征数据流。在周六下午,40% 的 WiFi 用户来自特定区域。该数据直接决定了应该接洽哪些品牌来举办快闪活动。有关零售 WiFi 部署的更多信息,请参阅 零售行业


故障排查与风险规避

微信 OAuth Captive Portal 部署中最常见的五种故障模式如下:

重定向 URI 不匹配(错误码 40029)。 微信会根据已注册的域名验证重定向 URI。任何子域名、路径或协议的不匹配都会导致 code 交换失败。请注册所有变体,包括暂存(staging)环境。

AppSecret 泄露。 将 AppSecret 嵌入在客户端代码中是最严重的安全错误。请将所有 token 交换逻辑转移到服务器端。

缺少 CSRF 保护。 忽略 state 参数验证会使 Portal 易受跨站请求伪造攻击。请为每个会话生成一个加密的随机值,并在回调时进行验证。

应用内浏览器检测失败。 未能在用户代理中检测到 MicroMessenger 意味着应用内浏览器用户将被提供错误的 OAuth 流程,从而导致报错。

MAC地址随机化破坏MAB会话。 现代移动操作系统会随机化MAC地址。使用基于MAB强制执行的访客在重新连接时将丢失其会话。升级到RADIUS CoA以实现可靠的会话管理。有关安全WiFi配置的指导,请参阅 什么是安全WiFi:2026年企业基本指南


投资回报率(ROI)与业务影响

部署微信登录访客WiFi功能具有三个可衡量的影响。

提高身份验证率。 消除短信验证失败点和电子邮件输入要求,可以提高成功连接的中国访客比例。对于不支持微信的Captive Portal,60%的流失率是一个现实的基准线。

第一方数据质量。 经微信验证的个人资料包括一个经过验证的OpenID,并且通过 snsapi_userinfo,可以直接获取来自该社交平台的受众特征属性。这些数据可以注入分析平台,以推动定向营销,而无需依赖第三方Cookie。

减少支持开销。 无缝登录减少了前台和IT支持人员处理国际访客连接故障排除的呼叫量。

Purple在超过80,000个场所中运营,并在2024年处理了4.4亿次登录(Purple内部数据)。该平台已通过ISO 27001认证,符合GDPR和CCPA,并保持99.999%的在线率。对于 零售酒店餐饮 行业的场所,微信身份验证将网络从成本中心转变为可靠的第一方数据采集渠道。

Definizioni chiave

Captive Portal

Una pagina web che intercetta il traffico HTTP da un dispositivo non autenticato e richiede all'utente di interagire con essa prima di concedere l'accesso alla rete.

L'interfaccia principale in cui l'opzione di login WeChat viene presentata all'ospite. Il server del portale ospita questa pagina e orchestra il flusso OAuth.

OAuth 2.0

Un protocollo di autorizzazione standard del settore (RFC 6749) che consente a un'applicazione di terze parti di ottenere un accesso limitato a un servizio HTTP per conto di un utente.

Il protocollo sottostante utilizzato da WeChat per passare i token di autenticazione al server del portale senza esporre le credenziali dell'utente. Lo stesso protocollo utilizzato da Microsoft Entra ID, Okta e Google Workspace.

OpenID

Un identificatore alfanumerico univoco assegnato a uno specifico utente WeChat per uno specifico Account Ufficiale.

Utilizzato come chiave primaria per identificare gli ospiti di ritorno nel database di analisi del WiFi. Cambia per ciascun Account Ufficiale - utilizzare UnionID per il riconoscimento cross-property.

UnionID

Un identificatore WeChat singolo che rappresenta un utente su tutti gli Account Ufficiali e le app collegate allo stesso account Open Platform.

Essenziale per gruppi alberghieri, catene retail e operatori di stadi con più sedi che hanno la necessità di riconoscere lo stesso ospite all'interno dell'intero portafoglio di proprietà.

RADIUS CoA (Change of Authorization)

Un'estensione del protocollo RADIUS (RFC 3576) che consente a un server RADIUS di modificare dinamicamente gli attributi di autorizzazione di una sessione attiva.

Il metodo sicuro utilizzato per spostare il dispositivo di un ospite da una VLAN di pre-autenticazione isolata alla VLAN internet attiva dopo un login WeChat avvenuto con successo. Supportato da Cisco Meraki, HPE Aruba, Ruckus, Juniper Mist, Ubiquiti UniFi, Cambium, Extreme e Fortinet.

snsapi_base

Un ambito (scope) OAuth di WeChat che restituisce solo l'OpenID dell'utente e non richiede alcuna richiesta di consenso da parte dell'utente.

L'ambito (scope) consigliato per la ri-autenticazione degli ospiti di ritorno. Più facile da giustificare ai sensi dei principi di minimizzazione dei dati del GDPR e della PIPL.

snsapi_userinfo

Un ambito (scope) OAuth di WeChat che restituisce l'OpenID dell'utente, il nickname, l'avatar, il genere e la città, e richiede una schermata di consenso esplicito.

Utilizzato per la registrazione dei nuovi ospiti quando sono richiesti dati demografici per scopi di analisi. Richiede una base giuridica documentata ai sensi del GDPR e della PIPL.

PIPL (Personal Information Protection Law)

La legislazione globale sulla privacy dei dati in Cina, in vigore da novembre 2021, che disciplina il trattamento delle informazioni personali delle persone fisiche situate in Cina.

Si applica quando le strutture elaborano dati di cittadini cinesi tramite OAuth di WeChat. Richiede un consenso chiaro, limitazione delle finalità, minimizzazione dei dati e un meccanismo di cancellazione.

AppSecret

Una chiave crittografica riservata rilasciata da WeChat durante la registrazione dell'applicazione, utilizzata per autenticare le chiamate API dal server del portale.

Deve essere memorizzato esclusivamente sul lato server. L'esposizione nel JavaScript lato client consente ai malintenzionati di impersonare l'applicazione ed effettuare chiamate API a WeChat in modo fraudolento.

Esempi pratici

Un hotel di lusso da 400 camere a Londra registra un tasso di abbandono del portale del 60% tra gli ospiti provenienti dalla Cina continentale. Il portale attuale richiede la verifica via e-mail e SMS. Il Direttore IT deve implementare l'autenticazione WeChat mantenendo la conformità al GDPR e la sicurezza della rete.

Passaggio 1: Registrare un Service Account sulla WeChat Official Accounts Platform (mp.weixin.qq.com) e una Website Application sulla WeChat Open Platform (open.weixin.qq.com). Passaggio 2: Configurare il portale per rilevare la stringa user agent di MicroMessenger. Se rilevata, attivare il flusso OAuth snsapi_base per l'autenticazione silenziosa. Se non rilevata, presentare il flusso con codice QR. Passaggio 3: Aggiungere un'informativa sulla privacy conforme al GDPR e una casella di controllo del consenso nella pagina del portale prima che il pulsante di login di WeChat diventi attivo. L'informativa deve indicare: dati raccolti (solo OpenID), finalità (accesso Guest WiFi e riconoscimento delle visite successive) e periodo di conservazione. Passaggio 4: Dopo il corretto scambio del token OAuth, il server del portale invia una richiesta RADIUS CoA al controller Cisco Meraki, spostando il dispositivo dell'ospite dalla VLAN pre-auth alla VLAN guest segmentata. Passaggio 5: Memorizzare l'OpenID associandolo all'indirizzo MAC del dispositivo nel database dei guest. Nelle visite successive, l'OpenID di ritorno attiva la riautenticazione silenziosa.

Commento dell'esaminatore: Questo approccio affronta correttamente sia i requisiti tecnici sia quelli di conformità. L'uso di snsapi_base si allinea ai principi di minimizzazione dei dati del GDPR, riducendo il rischio legale ed eliminando al contempo il punto di errore della verifica tramite SMS. RADIUS CoA garantisce una segmentazione della rete sicura e automatizzata. La casella di controllo del consenso soddisfa il requisito del GDPR di una base giuridica documentata. La decisione chiave è l'uso di snsapi_base rispetto a snsapi_userinfo: l'hotel non ha bisogno di dati demografici per questo caso d'uso, quindi raccoglierli introdurrebbe obblighi di conformità non necessari.

Un centro commerciale desidera acquisire dati sul genere e sulla città di provenienza degli acquirenti cinesi tramite il Guest WiFi per inserirli nella propria piattaforma di analytics. Attualmente utilizzano il MAC Authentication Bypass per il portale esistente in esecuzione su hardware HPE Aruba.

Passaggio 1: Registrare un Service Account sulla WeChat Official Accounts Platform. Passaggio 2: Configurare il portale per utilizzare lo scope snsapi_userinfo per recuperare il genere e la città. Passaggio 3: Aggiungere una schermata di consenso chiara che spieghi lo scambio di valore: WiFi gratuito in cambio dell'accesso ai dati del profilo. Il consenso deve essere esplicito e granulare sia ai sensi del GDPR che della PIPL. Passaggio 4: Dopo l'autenticazione, il server del portale registra l'indirizzo MAC del dispositivo nel database RADIUS. Il controller HPE Aruba consente l'accesso tramite MAB. Passaggio 5: Documentare la base giuridica (consenso), la finalità (analytics della location e marketing) e il periodo di conservazione (24 mesi) in un registro delle attività di trattamento. Fornire un meccanismo di cancellazione dei dati.

Commento dell'esaminatore: Lo scope snsapi_userinfo recupera correttamente i dati demografici richiesti. Tuttavia, l'affidamento al MAB introduce un rischio operativo significativo: iOS 14+ e Android 10+ randomizzano gli indirizzi MAC per impostazione predefinita, il che significa che gli ospiti perderanno la sessione autenticata alla successiva riconnessione e saranno costretti a riautenticarsi. Il centro commerciale dovrebbe pianificare la migrazione a RADIUS CoA su HPE Aruba per risolvere questo problema. La documentazione di conformità PIPL non è facoltativa: si tratta di un requisito legale per il trattamento dei dati dei cittadini cinesi, indipendentemente dal luogo in cui si trova la location.

Domande di esercitazione

Q1. Stai implementando un Captive Portal in uno stadio. Desideri che gli abbonati che tornano e che si sono autenticati in precedenza si connettano automaticamente senza visualizzare una schermata di login nelle visite successive. Quale scope OAuth di WeChat dovresti implementare per il flusso di nuova autenticazione e perché?

Suggerimento: Considera quale scope consente l'autenticazione invisibile senza richiedere il consenso dell'utente a ogni visita.

Visualizza risposta modello

Utilizza snsapi_base. Questo scope restituisce solo l'OpenID dell'utente e non richiede alcuna richiesta di consenso, consentendo una nuova autenticazione invisibile. Alla prima visita, memorizzi l'OpenID nel profilo del tifoso. Nelle visite successive, il portale rileva l'OpenID del visitatore di ritorno tramite snsapi_base, conferma la corrispondenza e invia un RADIUS CoA per concedere l'accesso, il tutto senza che il tifoso veda una schermata di login. Questo è anche in linea con i principi di minimizzazione dei dati del GDPR, poiché non raccogli dati aggiuntivi oltre a quelli necessari per la funzione di autenticazione.

Q2. Durante i test, il tuo portale reindirizza correttamente a WeChat, l'utente concede il consenso e WeChat reindirizza nuovamente al tuo portale. Tuttavia, i log del server del portale mostrano l'errore OAuth 40029 (codice non valido). Qual è l'errore di configurazione più probabile e come si risolve?

Suggerimento: WeChat convalida rigorosamente la destinazione a cui invia il codice di autorizzazione rispetto a un elenco registrato.

Visualizza risposta modello

La causa più probabile è una mancata corrispondenza dell'URI di reindirizzamento. WeChat convalida l'URI di reindirizzamento nella richiesta OAuth rispetto al dominio autorizzato registrato sulla piattaforma. Se il server del portale utilizza un sottodominio diverso, un percorso diverso o HTTP anziché HTTPS, lo scambio del codice fallisce con l'errore 40029. Risoluzione: accedi alla piattaforma per sviluppatori di WeChat, naviga nelle impostazioni del tuo Account di Servizio o dell'Applicazione Web e aggiungi ogni variante di URI di reindirizzamento utilizzata, inclusi i sottodomini di staging, i diversi percorsi e le versioni HTTPS. Assicurati che il parametro redirect_uri nella tua richiesta OAuth corrisponda esattamente a uno degli URI registrati, inclusa la codifica URL.

Q3. Un responsabile IT propone di incorporare l'AppSecret di WeChat nel JavaScript front-end del Captive Portal per velocizzare il processo di scambio dei token direttamente dal browser del client. Perché devi rifiutare questa proposta e qual è l'architettura corretta?

Suggerimento: Considera le implicazioni di sicurezza legate all'esposizione di chiavi crittografiche in codice accessibile pubblicamente.

Visualizza risposta modello

Rifiuta questa proposta. L'AppSecret è una chiave crittografica riservata. Incorporarla nel JavaScript lato client la espone a chiunque visualizzi il codice sorgente della pagina o intercetti il traffico di rete. Un malintenzionato può estrarre l'AppSecret e impersonare l'applicazione, chiamando le API di WeChat per conto della struttura, accedendo ai dati degli utenti e potenzialmente compromettendo l'intero Account Ufficiale. L'architettura corretta: la pagina del portale lato client riceve il codice di autorizzazione da WeChat e lo inoltra al server del portale tramite una chiamata API lato server. Il server del portale conserva l'AppSecret in una variabile d'ambiente sicura ed esegue lo scambio di token con l'API di WeChat. L'AppSecret non lascia mai il server.

Q4. Un gruppo alberghiero con 15 strutture in tutta Europa desidera creare un profilo ospite unificato in grado di riconoscere quando lo stesso ospite cinese soggiorna in strutture diverse. Ogni struttura ha il proprio Account Ufficiale WeChat. Quale identificativo WeChat dovrebbero utilizzare e quale configurazione è richiesta?

Suggerimento: L'OpenID è specifico per account. Esiste un identificativo diverso progettato per il riconoscimento tra account diversi.

Visualizza risposta modello

Utilizza l'UnionID. L'OpenID cambia per ogni Account Ufficiale, quindi lo stesso ospite avrà 15 OpenID diversi per 15 account. L'UnionID è un identificativo stabile che rappresenta un utente in tutti gli Account Ufficiali e le app collegate allo stesso account della Piattaforma Aperta (Open Platform). Configurazione richiesta: collega tutti i 15 Account Ufficiali a un unico account della Piattaforma Aperta WeChat. Una volta collegato, l'UnionID viene restituito nella risposta OAuth quando l'utente ha autorizzato almeno uno degli account collegati. Utilizza l'UnionID come chiave primaria nel CRM degli ospiti per creare profili trasversali alle strutture e riconoscere gli ospiti che ritornano, indipendentemente dalla struttura che visitano.

Continua a leggere questa serie

Progettazione di Captive Portal B2B: Raccolta dei Dati del Nome Registrato e dell'Azienda

Questa guida fornisce ai responsabili IT e ai gestori di sedi un framework tecnico indipendente dal fornitore per la progettazione di Captive Portal B2B. Dettaglia come strutturare i campi di registrazione per acquisire il nome registrato e i dati aziendali, garantendo tassi di completamento elevati pur mantenendo la conformità al GDPR e creando un'intelligence a livello di account.

Leggi la guida →

Architettura Captive Portal: sicurezza, reindirizzamento e best practice

Un riferimento tecnico definitivo sull'architettura enterprise del captive portal. Questa guida analizza l'isolamento della rete, il reindirizzamento DNS, l'autenticazione RADIUS e la conformità della sicurezza per i responsabili IT che implementano reti WiFi ospiti sicure e ricche di dati.

Leggi la guida →

Ottimizzazione dei Captive Portals B2B: Acquisizione di Nomi Aziendali e Dati Professionali

Questa guida spiega come i manager IT, gli architetti di rete e i direttori delle operazioni delle strutture possono configurare i Captive Portals B2B per acquisire dati professionali (nomi aziendali, ruoli lavorativi e indirizzi email aziendali) al momento dell'accesso al WiFi. Copre l'intera architettura tecnica, dall'isolamento delle VLAN e l'autenticazione RADIUS fino all'integrazione CRM con Salesforce e HubSpot, con conformità GDPR e CCPA integrata. Le strutture che implementano correttamente questa soluzione trasformano la propria rete WiFi per gli ospiti in un motore di dati di prima parte e in un sistema automatizzato di lead generation.

Leggi la guida →