Saltar al contenido principal

Integración de la autenticación de WeChat con Captive Portals de WiFi para invitados

Esta guía explica cómo integrar la autenticación OAuth 2.0 de WeChat en Captive Portals de WiFi para invitados empresariales. Cubre los requisitos de registro en doble plataforma, la selección de alcance (scope) para la captura de datos de primera mano, la aplicación de red mediante RADIUS Change of Authorization y el cumplimiento de GDPR y la PIPL de China. Los operadores de establecimientos en hostelería, comercio minorista y eventos encontrarán pasos concretos de implementación, casos de estudio reales y directrices de refuerzo de seguridad para implementar el inicio de sesión de WeChat en WiFi para invitados a escala.

📖 8 min de lectura📝 1,966 palabras🔧 2 ejemplos prácticos4 preguntas de práctica📚 9 definiciones clave

Escuchar esta guía

Ver transcripción del podcast
CÓMO CONFIGURAR LA AUTENTICACIÓN OAUTH DE WECHAT PARA CAPTIVE PORTALS Una sesión informativa técnica de Purple - Aproximadamente 10 minutos --- INTRODUCCIÓN Y CONTEXTO (aproximadamente 1 minuto) Bienvenido. Si es responsable de la WiFi para invitados en un hotel, cadena de tiendas, estadio o centro de conferencias que atiende a visitantes chinos, esta sesión informativa es para usted. WeChat tiene 1380 millones de usuarios activos mensuales, según los datos de Tencent de 2024. La gran mayoría se encuentra en China, pero la plataforma también tiene una presencia internacional significativa: cuatro millones de usuarios en los Estados Unidos, 12 millones en Malasia y un número creciente en el sudeste asiático, Europa y Oriente Medio. 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 tenga una dirección de correo electrónico local configurada en ese dispositivo. Es casi seguro que tiene WeChat. Por lo tanto, la cuestión no es si debe ofrecer el inicio de sesión con WeChat, sino cómo configurarlo correctamente, de forma segura y de manera que genere datos de primera mano que realmente pueda utilizar. Eso es lo que vamos a cubrir hoy. Repasaremos el flujo de OAuth 2.0, los dos registros de plataforma que necesita, la decisión sobre el 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. --- TÉCNICA AL DETALLE (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 está alojada en un servidor de portal, ya sea local o en la nube. Al añadir el OAuth de WeChat, está introduciendo 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 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 endpoint de autorización de WeChat, pasando su App ID, 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, ve una pantalla de consentimiento. Si utiliza el navegador integrado de WeChat, la experiencia puede ser silenciosa con el alcance snsapi_base, sin 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, pasando su App ID, App Secret, el código y el tipo de concesión de código de autorización. 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 plataforma abierta (WeChat Open Platform) gestiona aplicaciones de sitios web y aplicaciones móviles. La plataforma de cuentas oficiales (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 invitados dentro del navegador integrado de WeChat, necesita una cuenta de servicio (Service Account) en la plataforma de cuentas oficiales. Una cuenta de suscripción (Subscription Account) no funcionará: no tiene permisos de autorización de páginas web de OAuth. Una cuenta de servicio sí los tiene y admite 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 (Chrome en Android, Safari en iOS), necesita una aplicación web (Website Application) registrada en la plataforma abierta. 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 ambas. Un invitado en la WiFi de un hotel puede abrir el portal en Chrome, ver un código QR, escanearlo con WeChat y autenticarse. O puede seguir un enlace en el propio WeChat, aterrizar en el navegador integrado y autenticarse silenciosamente con snsapi_base. Hablemos de la selección del alcance (scope), porque este es un verdadero punto de decisión. snsapi_base devuelve solo el OpenID, un identificador único para ese usuario dentro de su cuenta oficial (Official Account). No requiere solicitud de consentimiento del usuario. La autenticación es invisible para el usuario. Esto es ideal para invitados recurrentes de los que ya tiene un perfil, o para establecimientos donde desea cero fricciones. 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ícito. La mayoría de los usuarios la aceptan, pero hay fricción. La elección correcta depende de su caso de uso. Para el registro de un invitado por primera vez en el que desea crear un perfil, utilice snsapi_userinfo y combínelo con una capa de consentimiento que cumpla con GDPR en la página de su portal. Para un invitado recurrente que ya ha dado su consentimiento y cuyo perfil ya posee, utilice snsapi_base para una reautenticación silenciosa. Ahora, el lado 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 Authorization, definido en RFC 3576, y la omisión de dirección MAC (MAC address bypass). Con RADIUS CoA, el servidor de su portal envía una solicitud 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 y la mayoría de los controladores de nivel empresarial. Con MAC bypass, el servidor del portal registra la dirección MAC del dispositivo como un cliente autorizado y el controlador lo permite. MAC bypass es más sencillo de implementar pero menos seguro, porque las direcciones MAC se pueden suparentar. La plataforma 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, ya sea Cisco Meraki, HPE Aruba, Ruckus, Juniper Mist, Ubiquiti UniFi, Cambium, Extreme o Fortinet. El operador del establecimiento no necesita gestionar esa traducción manualmente. --- RECOMENDACIONES DE IMPLEMENTACIÓN Y ERRORES COMUNES (aproximadamente 2 minutos) Permítame indicarle las cinco cosas que hacen que fallen 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 contrastándola con el dominio autorizado que registró en la plataforma. Si el servidor de su portal utiliza un subdominio diferente, una ruta diferente o HTTP en lugar de HTTPS, el flujo OAuth falla con el error 40029 (código no válido). Registre cada variante de dominio que utilice, incluidos los entornos de prueba (staging). Segundo: el AppSecret en el lado del cliente. Su AppSecret nunca debe aparecer en el JavaScript del lado del cliente. Pertenece a su servidor. Si se expone, cualquiera puede suplantar su aplicación y llamar a las API de WeChat en su nombre. Tercero: la falta de protección CSRF. El parámetro state en la solicitud OAuth existe específicamente para evitar la falsificación de solicitudes en sitios cruzados (CSRF). Genere un valor de estado aleatorio criptográficamente, almacénelo en la sesión del usuario y valídelo cuando WeChat redirija de nuevo. Si omite esto, tendrá una vulnerabilidad real. Cuarto: la brecha de detección del navegador integrado. El navegador integrado de WeChat establece una cadena de agente de usuario específica que contiene MicroMessenger. Si su portal no detecta esto y ofrece el flujo OAuth correcto, los usuarios tendrán una experiencia rota o un error. Quinto: la alineación con GDPR y PIPL. Si atiende a visitantes europeos, se aplica GDPR. Si atiende a visitantes chinos, se aplica la Ley de Protección de Información Personal de China (PIPL). Ambas requieren una base jurídica para el tratamiento, una limitación clara de la finalidad y la minimización de datos. snsapi_base es más fácil de justificar bajo los principios de minimización de datos que snsapi_userinfo. Recopile lo que recopile, documente su base jurídica y su período de retención. --- PREGUNTAS Y RESPUESTAS RÁPIDAS (aproximadamente 1 minuto) ¿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. ¿Funciona el OAuth de WeChat en iOS? Sí. 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 WeChat gestiona la autenticación. ¿Qué ocurre si la API de WeChat no está disponible? Implemente una alternativa. 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. ¿Puedo utilizar el OpenID como identificador de cliente persistente? Dentro de su cuenta oficial (Official Account), sí. Para la resolución de identidad entre cuentas en múltiples propiedades, utilice el UnionID en su lugar. --- RESUMEN Y PRÓXIMOS PASOS (aproximadamente 1 minuto) Para resumir. La autenticación OAuth de WeChat para Captive Portals es un ejercicio de registro en dos plataformas, una decisión de alcance (scope), una integración de aplicación 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 con cero fricciones de contraseña. Los pasos prácticos: determine si sus visitantes encuentran el portal dentro del navegador integrado de WeChat o en un navegador móvil estándar. Decida el alcance (scope): snsapi_base para invitados recurrentes, snsapi_userinfo para el registro por primera vez con consentimiento. Confirme que el hardware de su red es compatible con RADIUS CoA. Revise su aviso de privacidad frente a GDPR y PIPL. 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 gestiona Purple el OAuth de WeChat como parte de una plataforma más amplia de analítica y WiFi para invitados (Guest WiFi) —en 80 000 establecimientos y 440 millones de inicios de sesión en 2024—, visite purple.ai o hable con su equipo de cuentas. Gracias por su atención. --- FIN DEL GUION

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%的在线率。对于 零售酒店餐饮 行业的场所,微信身份验证将网络从成本中心转变为可靠的第一方数据采集渠道。

Definiciones clave

Captive Portal

Una página web que intercepta el tráfico HTTP de un dispositivo no autenticado y requiere que el usuario interactúe con ella antes de que se le conceda acceso a la red.

La interfaz principal donde se presenta al invitado la opción de inicio de sesión de WeChat. El servidor del portal aloja esta página y orquesta el flujo OAuth.

OAuth 2.0

Un protocolo de autorización estándar del sector (RFC 6749) que permite a una aplicación de terceros obtener acceso limitado a un servicio HTTP en nombre de un usuario.

El protocolo subyacente que utiliza WeChat para pasar tokens de autenticación al servidor del portal sin exponer las credenciales del usuario. El mismo protocolo utilizado por Microsoft Entra ID, Okta y Google Workspace.

OpenID

Un identificador alfanumérico único asignado a un usuario de WeChat específico para una cuenta oficial (Official Account) concreta.

Utilizado como clave principal para identificar a los invitados recurrentes en la base de datos de analítica de WiFi. Cambia por cuenta oficial (Official Account); utilice UnionID para el reconocimiento entre diferentes propiedades.

UnionID

Un identificador único de WeChat que representa a un usuario en todas las cuentas oficiales (Official Accounts) y aplicaciones vinculadas a la misma cuenta de la plataforma abierta (Open Platform).

Esencial para grupos hoteleros, cadenas de tiendas y operadores de estadios con múltiples establecimientos que necesitan reconocer al mismo invitado en todo su patrimonio.

RADIUS CoA (Change of Authorization)

Una extensión del protocolo RADIUS (RFC 3576) que permite a un servidor RADIUS cambiar dinámicamente los atributos de autorización de una sesión activa.

El método seguro utilizado para mover el dispositivo de un invitado de una VLAN de preautenticación aislada a la VLAN de internet activa tras un inicio de sesión correcto en WeChat. Compatible con Cisco Meraki, HPE Aruba, Ruckus, Juniper Mist, Ubiquiti UniFi, Cambium, Extreme y Fortinet.

snsapi_base

Un alcance (scope) OAuth de WeChat que devuelve únicamente el OpenID del usuario y no requiere ninguna solicitud de consentimiento por parte del usuario.

El alcance (scope) recomendado para la reautenticación de invitados recurrentes. Más fácil de justificar bajo los principios de minimización de datos de GDPR y PIPL.

snsapi_userinfo

Un alcance (scope) OAuth de WeChat que devuelve el OpenID, el apodo, el avatar, el género y la ciudad del usuario, y requiere una pantalla de consentimiento explícito.

Utilizado para el registro de invitados por primera vez cuando se requieren datos demográficos para analítica. Requiere una base jurídica documentada bajo GDPR y PIPL.

PIPL (Personal Information Protection Law)

La legislación integral de privacidad de datos de China, en vigor desde noviembre de 2021, que regula el tratamiento de la información personal de personas físicas ubicadas en China.

Se aplica cuando los establecimientos procesan datos de ciudadanos chinos a través de OAuth de WeChat. Requiere un consentimiento claro, limitación de la finalidad, minimización de datos y un mecanismo de eliminación.

AppSecret

Una clave criptográfica confidencial emitida por WeChat durante el registro de la aplicación, utilizada para autenticar las llamadas a la API desde el servidor del portal.

Debe almacenarse exclusivamente en el lado del servidor. Su exposición en JavaScript del lado del cliente permite a los atacantes suplantar la aplicación y realizar llamadas maliciosas a las API de WeChat.

Ejemplos prácticos

Un hotel de lujo de 400 habitaciones en Londres tiene una tasa de abandono del portal del 60 % entre los huéspedes de China continental. El portal actual requiere verificación por correo electrónico y SMS. El director de TI necesita implementar la autenticación de WeChat manteniendo el cumplimiento de GDPR y la seguridad de la red.

Paso 1: Registrar una cuenta de servicio (Service Account) en la plataforma de cuentas oficiales de WeChat (mp.weixin.qq.com) y una aplicación web en la plataforma abierta de WeChat (open.weixin.qq.com). Paso 2: Configurar el portal para detectar la cadena de agente de usuario de MicroMessenger. Si se detecta, activar el flujo OAuth snsapi_base para una autenticación silenciosa. Si no se detecta, presentar el flujo de código QR. Paso 3: Añadir un aviso de privacidad que cumpla con GDPR y una casilla de verificación de consentimiento en la página del portal antes de que se active el botón de inicio de sesión de WeChat. El aviso debe indicar: datos recopilados (solo OpenID), finalidad (acceso a WiFi para invitados y reconocimiento de visitas recurrentes) y período de retención. Paso 4: Tras el intercambio correcto de tokens OAuth, el servidor del portal emite una solicitud RADIUS CoA al controlador Cisco Meraki, moviendo el dispositivo del invitado de la VLAN de preautenticación a la VLAN de invitados segmentada. Paso 5: Almacenar el OpenID asociado a la dirección MAC del dispositivo en la base de datos de invitados. En visitas posteriores, el OpenID recurrente activará la autenticación silenciosa.

Comentario del examinador: Este enfoque aborda correctamente tanto los requisitos técnicos como los de cumplimiento. El uso de snsapi_base se alinea con los principios de minimización de datos de GDPR, reduciendo el riesgo legal y eliminando al mismo tiempo el punto de fallo de la verificación por SMS. RADIUS CoA garantiza una segmentación de red segura y automatizada. La casilla de verificación de consentimiento cumple con el requisito de GDPR de contar con una base jurídica documentada. La decisión clave es elegir snsapi_base en lugar de snsapi_userinfo: el hotel no necesita datos demográficos para este caso de uso, por lo que recopilarlos introduciría obligaciones de cumplimiento innecesarias.

Un centro comercial quiere capturar datos de género y ciudad de los compradores chinos a través de la WiFi para invitados para introducirlos en su plataforma de analítica. Actualmente utilizan MAC Authentication Bypass para su portal existente que se ejecuta en hardware HPE Aruba.

Paso 1: Registrar una cuenta de servicio (Service Account) en la plataforma de cuentas oficiales de WeChat. Paso 2: Configurar el portal para utilizar el alcance (scope) snsapi_userinfo para recuperar el género y la ciudad. Paso 3: Añadir una pantalla de consentimiento clara que explique el intercambio de valor: WiFi gratuito a cambio del acceso a los datos del perfil. El consentimiento debe ser explícito y detallado tanto bajo GDPR como bajo PIPL. Paso 4: Tras la autenticación, el servidor del portal registra la dirección MAC del dispositivo en la base de datos RADIUS. El controlador HPE Aruba permite el acceso a través de MAB. Paso 5: Documentar la base jurídica (consentimiento), la finalidad (analítica del establecimiento y marketing) y el período de retención (24 meses) en un registro de tratamiento de datos. Proporcionar un mecanismo de eliminación de datos.

Comentario del examinador: El alcance snsapi_userinfo recupera correctamente los datos demográficos requeridos. Sin embargo, depender de MAB introduce un riesgo operativo significativo: iOS 14+ y Android 10+ aleatorizan las direcciones MAC por defecto, lo que significa que los invitados perderán su sesión autenticada al volver a conectarse y se verán obligados a volver a autenticarse. El centro comercial debería planificar la migración a RADIUS CoA en HPE Aruba para resolver esto. La documentación de cumplimiento de PIPL no es opcional: es un requisito legal para procesar datos de ciudadanos chinos, independientemente de dónde se encuentre el establecimiento.

Preguntas de práctica

Q1. Está implementando un Captive Portal en un estadio. Desea que los abonados de temporada recurrentes que se hayan autenticado previamente se conecten automáticamente sin ver una pantalla de inicio de sesión en visitas posteriores. ¿Qué alcance (scope) OAuth de WeChat debería implementar para el flujo de reautenticación y por qué?

Sugerencia: Considere qué alcance (scope) permite la autenticación silenciosa sin solicitar el consentimiento del usuario en cada visita.

Ver respuesta modelo

Utilice snsapi_base. Este alcance devuelve solo el OpenID del usuario y no requiere solicitud de consentimiento, lo que permite una reautenticación silenciosa. En la primera visita, almacena el OpenID en el perfil del aficionado. En visitas posteriores, el portal detecta el OpenID recurrente a través de snsapi_base, confirma la coincidencia y emite un RADIUS CoA para conceder el acceso, todo ello sin que el aficionado vea una pantalla de inicio de sesión. Esto también se alinea con los principios de minimización de datos de GDPR, ya que no está recopilando datos adicionales más allá de lo necesario para la función de autenticación.

Q2. Durante las pruebas, su portal se redirige correctamente a WeChat, el usuario concede el consentimiento y WeChat redirige de nuevo a su portal. Sin embargo, los registros del servidor del portal muestran el error de OAuth 40029 (código no válido). ¿Cuál es el error de configuración más probable y cómo lo resuelve?

Sugerencia: WeChat valida estrictamente el destino al que envía el código de autorización contrastándolo con una lista registrada.

Ver respuesta modelo

La causa más probable es una discrepancia en la URI de redirección. WeChat valida la URI de redirección en la solicitud OAuth contrastándola con el dominio autorizado registrado en la plataforma. Si el servidor del portal utiliza un subdominio diferente, una ruta diferente o HTTP en lugar de HTTPS, el intercambio de códigos falla con el error 40029. Resolución: inicie sesión en la plataforma de desarrolladores de WeChat, navegue a la configuración de su cuenta de servicio (Service Account) o aplicación web (Website Application) y añada cada variante de URI de redirección que utilice, incluidos los subdominios de prueba (staging), diferentes rutas y versiones HTTPS. Asegúrese de que el parámetro redirect_uri en su solicitud OAuth coincida exactamente con una de las URI registradas, incluida la codificación URL.

Q3. Un responsable de TI propone integrar el AppSecret de WeChat en el JavaScript del front-end del Captive Portal para acelerar el proceso de intercambio de tokens directamente desde el navegador del cliente. ¿Por qué debe rechazar esta propuesta y cuál es la arquitectura correcta?

Sugerencia: Considere las implicaciones de seguridad de exponer claves criptográficas en código de acceso público.

Ver respuesta modelo

Rechace esta propuesta. El AppSecret es una clave criptográfica confidencial. Integrarlo en el JavaScript del lado del cliente lo expone a cualquiera que vea el código fuente de la página o intercepte el tráfico de red. Un atacante podría extraer el AppSecret y suplantar la aplicación, llamando a las API de WeChat en nombre del establecimiento, accediendo a los datos de los usuarios y comprometiendo potencialmente toda la cuenta oficial (Official Account). La arquitectura correcta: la página del portal del lado del cliente recibe el código de autorización de WeChat y lo reenvía al servidor del portal a través de una llamada a la API del lado del servidor. El servidor del portal almacena el AppSecret en una variable de entorno segura y realiza el intercambio de tokens con la API de WeChat. El AppSecret nunca sale del servidor.

Q4. Un grupo hotelero con 15 propiedades en toda Europa quiere crear un perfil de invitado unificado que reconozca cuándo el mismo huésped chino se aloja en diferentes propiedades. Cada propiedad tiene su propia cuenta oficial (Official Account) de WeChat. ¿Qué identificador de WeChat deberían utilizar y qué configuración se requiere?

Sugerencia: El OpenID es específico de cada cuenta. Existe un identificador diferente diseñado para el reconocimiento entre cuentas.

Ver respuesta modelo

Utilice el UnionID. El OpenID cambia por cuenta oficial (Official Account), por lo que el mismo invitado tendrá 15 OpenID diferentes en 15 cuentas. El UnionID es un identificador estable que representa a un usuario en todas las cuentas oficiales (Official Accounts) y aplicaciones vinculadas a la misma cuenta de la plataforma abierta (Open Platform). Configuración requerida: vincular las 15 cuentas oficiales (Official Accounts) a una única cuenta de la plataforma abierta (Open Platform) de WeChat. Una vez vinculadas, el UnionID se devuelve en la respuesta OAuth cuando el usuario ha autorizado al menos una de las cuentas vinculadas. Utilice el UnionID como clave principal en el CRM de invitados para crear perfiles entre propiedades y reconocer a los invitados recurrentes independientemente de la propiedad que visiten.

Continúe leyendo esta serie

Diseño de Captive Portals B2B: Captura de nombres registrados y datos de la empresa

Esta guía proporciona a los directores de TI y operadores de recintos un marco técnico independiente del proveedor para diseñar Captive Portals B2B. Detalla cómo estructurar los campos de registro para capturar el nombre registrado y los datos de la empresa, garantizando altas tasas de finalización a la vez que se mantiene el cumplimiento del GDPR y se genera inteligencia a nivel de cuenta.

Leer la guía →

Arquitectura de Captive Portal: seguridad, redirección y mejores prácticas

Una referencia técnica definitiva sobre la arquitectura de Captive Portal empresarial. Esta guía analiza el aislamiento de red, la redirección de DNS, la autenticación RADIUS y el cumplimiento de seguridad para líderes de TI que implementan redes WiFi de invitados seguras y ricas en datos.

Leer la guía →

Optimización de Captive Portals B2B: Captura de Nombres de Empresa y Datos Profesionales

Esta guía explica cómo los responsables de TI, arquitectos de red y directores de operaciones de instalaciones pueden configurar Captive Portals B2B para capturar datos profesionales —nombres de empresas, cargos y direcciones de correo electrónico corporativas— en el momento de iniciar sesión en el WiFi. Cubre toda la arquitectura técnica, desde el aislamiento de VLAN y la autenticación RADIUS hasta la integración de CRM con Salesforce y HubSpot, con cumplimiento integrado de GDPR y CCPA. Las instalaciones que implementan esto correctamente convierten su red WiFi de invitados en un motor de datos de origen y en un sistema automatizado de generación de leads.

Leer la guía →