Saltar al contenido principal

Integrating WeChat WiFi Authentication: Captive Portal Onboarding for APAC Customers

WeChat cuenta con 1.410 millones de usuarios activos mensuales, lo que lo convierte en la principal identidad digital para los consumidores chinos a nivel mundial. Esta guía explica cómo integrar la autenticación OAuth 2.0 de WeChat en los Captive Portals empresariales para establecimientos de la región APAC, abarcando el registro en la plataforma, la selección de alcances, la aplicación de Change of Authorisation de RADIUS y el cumplimiento del doble marco normativo con el GDPR y la PIPL de China. Está dirigida a directores de TI, arquitectos de red y directores de operaciones de establecimientos que necesiten actuar este trimestre.

📖 9 min de lectura📝 2,051 palabras🔧 2 ejemplos prácticos4 preguntas de práctica📚 10 definiciones clave

Escuchar esta guía

Ver transcripción del podcast
CÓMO CONFIGURAR LA AUTENTICACIÓN OAUTH DE WECHAT PARA CAPTIVE PORTALS Un informe técnico de Purple - Aproximadamente 10 minutos INTRODUCCIÓN Y CONTEXTO (aproximadamente 1 minuto) Bienvenido. Si es responsable de la red WiFi para invitados en un hotel, cadena de tiendas, estadio o centro de conferencias que recibe a visitantes chinos, este informe es para usted. WeChat cuenta con 1.410 millones de usuarios activos mensuales a partir de 2025, según los propios datos de Tencent. La gran mayoría se encuentra en China, pero la plataforma también tiene una presencia internacional significativa. Malasia tiene 12 millones de usuarios de WeChat. Japón tiene 5,5 millones. Corea del Sur, 5 millones. Y las cifras están creciendo en todo el sudeste asiático, Oriente Medio y Europa. Cuando un invitado chino se conecta a su WiFi y ve una página de inicio de sesión que solo ofrece correo electrónico, Facebook o un código de cupón, se encuentra con una fricción inmediata. Es posible que no tenga una dirección de correo electrónico local configurada en ese dispositivo. Pero casi con toda seguridad tiene WeChat. Por lo tanto, la pregunta no es si debe ofrecer el inicio de sesión con WeChat. Es cómo configurarlo de manera correcta, segura y de forma que genere datos de origen (first-party data) que realmente pueda utilizar. Eso es lo que vamos a cubrir hoy. Analizaremos el flujo de OAuth 2.0, los dos registros de plataforma que necesita, la decisión de alcance (scope) que determina qué datos recopila, el mecanismo de aplicación en el lado de la red y las consideraciones de cumplimiento normativo que importan en 2026. INMERSIÓN TÉCNICA PROFUNDA (aproximadamente 5 minutos) Comencemos con la arquitectura. Un Captive Portal intercepta el tráfico HTTP de un dispositivo no autenticado y lo redirige a una página de inicio de sesión. Esa página de inicio de sesión se aloja en un servidor de portal, ya sea de forma local o en la nube. Al añadir el protocolo OAuth de WeChat, está insertando un proveedor de identidad de terceros en ese flujo. Esta es la secuencia. El invitado se conecta a su SSID. El punto de acceso o controlador inalámbrico detecta que el dispositivo no tiene una sesión autenticada y redirige todo el tráfico HTTP a la URL de su Captive Portal. La página del portal se carga y presenta las opciones de inicio de sesión, incluido WeChat. El invitado pulsa en el inicio de sesión de WeChat. El servidor de su portal redirige el navegador al punto de conexión (endpoint) de autorización de WeChat, enviando su AppID, la URI de redirección, el tipo de respuesta de código y el alcance (scope). WeChat gestiona la autenticación por completo en sus propios servidores. Si el invitado ya ha iniciado sesión en WeChat en su navegador, verá una pantalla de consentimiento. Si está utilizando el navegador integrado de la aplicación WeChat, la experiencia puede ser silenciosa con el alcance snsapi base, lo que significa que no habrá ninguna solicitud de consentimiento. A continuación, WeChat redirige de nuevo a la URI de redirección de su portal con un código de autorización temporal. El servidor de su portal intercambia ese código por un token de acceso llamando a la API de WeChat. WeChat devuelve un token de acceso, un token de actualización, el OpenID del usuario y el alcance concedido. Si solicitó el alcance snsapi userinfo, puede realizar una segunda llamada a la API para recuperar el apodo, el avatar, el género y la ciudad del usuario. Ahora, los dos registros de plataforma. Aquí es donde fallan la mayoría de las implementaciones. WeChat tiene dos plataformas de desarrollo independientes. La WeChat Open Platform gestiona aplicaciones web y aplicaciones móviles. La WeChat Official Accounts Platform gestiona cuentas públicas, que es lo que la mayoría de los establecimientos necesitan realmente. Para un Captive Portal que atienda a los clientes dentro del navegador integrado de WeChat, se necesita una Service Account en la Official Accounts Platform. Una Subscription Account no funcionará, ya que no dispone de permisos de autorización de páginas web OAuth. Una Service Account sí los tiene y es compatible con los ámbitos snsapi base y snsapi userinfo. Para un Captive Portal al que se accede desde un navegador móvil estándar fuera de WeChat, como Chrome en Android o Safari en iOS, se necesita una Website Application registrada en la Open Platform. Esta utiliza el ámbito snsapi login y presenta un código QR que el usuario escanea con su aplicación WeChat. En la práctica, la mayoría de las implantaciones en establecimientos utilizan ambos. Un huésped de un hotel puede abrir el portal en Chrome, ver un código QR, escanearlo con WeChat y autenticarse. O bien, puede seguir un enlace dentro de la propia WeChat, acceder al navegador integrado y autenticarse de forma silenciosa con snsapi base. Hablemos de la selección del ámbito, ya que se trata de un punto de decisión real. El ámbito snsapi base solo devuelve el OpenID. Este es un identificador único para ese usuario dentro de su Official Account. No requiere ninguna solicitud de consentimiento del usuario. La autenticación es invisible para el usuario. Esto es ideal para clientes habituales de los que ya se tiene un perfil, o para establecimientos donde se busca una fricción cero a costa de no obtener nuevos datos. El ámbito snsapi userinfo devuelve el OpenID más el apodo de WeChat del usuario, la foto de perfil, el género, la configuración de idioma y la ciudad. Requiere una pantalla de consentimiento explícita. El usuario ve un mensaje en el que se le pregunta si permite que su Official Account acceda a su información. La mayoría de los usuarios lo aceptan, pero existe fricción. La elección correcta depende de su caso de uso. Para el registro de un cliente que accede por primera vez y del que desea crear un perfil, utilice snsapi userinfo y combínelo con una capa de consentimiento que cumpla con el GDPR en la página de su portal. Para un cliente habitual que ya ha dado su consentimiento y del que ya dispone de un perfil, utilice snsapi base para una autenticación silenciosa. Por último, el aspecto de la aplicación de red. Obtener un token OAuth demuestra la identidad, pero no abre la red automáticamente. Necesita un mecanismo para traducir una autenticación correcta en acceso a la red. Los dos enfoques estándar son RADIUS Change of Authorisation, definido en RFC 3576, y la omisión de dirección MAC. Con RADIUS CoA, el servidor de su portal envía una solicitud de CoA al controlador de red tras un OAuth correcto, y el controlador mueve el dispositivo de la VLAN no autenticada a la VLAN de invitados. Esto funciona con Cisco Meraki, HPE Aruba, Ruckus, Juniper Mist, Ubiquiti UniFi, Cambium, Extreme y Fortinet. Con el bypass de MAC, el servidor del portal registra la dirección MAC del dispositivo como un cliente autorizado y el controlador lo permite. El bypass de MAC es más sencillo de implementar pero menos seguro, ya que las direcciones MAC se pueden suplantar, y los smartphones modernos utilizan cada vez más la aleatorización de direcciones MAC, lo que rompe el mecanismo al volver a conectarse. La plataforma de Guest WiFi de Purple gestiona ambos mecanismos. Una vez completado el OAuth de WeChat, la capa en la nube de Purple envía la señal adecuada al hardware subyacente. El operador del establecimiento no necesita gestionar esa traducción manualmente. RECOMENDACIONES DE IMPLEMENTACIÓN Y ERRORES COMUNES (aproximadamente 2 minutos) Permítame presentarle los cinco factores que hacen que las implementaciones de Captive Portal con OAuth de WeChat fallen. Primero: la discrepancia en la URI de redirección. WeChat valida la URI de redirección con el dominio autorizado que registró en la plataforma. Si el servidor de su portal utiliza un subdominio diferente, una ruta distinta o HTTP en lugar de HTTPS, el flujo de OAuth fallará con el error 40029, que significa código no válido. Registre cada variante de dominio que utilice, incluidos los entornos de prueba. Segundo: el AppSecret en el lado del cliente. Su AppSecret nunca debe aparecer en el JavaScript del lado del cliente ni en el binario de una aplicación móvil. Debe permanecer en su servidor. Si queda expuesto, cualquiera podría suplantar su aplicación y realizar llamadas a las API de WeChat en su nombre. Tercero: la falta de protección CSRF. El parámetro de estado en la solicitud de OAuth existe específicamente para evitar la falsificación de solicitudes entre sitios. Genere un valor de estado criptográficamente aleatorio, almacénelo en la sesión del usuario y valídelo cuando WeChat redirija de vuelta. Si omite esto, tendrá una vulnerabilidad real. Cuarto: la brecha de detección del navegador integrado en la aplicación. El navegador integrado de WeChat establece una cadena de agente de usuario específica que contiene MicroMessenger. Si su portal no detecta esto y no ofrece el flujo de OAuth correcto, los usuarios experimentarán fallos o un error. Quinto: la alineación con el GDPR y la PIPL. Si ofrece servicio a visitantes europeos, el GDPR se aplica a los datos que recopila a través del OAuth de WeChat. Si ofrece servicio a visitantes chinos, la Ley de Protección de Información Personal de China, conocida como PIPL, se aplica a cómo procesa sus datos. Ambas normativas exigen una base legal para el procesamiento, una limitación clara de la finalidad y la minimización de datos. El alcance base snsapi_base es más fácil de justificar bajo los principios de minimización de datos que snsapi_userinfo. Independientemente de lo que recopile, documente su base legal y su período de retención. PREGUNTAS Y RESPUESTAS RÁPIDAS (aproximadamente 1 minuto) Pregunta: ¿Puedo utilizar el inicio de sesión de WeChat en un portal que también ofrezca inicio de sesión por correo electrónico y SMS? Sí. La mayoría de las plataformas de portales empresariales, incluida Purple, admiten múltiples métodos de autenticación en la misma página del portal. WeChat aparece como una opción más junto a las otras. Pregunta: ¿Funciona el OAuth de WeChat en iOS? Sí, pero con un matiz. El marco de transparencia de seguimiento de aplicaciones de Apple no afecta a los flujos de OAuth del lado del servidor. El inicio de sesión de WeChat en Safari en iOS funciona a través del flujo de código QR o del flujo de redirección. La propia aplicación de WeChat se encarga de la autenticación. Pregunta: ¿Qué ocurre si la API de WeChat no está disponible? Su portal debe implementar una alternativa de seguridad (fallback). Si la llamada a la API de WeChat agota el tiempo de espera o devuelve un error, redirija al usuario a un método de inicio de sesión alternativo. No lo deje con la pantalla en blanco. Pregunta: ¿Puedo utilizar el OpenID como identificador persistente de cliente? Dentro de su Cuenta Oficial, sí. El OpenID es estable para un usuario determinado y una Cuenta Oficial determinada. Si tiene varias Cuentas Oficiales, el mismo usuario tendrá diferentes OpenID en cada una de ellas. Para la resolución de identidad entre cuentas, WeChat proporciona un UnionID, lo que requiere que sus cuentas estén vinculadas en la Open Platform. RESUMEN Y PRÓXIMOS PASOS (aproximadamente 1 minuto) En resumen. La autenticación OAuth de WeChat para Captive Portals es un ejercicio de registro en dos plataformas, una decisión de alcance, una integración de aplicación de red y una revisión de cumplimiento. Si hace bien esas cuatro cosas, tendrá un método de inicio de sesión que sirve a más de mil millones de visitantes potenciales sin la fricción de las contraseñas. Los próximos pasos prácticos son estos. Primero, determine si sus visitantes acceden al portal dentro del navegador integrado de WeChat o en un navegador móvil estándar. Eso determina qué registro de plataforma necesita. Segundo, decida el alcance. Utilice snsapi base para los clientes que regresan y snsapi userinfo para el registro por primera vez con consentimiento. Tercero, confirme que el hardware de su red es compatible con RADIUS CoA o configure el bypass de MAC como alternativa. Cuarto, revise su aviso de privacidad y el flujo de consentimiento frente a los requisitos de GDPR y PIPL. Quinto, pruebe la URI de redirección, la validación del parámetro de estado y la detección del navegador integrado antes de la puesta en marcha. Si desea ver cómo Purple gestiona el OAuth de WeChat como parte de una plataforma más amplia de analítica y Guest WiFi, en 80.000 establecimientos y con 440 millones de inicios de sesión en 2024, visite purple.ai o hable con su equipo de cuenta. Gracias por su atención.

📚 Parte de nuestra serie principal: 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.

Definiciones clave

Captive Portal

Una pasarela de autenticación basada en web que intercepta el tráfico HTTP de un dispositivo no autenticado y lo redirige a una página de inicio de sesión antes de conceder acceso a la red.

El mecanismo a través del cual se presenta la autenticación de WiFi de invitados a los usuarios. WeChat OAuth es uno de los diversos métodos de autenticación que puede ofrecer un Captive Portal.

OAuth 2.0

Un protocolo de autorización estándar del sector que permite a una aplicación de terceros (el Captive Portal) obtener acceso limitado a un servicio web (WeChat) en nombre de un usuario, sin que este comparta su contraseña con el tercero.

El marco subyacente que hace posible el inicio de sesión con WeChat. El portal nunca ve las credenciales de WeChat del usuario; solo recibe un token que confirma que WeChat lo ha autenticado.

RADIUS CoA

Change of Authorisation (Cambio de Autorización). Un mecanismo definido en el RFC 3576 que permite a un servidor RADIUS modificar dinámicamente los atributos de autorización de sesión de un cliente de red activo, como cambiar la asignación de VLAN.

El mecanismo de ejecución de red que traduce un intercambio exitoso de WeChat OAuth en un acceso real a la red. Sin CoA, el invitado se autentica pero el controlador no sabe que debe abrir la red.

OpenID

Un identificador único asignado por WeChat a un usuario específico para una Cuenta Oficial o Aplicación Web concreta. Es estable entre sesiones pero difiere entre cuentas.

La clave principal utilizada para identificar a un invitado en su base de datos de analíticas de WiFi. Utilice UnionID en su lugar si gestiona varias Cuentas Oficiales y necesita una resolución de identidad entre cuentas.

snsapi_base

Un alcance (scope) de WeChat OAuth que permite la autenticación silenciosa, devolviendo únicamente el OpenID del usuario sin mostrar una solicitud de consentimiento.

Utilícelo para invitados recurrentes o entornos de alto rendimiento donde la velocidad de conexión sea la prioridad. No devuelve datos demográficos más allá del OpenID.

snsapi_userinfo

Un alcance (scope) de WeChat OAuth que devuelve el OpenID del usuario, su apodo, imagen de perfil, género, idioma y ciudad, requiriendo una pantalla de consentimiento explícito del usuario.

Utilícelo para el registro de invitados por primera vez para crear un perfil de datos de origen (first-party data). Debe combinarse con una capa de consentimiento que cumpla con el GDPR y la PIPL.

PIPL

Personal Information Protection Law (Ley de Protección de Información Personal). La legislación integral de privacidad de datos de China, en vigor desde noviembre de 2021, que regula cómo se deben recopilar, procesar y transferir los datos personales de los ciudadanos chinos.

Se aplica a cualquier establecimiento que recopile datos de ciudadanos chinos a través de WeChat OAuth, independientemente de dónde se encuentre el establecimiento. Requiere consentimiento explícito, limitación de la finalidad y minimización de datos.

AppSecret

Una clave criptográfica confidencial emitida por WeChat que autentica su aplicación cuando llama a la API de intercambio de tokens de WeChat.

Debe almacenarse únicamente en el lado del servidor. Su exposición en el código del lado del cliente permite a cualquier parte suplantar su aplicación y realizar llamadas no autorizadas a la API de WeChat.

VLAN

Virtual Local Area Network (Red de Área Local Virtual). Un segmento de red lógico que aísla el tráfico en la capa de enlace de datos, lo que permite que una única red física transporte múltiples flujos de tráfico aislados.

Se utiliza en despliegues de Captive Portal para separar los dispositivos no autenticados (VLAN de jardín vallado) de los invitados autenticados (VLAN de invitados). RADIUS CoA mueve un dispositivo entre VLAN tras una autenticación exitosa.

UnionID

Un identificador de WeChat que se mantiene consistente para un usuario determinado en todas las Cuentas Oficiales y Aplicaciones Web vinculadas al mismo registro de Open Platform.

Esencial para cadenas hoteleras, grupos de distribución y operadores de múltiples establecimientos que necesitan reconocer al mismo invitado en varias propiedades, cada una con su propia Cuenta Oficial.

Ejemplos prácticos

Un hotel de lujo de 200 habitaciones en Singapur utiliza controladores HPE Aruba y atiende a un gran volumen de viajeros de negocios chinos. Quieren recopilar datos demográficos de los huéspedes que los visitan por primera vez y garantizar que los huéspedes que regresan se conecten automáticamente sin volver a ver el portal. ¿Cómo deben configurar la integración de WeChat OAuth?

Paso 1: Registre una cuenta de servicio en la plataforma de cuentas oficiales de WeChat (mp.weixin.qq.com) para gestionar el acceso de los huéspedes al portal dentro del navegador integrado de WeChat. Registre una aplicación web en la plataforma abierta de WeChat (open.weixin.qq.com) para los huéspedes que utilicen navegadores móviles estándar.

Paso 2: Configure el Captive Portal para detectar la cadena de agente de usuario de MicroMessenger. Ofrezca el flujo OAuth de cuentas oficiales para los usuarios del navegador integrado y el flujo de código QR de la plataforma abierta para los usuarios de navegadores estándar.

Paso 3: Para las conexiones por primera vez (sin OpenID existente en la base de datos), solicite el alcance snsapi_userinfo. Presente una pantalla de consentimiento que cumpla con la PIPL antes de la redirección de OAuth. Almacene el OpenID, el apodo, la ciudad y el género devueltos en la base de datos de perfiles de huéspedes.

Paso 4: Para los huéspedes que regresan (el OpenID ya existe en la base de datos), solicite el alcance snsapi_base. Esto realiza la autenticación de forma silenciosa sin que el usuario vea ninguna solicitud.

Paso 5: Configure el controlador HPE Aruba para RADIUS CoA en el puerto UDP 3799. Tras un OAuth correcto, el servidor del portal envía una solicitud CoA para pasar el dispositivo de la VLAN de jardín vallado (walled garden) a la VLAN de invitados.

Paso 6: Implemente el registro de direcciones MAC junto con OpenID para gestionar la detección de huéspedes que regresan. Tenga en cuenta que la aleatorización de MAC requiere OpenID como identificador principal, no solo la dirección MAC.

Comentario del examinador: Este enfoque separa correctamente los dos registros de plataforma según el contexto de acceso, utiliza la selección de alcance para equilibrar la fricción frente a la recopilación de datos e implementa RADIUS CoA para una aplicación segura de la red. El uso de OpenID como identificador principal para los huéspedes que regresan es la respuesta correcta ante la aleatorización de MAC. La capa de consentimiento de PIPL es innegociable para los datos de ciudadanos chinos.

El equipo de TI de una cadena de tiendas informa de una alta tasa de fallos en los inicios de sesión de WeChat WiFi en tres centros comerciales. Los usuarios se autentican en WeChat pero vuelven a la página del portal con un error. Los registros del portal muestran el error 40029. ¿Cuál es la causa probable y cómo se resuelve?

El error 40029 significa que WeChat rechazó el código de autorización durante el intercambio de tokens. Las dos causas más comunes son una discrepancia en la URI de redirección y la reutilización del código.

Paso 1: Inicie sesión en la consola de desarrollador de WeChat tanto para la plataforma de cuentas oficiales como para la plataforma abierta. Vaya a la configuración de OAuth y enumere todas las URI de redirección registradas.

Paso 2: Compárelas con las URI de redirección reales que utiliza su servidor de portal en producción en las tres ubicaciones. Compruebe si hay diferencias de subdominio (portal.brand.com frente a brand.com), diferencias de protocolo (HTTP frente a HTTPS) y diferencias de ruta (/callback frente a /wechat/callback).

Paso 3: Registre cada variante en la consola de WeChat. WeChat realiza una validación de coincidencia exacta, no una coincidencia de prefijos.

Paso 4: Si las URI coinciden, investigue si el servidor de su portal está intentando reutilizar los códigos de autorización. Los códigos de WeChat son de un solo uso y caducan a los cinco minutos. Si su servidor vuelve a intentar el intercambio de tokens con el mismo código, recibirá el error 40029 en el segundo intento.

Paso 5: Implemente la idempotencia en el endpoint de intercambio de tokens para evitar solicitudes duplicadas.

Comentario del examinador: El error 40029 es el más común en las implementaciones de WeChat OAuth y casi siempre se debe a una discrepancia en la URI de redirección. Las implementaciones en múltiples ubicaciones son especialmente vulnerables porque cada ubicación puede utilizar un subdominio o una dirección de equilibrador de carga diferente. La causa secundaria, la reutilización del código, es menos común pero vale la pena comprobarla si se confirma que el registro de la URI es correcto.

Preguntas de práctica

Q1. You are deploying a captive portal for a 60,000-capacity stadium hosting international events with a significant Chinese fan base. The priority is getting all attendees online within the first 15 minutes of doors opening to reduce cellular congestion. Marketing data collection is a secondary objective. Which WeChat OAuth scope should you configure, and why?

Sugerencia: Consider the impact of a consent screen displayed to 15,000 simultaneous users on a portal server.

Ver respuesta modelo

Configure snsapi_base scope. This enables silent authentication with no user consent prompt, providing the fastest possible onboarding experience. At stadium scale, a consent screen adds friction that multiplies across thousands of simultaneous connections and can cause portal server load spikes. snsapi_base returns only the OpenID, which is sufficient to log the session and identify returning fans. For first-time fans where you want demographic data, you can prompt for profile completion via a post-connection survey rather than at the authentication gate.

Q2. A network architect on your team proposes storing the WeChat AppSecret in the captive portal's client-side JavaScript to reduce server round-trips by making the token exchange call directly from the browser. Explain why this approach is a critical security failure and what the correct architecture is.

Sugerencia: Consider who can view client-side code and what the AppSecret allows them to do.

Ver respuesta modelo

Storing the AppSecret in client-side JavaScript exposes it to any person who views the page source or intercepts network traffic. The AppSecret authenticates your application to WeChat's API. With it, a malicious actor can impersonate your application, call WeChat's token exchange endpoint with any valid authorisation code, retrieve user OpenIDs and profile data, and potentially exhaust your API rate limits. The correct architecture is a server-side token exchange endpoint. The browser receives the authorisation code from WeChat and passes it to your server. Your server, using the AppSecret stored in an environment variable or secrets manager, exchanges the code for a token and returns only the data the portal needs. The AppSecret never leaves your server.

Q3. Your venue operates three hotel properties in different cities, each with its own WeChat Official Account. A loyalty programme member who has authenticated at all three properties has three different OpenIDs in your database. How do you resolve this into a single guest identity?

Sugerencia: WeChat provides a mechanism for cross-account identity resolution that requires a specific platform configuration.

Ver respuesta modelo

Implement WeChat's UnionID mechanism. Link all three Official Accounts to the same Open Platform registration at open.weixin.qq.com. Once linked, WeChat returns a UnionID alongside the OpenID in the snsapi_userinfo response. The UnionID is consistent for a given user across all accounts linked to the same Open Platform registration. Migrate your database to use UnionID as the primary guest identifier for cross-property records, retaining the per-account OpenID for account-specific API calls. For guests who authenticated before UnionID was implemented, trigger a re-authentication with snsapi_userinfo at their next visit to capture the UnionID.

Q4. After deploying WeChat WiFi authentication at a retail venue running Cisco Meraki access points, guests report that they complete the WeChat login successfully but are returned to the portal page and cannot browse the internet. The portal server logs show successful token retrieval. What is the most likely cause and how do you diagnose it?

Sugerencia: The portal has verified identity. What has not happened yet?

Ver respuesta modelo

The RADIUS Change of Authorisation (CoA) is not completing. The portal server has verified the guest's identity via WeChat OAuth but has not successfully instructed the Cisco Meraki controller to move the device from the walled garden VLAN to the guest VLAN. Diagnose by checking: (1) whether the Meraki controller has RADIUS CoA enabled and the portal server's IP is listed as an authorised CoA client; (2) whether UDP port 3799 is open between the portal server and the controller; (3) the portal server logs for CoA request errors or timeouts; and (4) whether the shared secret configured on both sides matches. If CoA is not supported in your Meraki licence tier, MAC address bypass is the fallback, though it carries the MAC randomisation risk noted in the guide.