Pular para o conteúdo principal

Integrating WeChat Authentication with Guest WiFi Captive Portals

Este guia explica como integrar a autenticação WeChat OAuth 2.0 em Captive Portals de WiFi para visitantes de empresas. O material abrange os requisitos de registro em duas plataformas, a seleção de escopo para captura de dados proprietários (first-party), a aplicação de regras de rede via RADIUS Change of Authorization e a conformidade com o GDPR e a PIPL da China. Operadores de locais nos setores de hotelaria, varejo e eventos encontrarão etapas de implementação concretas, estudos de caso reais e orientações de segurança para implantar o login via WeChat no WiFi para visitantes em escala.

📖 8 min de leitura📝 1,966 palavras🔧 2 exemplos práticos4 questões práticas📚 9 definições principais

Ouça este guia

Ver transcrição do podcast
COMO CONFIGURAR A AUTENTICAÇÃO OAUTH DO WECHAT PARA CAPTIVE PORTALS Um Informativo Técnico da Purple - Aproximadamente 10 Minutos --- INTRODUÇÃO E CONTEXTO (aproximadamente 1 minuto) Boas-vindas. Se você é responsável pelo Wi-Fi de visitantes em um hotel, rede de varejo, estádio ou centro de convenções que atende visitantes chineses, este informativo é para você. O WeChat possui 1,38 bilhão de usuários ativos mensais, de acordo com os dados de 2024 da Tencent. A grande maioria está na China, mas a plataforma também possui uma presença internacional expressiva - quatro milhões de usuários nos Estados Unidos, 12 milhões na Malásia e números crescentes em todo o Sudeste Asiático, Europa e Oriente Médio. Quando um visitante chinês se conecta ao seu Wi-Fi e vê uma página de login apenas com e-mail, Facebook ou um código de voucher, ele enfrenta uma barreira imediata. Ele pode não ter um endereço de e-mail local configurado naquele dispositivo. Ele quase certamente possui o WeChat. Portanto, a questão não é se você deve oferecer o login do WeChat - é como configurá-lo de forma correta, segura e de uma maneira que gere dados proprietários (first-party data) que você possa realmente usar. É isso que vamos abordar hoje. Vamos percorrer o fluxo do OAuth 2.0, os dois registros de plataforma necessários, a decisão de escopo (scope) que determina quais dados você coleta, o mecanismo de imposição do lado da rede e as considerações de conformidade que importam em 2026. --- APROFUNDAMENTO TÉCNICO (aproximadamente 5 minutos) Vamos começar com a arquitetura. Um Captive Portal intercepta o tráfego HTTP de um dispositivo não autenticado e o redireciona para uma página de login. Essa página de login é hospedada em um servidor de portal - seja local (on-premises) ou na nuvem. Ao adicionar o WeChat OAuth, você está inserindo um provedor de identidade de terceiros nesse fluxo. Aqui está a sequência. O visitante se conecta ao seu SSID. O ponto de acesso ou controlador sem fio detecta que o dispositivo não possui uma sessão autenticada e redireciona todo o tráfego HTTP para a URL do seu Captive Portal. A página do portal é carregada e apresenta as opções de login - incluindo o WeChat. O visitante toca no login do WeChat. O servidor do seu portal redireciona o navegador para o endpoint de autorização do WeChat, transmitindo o seu App ID, a URI de redirecionamento, o tipo de resposta (response type) do código e o escopo (scope). O WeChat gerencia a autenticação inteiramente em seus próprios servidores. Se o visitante já estiver logado no WeChat em seu navegador, ele verá uma tela de consentimento. Se estiver usando o navegador interno do aplicativo WeChat, a experiência pode ser silenciosa com o escopo base snsapi - sem nenhuma solicitação de consentimento. O WeChat então redireciona de volta para a URI de redirecionamento do seu portal com um código de autorização temporário. O servidor do seu portal troca esse código por um token de acesso, transmitindo seu App ID, App Secret, o código e o tipo de concessão (grant type) do código de autorização. O WeChat retorna um token de acesso, um token de atualização (refresh token), o Open ID do usuário e o escopo concedido. Se você solicitou o escopo snsapi userinfo, poderá fazer uma segunda chamada de API para recuperar o apelido, avatar, gênero e cidade do usuário. Agora, os dois registros de plataforma. É aqui que a maioria das implementações dá errado. O WeChat possui duas plataformas de desenvolvedor distintas. A WeChat Open Platform gerencia aplicativos de sites e aplicativos móveis. A WeChat Official Accounts Platform gerencia contas públicas - o que a maioria dos locais realmente precisa. Para um Captive Portal que atende usuários dentro do navegador interno do WeChat, você precisa de uma Service Account na Official Accounts Platform. Uma Subscription Account não funcionará - ela não possui permissões de autorização de página web via OAuth. Uma Service Account possui, e suporta os escopos snsapi base e snsapi userinfo. Para um Captive Portal acessado a partir de um navegador móvel padrão fora do WeChat - Chrome no Android, Safari no iOS - você precisa de um Website Application registrado na Open Platform. Isso utiliza o escopo snsapi login e apresenta um código QR que o usuário escaneia com o aplicativo WeChat. Na prática, a maioria das implantações em locais físicos utiliza ambos. Um visitante na rede WiFi de um hotel pode abrir o portal no Chrome, ver um código QR, escaneá-lo com o WeChat e se autenticar. Ou pode seguir um link dentro do próprio WeChat, cair no navegador interno e se autenticar silenciosamente com o snsapi base. Vamos falar sobre a seleção de escopo, pois este é um ponto de decisão real. O snsapi base retorna apenas o Open ID - um identificador exclusivo para aquele usuário dentro da sua Official Account. Ele não exige nenhuma solicitação de consentimento do usuário. A autenticação é invisível para o usuário. Isso é ideal para visitantes que retornam e que você já traçou o perfil, ou para locais onde você deseja atrito zero. O snsapi userinfo retorna o Open ID mais o apelido do WeChat do usuário, foto de perfil, gênero, configuração de idioma e cidade. Ele exige uma tela de consentimento explícita. A maioria dos usuários aceita, mas há atrito. A escolha certa depende do seu caso de uso. Para o registro de um visitante de primeira viagem onde você deseja criar um perfil, use snsapi userinfo e combine-o com uma camada de consentimento em conformidade com a GDPR na sua página de portal. Para um visitante que retorna, que já deu consentimento e cujo perfil você já possui, use snsapi base para uma reautenticação silenciosa. Agora, o lado da aplicação na rede. Obter um token OAuth comprova a identidade, mas não abre a rede automaticamente. Você precisa de um mecanismo para traduzir uma autenticação bem-sucedida em acesso à rede. As duas abordagens padrão são o RADIUS Change of Authorisation, definido na RFC 3576, e o bypass de endereço MAC. Com o RADIUS CoA, o servidor do seu portal envia uma solicitação de CoA para o controlador de rede após o OAuth bem-sucedido, e o controlador move o dispositivo da VLAN não autenticada para a VLAN de visitantes. Isso funciona com Cisco Meraki, HPE Aruba, Ruckus, Juniper Mist e a maioria dos controladores de classe empresarial. Com o bypass de MAC, o servidor do portal registra o endereço MAC do dispositivo como um cliente autorizado, e o controlador o permite. O bypass de MAC é mais simples de implementar, mas menos seguro, porque os endereços MAC podem ser falsificados. A plataforma de Guest WiFi da Purple lida com ambos os mecanismos. Após a conclusão do WeChat OAuth, a sobreposição em nuvem da Purple envia o sinal apropriado para o hardware subjacente - seja Cisco Meraki, HPE Aruba, Ruckus, Juniper Mist, Ubiquiti UniFi, Cambium, Extreme ou Fortinet. O operador do local não precisa gerenciar essa tradução manualmente. --- RECOMENDAÇÕES DE IMPLEMENTAÇÃO E ERROS COMUNS (aproximadamente 2 minutos) Deixe-me apresentar os cinco motivos que fazem com que as implementações de Captive Portal com WeChat OAuth falhem. Primeiro: incompatibilidade da URI de redirecionamento. O WeChat valida a URI de redirecionamento em relação ao domínio autorizado que você registrou na plataforma. Se o seu servidor de portal usar um subdomínio diferente, um caminho diferente ou HTTP em vez de HTTPS, o fluxo de OAuth falhará com o erro 40029 - código inválido. Registre todas as variantes de domínio que você utiliza, incluindo ambientes de homologação. Segundo: a App Secret no lado do cliente. Sua App Secret nunca deve aparecer no JavaScript do lado do cliente. Ela pertence ao seu servidor. Se for exposta, qualquer pessoa poderá se passar pelo seu aplicativo e chamar as APIs do WeChat em seu nome. Terceiro: falta de proteção CSRF. O parâmetro de estado na solicitação OAuth existe especificamente para evitar falsificação de solicitação entre sites (cross-site request forgery). Gere um valor de estado criptograficamente aleatório, armazene-o na sessão do usuário e valide-o quando o WeChat redirecionar de volta. Ignorar isso cria uma vulnerabilidade real. Quarto: falha na detecção do navegador integrado. O navegador integrado do WeChat define uma string de user agent específica contendo MicroMessenger. Se o seu portal não detectar isso e fornecer o fluxo de OAuth correto, os usuários terão uma experiência instável ou um erro. Quinto: alinhamento com GDPR e PIPL. Se você atende a visitantes europeus, a GDPR se aplica. Se você atende a visitantes chineses, a Lei de Proteção de Informações Pessoais da China - PIPL - se aplica. Ambas exigem uma base legal para o processamento, limitação clara de finalidade e minimização de dados. O snsapi base é mais fácil de justificar sob os princípios de minimização de dados do que o snsapi userinfo. Independentemente do que você coletar, documente sua base legal e seu período de retenção. --- PERGUNTAS E RESPOSTAS RÁPIDAS (aproximadamente 1 minuto) Posso usar o login do WeChat em um portal que também oferece login por e-mail e SMS? Sim. A maioria das plataformas de portal corporativo, incluindo a Purple, suporta múltiplos métodos de autenticação na mesma página de portal. O WeChat OAuth funciona no iOS? Sim. O login do WeChat no Safari no iOS funciona por meio do fluxo de código QR ou do fluxo de redirecionamento. O próprio aplicativo WeChat lida com a autenticação. O que acontece se a API do WeChat estiver indisponível? Implemente uma alternativa. Se a chamada da API do WeChat expirar ou retornar um erro, redirecione o usuário para um método de login alternativo. Posso usar o Open ID como um identificador de cliente persistente? Dentro de sua Conta Oficial, sim. Para resolução de identidade cruzada entre múltiplas propriedades, use o UnionID em seu lugar. --- RESUMO E PRÓXIMOS PASSOS (aproximadamente 1 minuto) Para resumir. A autenticação WeChat OAuth para Captive Portals é um exercício de registro em duas plataformas, uma decisão de escopo, uma integração de imposição de rede e uma revisão de conformidade. Acerte esses quatro pontos e você terá um método de login que atende a mais de um bilhão de visitantes em potencial com zero atrito de senha. Os próximos passos práticos: determine se seus visitantes encontram o portal dentro do navegador interno do WeChat ou em um navegador móvel padrão. Decida sobre o escopo - snsapi base para visitantes recorrentes, snsapi userinfo para registro de primeira viagem com consentimento. Confirme se o hardware da sua rede suporta RADIUS CoA. Revise seu aviso de privacidade em relação ao GDPR e ao PIPL. Teste a URI de redirecionamento, a validação do parâmetro de estado e a detecção do navegador interno antes de entrar no ar. Se você quiser ver como a Purple lida com o WeChat OAuth como parte de uma plataforma mais ampla de Guest WiFi e analytics - em 80.000 locais e 440 milhões de logins em 2024 - visite purple.ai ou fale com sua equipe de conta. Obrigado por ouvir. --- FIM DO ROTEIRO

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

Definições principais

Captive Portal

Uma página web que intercepta o tráfego HTTP de um dispositivo não autenticado e exige que o usuário interaja com ela antes que o acesso à rede seja concedido.

A interface principal onde a opção de login do WeChat é apresentada ao visitante. O servidor do portal hospeda esta página e orquestra o fluxo de OAuth.

OAuth 2.0

Um protocolo de autorização padrão de mercado (RFC 6749) que permite que um aplicativo de terceiros obtenha acesso limitado a um serviço HTTP em nome de um usuário.

O protocolo subjacente que o WeChat usa para passar tokens de autenticação para o servidor do portal sem expor as credenciais do usuário. O mesmo protocolo usado pelo Microsoft Entra ID, Okta e Google Workspace.

OpenID

Um identificador alfanumérico exclusivo atribuído a um usuário específico do WeChat para uma Conta Oficial específica.

Usado como a chave primária para identificar visitantes que retornam no banco de dados de analytics de WiFi. Muda por Conta Oficial - use UnionID para reconhecimento entre diferentes propriedades.

UnionID

Um identificador único do WeChat que representa um usuário em todas as Contas Oficiais e aplicativos vinculados à mesma conta da Open Platform.

Essencial para grupos hoteleiros, redes de varejo e operadores de estádios com múltiplos locais que precisam reconhecer o mesmo visitante em todo o seu patrimônio.

RADIUS CoA (Change of Authorization)

Uma extensão para o protocolo RADIUS (RFC 3576) que permite que um servidor RADIUS altere dinamicamente os atributos de autorização de uma sessão ativa.

O método seguro usado para mover o dispositivo de um visitante de uma VLAN de pré-autenticação isolada para a VLAN de internet ativa após o login bem-sucedido no WeChat. Suportado por Cisco Meraki, HPE Aruba, Ruckus, Juniper Mist, Ubiquiti UniFi, Cambium, Extreme e Fortinet.

snsapi_base

Um escopo do WeChat OAuth que retorna apenas o OpenID do usuário e não requer nenhuma solicitação de consentimento do usuário.

O escopo recomendado para a reautenticação de visitantes que retornam. Mais fácil de justificar sob os princípios de minimização de dados do GDPR e da PIPL.

snsapi_userinfo

Um escopo do WeChat OAuth que retorna o OpenID, apelido, avatar, gênero e cidade do usuário, e exige uma tela de consentimento explícito.

Usado para o registro de visitantes pela primeira vez, onde dados demográficos são necessários para analytics. Requer base legal documentada sob o GDPR e a PIPL.

PIPL (Personal Information Protection Law)

A legislação abrangente de privacidade de dados da China, em vigor desde novembro de 2021, que regulamenta o processamento de informações pessoais de pessoas físicas localizadas na China.

Aplica-se quando os estabelecimentos processam dados de cidadãos chineses via WeChat OAuth. Requer consentimento claro, limitação de finalidade, minimização de dados e um mecanismo de exclusão.

AppSecret

Uma chave criptográfica confidencial emitida pelo WeChat durante o registro do aplicativo, usada para autenticar chamadas de API do servidor do portal.

Deve ser armazenado exclusivamente no lado do servidor. A exposição no JavaScript do lado do cliente permite que invasores se passem pelo aplicativo e façam chamadas de APIs do WeChat de forma maliciosa.

Exemplos práticos

Um hotel de luxo com 400 quartos em Londres tem uma taxa de abandono do portal de 60% entre hóspedes da China continental. O portal atual exige verificação por e-mail e SMS. O Diretor de TI precisa implementar a autenticação do WeChat, mantendo a conformidade com o GDPR e a segurança da rede.

Etapa 1: Registre uma Conta de Serviço na WeChat Official Accounts Platform (mp.weixin.qq.com) e um Aplicativo Web na WeChat Open Platform (open.weixin.qq.com). Etapa 2: Configure o portal para detectar a string de user agent do MicroMessenger. Se detectada, acione o fluxo OAuth snsapi_base para autenticação silenciosa. Se não for detectada, apresente o fluxo de código QR. Etapa 3: Adicione um aviso de privacidade em conformidade com o GDPR e uma caixa de seleção de consentimento à página do portal antes que o botão de login do WeChat fique ativo. O aviso deve indicar: dados coletados (apenas OpenID), finalidade (acesso ao WiFi de visitantes e reconhecimento de visitas de retorno) e período de retenção. Etapa 4: Após a troca bem-sucedida do token OAuth, o servidor do portal emite uma solicitação RADIUS CoA para o controlador Cisco Meraki, movendo o dispositivo do visitante da VLAN pré-autenticação para a VLAN segmentada de visitantes. Etapa 5: Armazene o OpenID associado ao endereço MAC do dispositivo no banco de dados de visitantes. Em visitas subsequentes, o OpenID de retorno aciona a reautenticação silenciosa.

Comentário do examinador: Esta abordagem aborda corretamente os requisitos técnicos e de conformidade. O uso do snsapi_base alinha-se aos princípios de minimização de dados do GDPR, reduzindo o risco jurídico e eliminando o ponto de falha da verificação por SMS. O RADIUS CoA garante uma segmentação de rede segura e automatizada. A caixa de seleção de consentimento atende ao requisito do GDPR de uma base jurídica documentada. A decisão crucial é o snsapi_base em detrimento do snsapi_userinfo — o hotel não precisa de dados demográficos para este caso de uso, portanto, coletá-los introduziria obrigações de conformidade desnecessárias.

Um shopping center deseja capturar dados de gênero e cidade de compradores chineses por meio do WiFi de visitantes para alimentar sua plataforma de análise. Atualmente, eles usam o MAC Authentication Bypass em seu portal existente executado em hardware HPE Aruba.

Etapa 1: Registre uma Conta de Serviço na WeChat Official Accounts Platform. Etapa 2: Configure o portal para usar o escopo snsapi_userinfo para recuperar gênero e cidade. Etapa 3: Adicione uma tela de consentimento clara explicando a troca de valor: WiFi gratuito em troca de acesso aos dados do perfil. O consentimento deve ser explícito e detalhado sob o GDPR e a PIPL. Etapa 4: Após a autenticação, o servidor do portal registra o endereço MAC do dispositivo no banco de dados RADIUS. O controlador HPE Aruba permite o acesso via MAB. Etapa 5: Documente a base jurídica (consentimento), a finalidade (análise do local e marketing) e o período de retenção (24 meses) em um registro de processamento de dados. Disponibilize um mecanismo de exclusão de dados.

Comentário do examinador: O escopo snsapi_userinfo recupera corretamente os dados demográficos necessários. No entanto, depender do MAB introduz um risco operacional significativo: o iOS 14+ e o Android 10+ randomizam os endereços MAC por padrão, o que significa que os visitantes perderão a sessão autenticada ao se reconectarem e serão forçados a se autenticar novamente. O shopping deve planejar a migração para o RADIUS CoA no HPE Aruba para resolver isso. A documentação de conformidade com a PIPL não é opcional — é um requisito legal para processar dados de cidadãos chineses, independentemente de onde o local esteja situado.

Questões práticas

Q1. Você está implantando um Captive Portal em um estádio. Você deseja que os portadores de ingressos de temporada que já se autenticaram anteriormente se conectem automaticamente, sem visualizar uma tela de login nas visitas subsequentes. Qual escopo de OAuth do WeChat você deve implementar para o fluxo de reautenticação e por quê?

Dica: Considere qual escopo permite a autenticação silenciosa sem solicitar o consentimento do usuário a cada visita.

Ver resposta modelo

Use snsapi_base. Este escopo retorna apenas o OpenID do usuário e não exige solicitação de consentimento, permitindo a reautenticação silenciosa. Na primeira visita, você armazena o OpenID no perfil do torcedor. Nas visitas subsequentes, o portal detecta o OpenID de retorno via snsapi_base, confirma a correspondência e emite um RADIUS CoA para liberar o acesso - tudo sem que o torcedor veja uma tela de login. Isso também se alinha aos princípios de minimização de dados do GDPR, pois você não está coletando dados adicionais além do necessário para a função de autenticação.

Q2. Durante os testes, seu portal redireciona com sucesso para o WeChat, o usuário concede o consentimento e o WeChat redireciona de volta para o seu portal. No entanto, os logs do servidor do portal mostram o erro de OAuth 40029 (código inválido). Qual é o erro de configuração mais provável e como você o resolve?

Dica: O WeChat valida rigorosamente o destino para o qual envia o código de autorização em relação a uma lista registrada.

Ver resposta modelo

A causa mais provável é uma divergência na URI de redirecionamento. O WeChat valida a URI de redirecionamento na solicitação de OAuth em relação ao domínio autorizado registrado na plataforma. Se o servidor do portal usar um subdomínio diferente, um caminho diferente ou HTTP em vez de HTTPS, a troca de código falhará com o erro 40029. Resolução: acesse a plataforma de desenvolvedores do WeChat, navegue até as configurações de Conta de Serviço ou Aplicativo Web e adicione todas as variantes de URI de redirecionamento que você utiliza - incluindo subdomínios de homologação, caminhos diferentes e versões HTTPS. Certifique-se de que o parâmetro redirect_uri em sua solicitação de OAuth corresponda exatamente a uma das URIs registradas, incluindo a codificação de URL.

Q3. Um gerente de TI propõe incorporar o AppSecret do WeChat no JavaScript de front-end do Captive Portal para acelerar o processo de troca de tokens diretamente do navegador do cliente. Por que você deve rejeitar esta proposta e qual é a arquitetura correta?

Dica: Considere as implicações de segurança de expor chaves criptográficas em códigos acessíveis publicamente.

Ver resposta modelo

Rejeite esta proposta. O AppSecret é uma chave criptográfica confidencial. Incorporá-lo no JavaScript do lado do cliente o expõe a qualquer pessoa que visualize o código-fonte da página ou intercepte o tráfego de rede. Um invasor pode extrair o AppSecret e se passar pelo aplicativo, chamando APIs do WeChat em nome do estabelecimento, acessando dados de usuários e potencialmente comprometendo toda a Conta Oficial. A arquitetura correta: a página do portal do lado do cliente recebe o código de autorização do WeChat e o encaminha para o servidor do portal por meio de uma chamada de API do lado do servidor. O servidor do portal mantém o AppSecret em uma variável de ambiente segura e realiza a troca de tokens com a API do WeChat. O AppSecret nunca sai do servidor.

Q4. Um grupo hoteleiro com 15 propriedades na Europa deseja criar um perfil de hóspede unificado que reconheça quando o mesmo hóspede chinês se hospeda em propriedades diferentes. Cada propriedade possui sua própria Conta Oficial do WeChat. Qual identificador do WeChat eles devem usar e qual configuração é necessária?

Dica: O OpenID é específico por conta. Existe um identificador diferente projetado para reconhecimento entre contas.

Ver resposta modelo

Use o UnionID. O OpenID muda por Conta Oficial, de modo que o mesmo hóspede terá 15 OpenIDs diferentes em 15 contas. O UnionID é um identificador estável que representa um usuário em todas as Contas Oficiais e aplicativos vinculados à mesma conta da Open Platform. Configuração necessária: vincule todas as 15 Contas Oficiais a uma única conta da Open Platform do WeChat. Uma vez vinculados, o UnionID é retornado na resposta do OAuth quando o usuário tiver autorizado pelo menos uma das contas vinculadas. Use o UnionID como a chave primária no CRM de hóspedes para criar perfis unificados entre propriedades e reconhecer hóspedes recorrentes, independentemente de qual propriedade eles visitem.

Continue a ler esta série

Projetando Captive Portals B2B: Coletando Nome Registrado e Dados da Empresa

Este guia fornece aos gerentes de TI e operadores de locais uma estrutura técnica neutra em relação a fornecedores para projetar Captive Portals B2B. Ele detalha como estruturar campos de registro para capturar dados de nome registrado e empresa, garantindo altas taxas de conclusão enquanto mantém a conformidade com o GDPR e constrói inteligência no nível da conta.

Ler o guia →

Arquitetura de Captive Portal: Segurança, Redirecionamento e Melhores Práticas

Uma referência técnica definitiva sobre a arquitetura de captive portal corporativo. Este guia detalha o isolamento de rede, redirecionamento de DNS, autenticação RADIUS e conformidade de segurança para líderes de TI que implantam redes WiFi de visitantes seguras e ricas em dados.

Ler o guia →

Otimizando Captive Portals B2B: Capturando Nomes de Empresas e Dados Profissionais

Este guia explica como gerentes de TI, arquitetos de rede e diretores de operações de locais podem configurar Captive Portals B2B para capturar dados profissionais - nomes de empresas, cargos e endereços de e-mail comercial - no momento do login no WiFi. Ele abrange toda a arquitetura técnica, desde o isolamento de VLAN e autenticação RADIUS até a integração de CRM com Salesforce e HubSpot, com conformidade com GDPR e CCPA integrada. Os locais que implantam isso corretamente transformam sua rede WiFi de convidados em um mecanismo de dados proprietários e em um sistema automatizado de geração de leads.

Ler o guia →