Saltar al contenido principal

Integrating WeChat WiFi Authentication: Captive Portal Onboarding for APAC Customers

WeChat has 1.41 billion monthly active users, making it the primary digital identity for Chinese consumers globally. This guide explains how to integrate WeChat OAuth 2.0 authentication into enterprise captive portals for APAC venues, covering platform registration, scope selection, RADIUS Change of Authorisation enforcement, and dual-framework compliance with GDPR and China's PIPL. It is aimed at IT managers, network architects, and venue operations directors who need to act this quarter.

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

Escucha 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 usted es responsable del WiFi para invitados en un hotel, cadena de tiendas, estadio o centro de conferencias que atiende 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 enfrenta a una fricción inmediata. Es posible que no tengan una dirección de correo electrónico local configurada en ese dispositivo. Es casi seguro que tienen 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 del lado de la red y las consideraciones de cumplimiento normativo que importan en 2026. ANÁLISIS TÉCNICO DETALLADO (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 agregar el 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, incluyendo WeChat. El invitado toca el inicio de sesión de WeChat. El servidor de su portal redirige el navegador al endpoint de autorización de WeChat, enviando su AppID, la URI de redireccionamiento, 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. Luego, WeChat redirige de vuelta a la URI de redireccionamiento 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 otorgado. Si solicitó el alcance snsapi userinfo, puede realizar una segunda llamada a la API para recuperar el apodo, avatar, género y ciudad del usuario. Ahora, los dos registros de plataforma. Aquí es donde la mayoría de las implementaciones fallan. WeChat tiene dos plataformas de desarrolladores independientes. WeChat Open Platform gestiona aplicaciones web y aplicaciones móviles. WeChat Official Accounts Platform gestiona cuentas públicas, que es lo que la mayoría de los establecimientos realmente necesitan. Para un Captive Portal que atiende a los usuarios dentro del navegador integrado de WeChat, se necesita una Cuenta de Servicio en la Official Accounts Platform. Una Cuenta de Suscripción no funcionará, ya que no tiene permisos de autorización de páginas web OAuth. Una Cuenta de Servicio sí los tiene y es compatible con los alcances 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 Aplicación Web registrada en la Open Platform. Esta utiliza el alcance 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 implementaciones en establecimientos utilizan ambos. Un huésped en un hotel podría abrir el portal en Chrome, ver un código QR, escanearlo con WeChat y autenticarse. O bien, podría seguir un enlace dentro de la propia aplicación de WeChat, abrir el navegador integrado y autenticarse de forma silenciosa con snsapi base. Hablemos de la selección del alcance, ya que este es un punto de decisión crucial. El alcance snsapi base solo devuelve el OpenID. Este es un identificador único para ese usuario dentro de su Cuenta Oficial. No requiere ninguna solicitud de consentimiento del usuario. La autenticación es invisible para el usuario. Esto es ideal para huéspedes recurrentes de los que ya tiene un perfil, o para establecimientos donde se busca cero fricción a cambio de no obtener nuevos datos. El alcance 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 que le pregunta si permite que su Cuenta Oficial acceda a su información. La mayoría de los usuarios acepta, pero existe cierta fricción. La elección correcta depende de su caso de uso. Para el registro de un huésped por primera vez en el 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 huésped recurrente que ya ha dado su consentimiento y del cual ya tiene un perfil, utilice snsapi base para una reautenticación silenciosa. Ahora, 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 exitosa 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 después de un OAuth exitoso, 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 falsificar, 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 maneja 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 de forma manual. RECOMENDACIONES DE IMPLEMENTACIÓN Y ERRORES COMUNES (aproximadamente 2 minutos) Permítame presentarle los cinco factores que provocan el fallo de las implementaciones de Captive Portal con OAuth de WeChat. 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. Pertenece a su servidor. Si queda expuesto, cualquiera puede suplantar su aplicación y realizar llamadas a las API de WeChat en su nombre. Tercero: la falta de protección contra 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 en la 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 una experiencia fallida o un error. Quinto: la alineación con GDPR y PIPL. Si atiende a visitantes europeos, el GDPR se aplica a los datos que recopila a través de OAuth de WeChat. Si atiende 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. Ambos marcos requieren 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 periodo 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 ofrece 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 junto a las demás. 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é pasa si la API de WeChat no está disponible? Su portal debe implementar una alternativa de respaldo. 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 los deje con una pantalla en blanco. Pregunta: ¿Puedo usar el OpenID como un identificador de cliente persistente? 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 OpenIDs en cada una de ellas. Para la resolución de identidad entre cuentas, WeChat proporciona un UnionID, el cual 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 cumplimiento de red y una revisión de cumplimiento normativo. 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 ingresar contraseñas. Los pasos prácticos a seguir son estos. Primero, determine si sus visitantes encuentran el 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. Use snsapi base para huéspedes recurrentes y snsapi userinfo para el registro por primera vez con consentimiento. Tercero, confirme que el hardware de su red sea compatible con RADIUS CoA o configure el bypass de MAC como alternativa. Cuarto, revise su aviso de privacidad y flujo de consentimiento frente a los requisitos de GDPR y PIPL. Quinto, pruebe la URI de redireccionamiento, la validación del parámetro de estado y la detección del navegador integrado antes de salir a producción. Si desea ver cómo Purple maneja el OAuth de WeChat como parte de una plataforma más amplia de WiFi para invitados y analítica, en 80,000 establecimientos y 440 millones de inicios de sesión en 2024, visite purple.ai o hable con su equipo de cuenta. Gracias por escuchar.

📚 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 puerta de enlace 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 otorgar 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 varios métodos de autenticación que puede ofrecer un Captive Portal.

OAuth 2.0

Un protocolo de autorización estándar de la industria 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 de WeChat. El portal nunca ve las credenciales de WeChat del usuario; solo recibe un token que confirma que WeChat los ha autenticado.

RADIUS CoA

Cambio de Autorización (Change of Authorisation). Un mecanismo definido en 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 aplicación de red que traduce un intercambio exitoso de WeChat OAuth en 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 específica. 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 opera múltiples Cuentas Oficiales y necesita una resolución de identidad entre cuentas.

snsapi_base

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

Úselo para invitados recurrentes o entornos de alto rendimiento donde la velocidad de conexión es la prioridad. No devuelve datos demográficos más allá del OpenID.

snsapi_userinfo

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

Úselo para el registro de invitados por primera vez para crear un perfil de datos de origen. Debe combinarse con una capa de consentimiento que cumpla con GDPR y PIPL.

PIPL

Ley de Protección de Información Personal (Personal Information Protection Law). La legislación integral de privacidad de datos de China, en vigor desde noviembre de 2021, que rige 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 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. La exposición en el código del lado del cliente permite a cualquier parte suplantar su aplicación y realizar llamadas de API no autorizadas a WeChat.

VLAN

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

Se utiliza en implementaciones de Captive Portal para separar los dispositivos no autenticados (VLAN de jardín amurallado) de los invitados autenticados (VLAN de invitados). RADIUS CoA mueve un dispositivo entre VLANs 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 retail y operadores de múltiples establecimientos que necesitan reconocer al mismo invitado en múltiples propiedades, cada una con su propia Cuenta Oficial.

Ejemplos resueltos

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 a los huéspedes que acceden 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 del redireccionamiento 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. Después de un OAuth exitoso, el servidor del portal envía una solicitud CoA para promover el dispositivo de la VLAN de walled garden a la VLAN de huéspedes.

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 de red segura. El uso de OpenID como el identificador principal para los huéspedes que regresan es la respuesta correcta ante la aleatorización de MAC. La capa de consentimiento de PIPL no es negociable para los datos de ciudadanos chinos.

El equipo de TI de una cadena de tiendas de retail reporta una alta tasa de fallas en los inicios de sesión de WeChat WiFi en tres ubicaciones de centros comerciales. Los usuarios se autentican en WeChat pero regresan 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 redireccionamiento y la reutilización de códigos.

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 redireccionamiento registradas.

Paso 2: Compare estas con las URI de redireccionamiento reales que utiliza su servidor del portal en producción en las tres ubicaciones. Verifique 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 códigos de autorización. Los códigos de WeChat son de un solo uso y caducan después de 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 error más común en las implementaciones de WeChat OAuth y casi siempre se debe a una discrepancia en la URI de redireccionamiento. Las implementaciones en múltiples ubicaciones son particularmente vulnerables porque cada ubicación puede usar un subdominio o una dirección de balanceador de carga diferente. La causa secundaria, la reutilización de códigos, es menos común pero vale la pena verificarla si se confirma que el registro de la URI es correcto.

Preguntas de práctica

Q1. Estás implementando un Captive Portal para un estadio con capacidad para 60,000 personas que alberga eventos internacionales con una base significativa de aficionados chinos. La prioridad es conectar a todos los asistentes en los primeros 15 minutos de la apertura de puertas para reducir la congestión celular. La recopilación de datos de marketing es un objetivo secundario. ¿Qué alcance (scope) de WeChat OAuth deberías configurar y por qué?

Sugerencia: Considera el impacto de una pantalla de consentimiento mostrada a 15,000 usuarios simultáneos en un servidor de portal.

Ver respuesta modelo

Configura el alcance snsapi_base. Esto permite la autenticación silenciosa sin solicitar el consentimiento del usuario, proporcionando la experiencia de incorporación más rápida posible. A la escala de un estadio, una pantalla de consentimiento añade fricción que se multiplica a través de miles de conexiones simultáneas y puede causar picos de carga en el servidor del portal. snsapi_base devuelve solo el OpenID, lo cual es suficiente para registrar la sesión e identificar a los aficionados que regresan. Para los aficionados nuevos de los que deseas obtener datos demográficos, puedes solicitar que completen su perfil a través de una encuesta posterior a la conexión en lugar de hacerlo en el filtro de autenticación.

Q2. Un arquitecto de red de tu equipo propone almacenar el WeChat AppSecret en el JavaScript del lado del cliente del Captive Portal para reducir los viajes de ida y vuelta al servidor realizando la llamada de intercambio de tokens directamente desde el navegador. Explica por qué este enfoque es un fallo de seguridad crítico y cuál es la arquitectura correcta.

Sugerencia: Considera quién puede ver el código del lado del cliente y qué les permite hacer el AppSecret.

Ver respuesta modelo

Almacenar el AppSecret en el JavaScript del lado del cliente lo expone a cualquier persona que vea el código fuente de la página o intercepte el tráfico de red. El AppSecret autentica tu aplicación ante la API de WeChat. Con él, un actor malicioso puede suplantar tu aplicación, llamar al endpoint de intercambio de tokens de WeChat con cualquier código de autorización válido, recuperar los OpenIDs y datos de perfil de los usuarios, y potencialmente agotar los límites de velocidad de tu API. La arquitectura correcta es un endpoint de intercambio de tokens del lado del servidor. El navegador recibe el código de autorización de WeChat y lo pasa a tu servidor. Tu servidor, utilizando el AppSecret almacenado en una variable de entorno o en un gestor de secretos, intercambia el código por un token y devuelve solo los datos que el portal necesita. El AppSecret nunca sale de tu servidor.

Q3. Tu establecimiento opera tres propiedades hoteleras en diferentes ciudades, cada una con su propia cuenta oficial de WeChat. Un miembro del programa de fidelización que se ha autenticado en las tres propiedades tiene tres OpenIDs diferentes en tu base de datos. ¿Cómo resuelves esto en una única identidad de huésped?

Sugerencia: WeChat proporciona un mecanismo para la resolución de identidad entre cuentas que requiere una configuración de plataforma específica.

Ver respuesta modelo

Implementa el mecanismo UnionID de WeChat. Vincula las tres cuentas oficiales al mismo registro de Open Platform en open.weixin.qq.com. Una vez vinculadas, WeChat devuelve un UnionID junto con el OpenID en la respuesta de snsapi_userinfo. El UnionID es consistente para un usuario determinado en todas las cuentas vinculadas al mismo registro de Open Platform. Migra tu base de datos para utilizar UnionID como el identificador principal de huésped para registros entre propiedades, conservando el OpenID por cuenta para las llamadas a la API específicas de cada cuenta. Para los huéspedes que se autenticaron antes de que se implementara UnionID, activa una reautenticación con snsapi_userinfo en su próxima visita para capturar el UnionID.

Q4. Después de implementar la autenticación de WeChat WiFi en un punto de venta que ejecuta puntos de acceso Cisco Meraki, los huéspedes informan que completan el inicio de sesión de WeChat con éxito pero regresan a la página del portal y no pueden navegar por internet. Los registros del servidor del portal muestran una recuperación de token exitosa. ¿Cuál es la causa más probable y cómo la diagnosticas?

Sugerencia: El portal ha verificado la identidad. ¿Qué es lo que aún no ha sucedido?

Ver respuesta modelo

El RADIUS Change of Authorisation (CoA) no se está completando. El servidor del portal ha verificado la identidad del huésped a través de WeChat OAuth pero no ha indicado con éxito al controlador de Cisco Meraki que mueva el dispositivo de la VLAN del walled garden a la VLAN de invitados. Realiza el diagnóstico verificando: (1) si el controlador Meraki tiene habilitado RADIUS CoA y la IP del servidor del portal figura como un cliente CoA autorizado; (2) si el puerto UDP 3799 está abierto entre el servidor del portal y el controlador; (3) los registros del servidor del portal en busca de errores o tiempos de espera de solicitudes CoA; y (4) si el secreto compartido configurado en ambos lados coincide. Si CoA no es compatible con tu nivel de licencia de Meraki, la omisión por dirección MAC es la alternativa, aunque conlleva el riesgo de aleatorización de MAC mencionado en la guía.