Pular para o conteúdo 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 leitura📝 2,051 palavras🔧 2 exemplos práticos4 questões práticas📚 10 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 WiFi de visitantes em um hotel, rede de varejo, estádio ou centro de convenções que atende a visitantes chineses, este informativo é para você. O WeChat conta com 1,41 bilhão de usuários ativos mensais em 2025, de acordo com os dados da própria Tencent. A grande maioria está na China, mas a plataforma também possui uma presença internacional significativa. A Malásia tem 12 milhões de usuários do WeChat. O Japão tem 5,5 milhões. A Coreia do Sul, 5 milhões. E os números estão crescendo em todo o Sudeste Asiático, no Oriente Médio e na Europa. Quando um visitante chinês se conecta ao seu WiFi 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 tem o WeChat. Portanto, a questão não é se você deve oferecer o login do WeChat. É como você o configura de forma correta, segura e de uma maneira que gere dados primários que você possa realmente utilizar. É isso que vamos abordar hoje. Vamos passar pelo fluxo do OAuth 2.0, os dois registros de plataforma que você precisa, a decisão de escopo que determina quais dados você coleta, o mecanismo de aplicaçã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 ou na nuvem. Quando você adiciona o OAuth do WeChat, 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 de rede 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, passando o seu AppID, a URI de redirecionamento, o tipo de resposta (code) e o escopo. O WeChat lida com 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 integrado do WeChat, a experiência pode ser silenciosa com o escopo básico snsapi, o que significa que não haverá 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 chamando a API do WeChat. O WeChat retorna um token de acesso, um token de atualização, o OpenID do usuário e o escopo concedido. Se você solicitou o escopo de informações do usuário snsapi, 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 falha. O WeChat possui duas plataformas de desenvolvedor distintas. A WeChat Open Platform gerencia aplicativos de site e aplicativos móveis. A WeChat Official Accounts Platform gerencia contas públicas, que é o que a maioria dos estabelecimentos realmente precisa. Para um Captive Portal que atende convidados 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 OAuth. Uma Service Account possui, e suporta tanto o escopo snsapi base quanto o snsapi userinfo. Para um Captive Portal acessado de um navegador móvel padrão fora do WeChat, como o Chrome no Android ou o 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 seu aplicativo WeChat. Na prática, a maioria das implantações em estabelecimentos utiliza ambos. Um hóspede em um hotel pode abrir o portal no Chrome, ver um código QR, escaneá-lo com o WeChat e se autenticar. Ou ele 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 escopo snsapi base retorna apenas o OpenID. Este é um identificador exclusivo para aquele usuário dentro da sua Official Account. Ele não requer nenhuma solicitação de consentimento do usuário. A autenticação é invisível para o usuário. Isso é ideal para hóspedes que retornam e que você já perfilou, ou para estabelecimentos onde você deseja atrito zero ao custo de zero novos dados. O escopo snsapi userinfo retorna o OpenID 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. O usuário vê uma solicitação perguntando se ele permite que sua Official Account acesse suas informações. A maioria dos usuários aceita, mas há atrito. A escolha certa depende do seu caso de uso. Para o registro de um hóspede de primeira viagem, onde você deseja construir um perfil, use o snsapi userinfo e combine-o com uma camada de consentimento em conformidade com a GDPR em sua página de portal. Para um hóspede que retorna, que já consentiu e cujo perfil você já possui, use o snsapi base para reautenticação silenciosa. Agora, o lado da aplicação de rede. Obter um token OAuth prova 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 desvio 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 convidados. Isso funciona com Cisco Meraki, HPE Aruba, Ruckus, Juniper Mist, Ubiquiti UniFi, Cambium, Extreme e Fortinet. 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, e os smartphones modernos usam cada vez mais a randomização de endereços MAC, o que quebra o mecanismo na reconexão. 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. 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 as cinco coisas que fazem as implementações de Captive Portal com WeChat OAuth falharem. Primeiro: a 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 OAuth falhará com o erro 40029, que significa código inválido. Registre todas as variantes de domínio que você usa, incluindo ambientes de homologação. Segundo: o AppSecret no lado do cliente. Seu AppSecret nunca deve aparecer no JavaScript do lado do cliente ou em um binário de aplicativo móvel. Ele pertence ao seu servidor. Se for exposto, 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. Pule isso e você terá uma vulnerabilidade real. Quarto: a lacuna de detecção do navegador integrado. O navegador integrado do WeChat define uma string de agente de usuário específica contendo MicroMessenger. Se o seu portal não detectar isso e fornecer o fluxo OAuth correto, os usuários terão uma experiência quebrada ou um erro. Quinto: alinhamento com GDPR e PIPL. Se você atende a visitantes europeus, a GDPR se aplica aos dados que você coleta via WeChat OAuth. Se você atende a visitantes chineses, a Lei de Proteção de Informações Pessoais da China, conhecida como PIPL, se aplica a como você processa os dados deles. Ambas exigem uma base legal para o processamento, limitação clara de finalidade e minimização de dados. O escopo base snsapi é 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) Pergunta: 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 do portal. O WeChat aparece como uma opção ao lado de outras. Pergunta: O WeChat OAuth funciona no iOS? Sim, mas com uma nuance. A estrutura de Transparência no Rastreamento de Aplicativos da Apple não afeta os fluxos OAuth do lado do servidor. 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. Question: What happens if WeChat's API is unavailable? Your portal should implement a fallback. If the WeChat API call times out or returns an error, redirect the user to an alternative login method. Do not leave them with a blank screen. Question: Can I use the OpenID as a persistent customer identifier? Within your Official Account, yes. The OpenID is stable for a given user and a given Official Account. If you have multiple Official Accounts, the same user will have different OpenIDs across them. For cross-account identity resolution, WeChat provides a UnionID, which requires your accounts to be linked on the Open Platform. SUMMARY AND NEXT STEPS (approximately 1 minute) To summarise. WeChat OAuth authentication for captive portals is a two-platform registration exercise, a scope decision, a network enforcement integration, and a compliance review. Get those four things right and you have a login method that serves over a billion potential visitors with zero password friction. The practical next steps are these. First, determine whether your visitors encounter the portal inside the WeChat in-app browser or in a standard mobile browser. That determines which platform registration you need. Second, decide on scope. Use snsapi base for returning guests, and snsapi userinfo for first-time registration with consent. Third, confirm your network hardware supports RADIUS CoA or configure MAC bypass as an alternative. Fourth, review your privacy notice and consent flow against GDPR and PIPL requirements. Fifth, test the redirect URI, the state parameter validation, and the in-app browser detection before you go live. If you want to see how Purple handles WeChat OAuth as part of a broader Guest WiFi and analytics platform, across 80,000 venues and 440 million logins in 2024, visit purple.ai or speak to your account team. Thanks for listening.

📚 Parte da nossa série 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.

Definições principais

Captive Portal

Um gateway de autenticação baseado na web que intercepta o tráfego HTTP de um dispositivo não autenticado e o redireciona para uma página de login antes de conceder acesso à rede.

O mecanismo pelo qual a autenticação de WiFi de visitantes é apresentada aos usuários. O WeChat OAuth é um dos vários métodos de autenticação que um Captive Portal pode oferecer.

OAuth 2.0

Um protocolo de autorização padrão da indústria que permite que um aplicativo de terceiros (o Captive Portal) obtenha acesso limitado a um serviço web (WeChat) em nome de um usuário, sem que o usuário compartilhe sua senha com terceiros.

A estrutura subjacente que torna o login do WeChat possível. O portal nunca vê as credenciais do WeChat do usuário; ele apenas recebe um token confirmando que o WeChat os autenticou.

RADIUS CoA

Change of Authorisation (Mudança de Autorização). Um mecanismo definido na RFC 3576 que permite a um servidor RADIUS modificar dinamicamente os atributos de autorização de sessão de um cliente de rede ativo, como alterar a atribuição de VLAN.

O mecanismo de aplicação de rede que traduz uma troca bem-sucedida do WeChat OAuth em acesso real à rede. Sem o CoA, o visitante se autentica, mas o controlador não sabe que deve liberar a rede.

OpenID

Um identificador exclusivo atribuído pelo WeChat a um usuário específico para uma Conta Oficial ou Aplicativo de Site específico. É estável entre as sessões, mas difere entre as contas.

A chave primária usada para identificar um visitante em seu banco de dados de analytics de WiFi. Use UnionID se você opera múltiplas Contas Oficiais e precisa de resolução de identidade entre contas.

snsapi_base

Um escopo do WeChat OAuth que permite autenticação silenciosa, retornando apenas o OpenID do usuário sem exibir uma solicitação de consentimento.

Use para visitantes recorrentes ou ambientes de alto rendimento onde a velocidade de conexão é a prioridade. Não retorna dados demográficos além do OpenID.

snsapi_userinfo

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

Use para o primeiro registro de visitantes para criar um perfil de dados próprio (first-party). Deve ser combinado com uma camada de consentimento em conformidade com a GDPR e a PIPL.

PIPL

Personal Information Protection Law (Lei de Proteção de Informações Pessoais). A legislação de privacidade de dados abrangente da China, em vigor desde novembro de 2021, que rege como os dados pessoais de cidadãos chineses devem ser coletados, processados e transferidos.

Aplica-se a qualquer local que colete dados de cidadãos chineses via WeChat OAuth, independentemente de onde o local esteja situado. Exige consentimento explícito, limitação de finalidade e minimização de dados.

AppSecret

Uma chave criptográfica confidencial emitida pelo WeChat que autentica seu aplicativo quando ele chama a API de troca de token do WeChat.

Deve ser armazenado apenas no lado do servidor. A exposição no código do lado do cliente permite que qualquer pessoa personifique seu aplicativo e faça chamadas de API não autorizadas para o WeChat.

VLAN

Virtual Local Area Network (Rede Local Virtual). Um segmento de rede lógico que isola o tráfego na camada de enlace de dados, permitindo que uma única rede física transporte múltiplos fluxos de tráfego isolados.

Usada em implantações de Captive Portal para separar dispositivos não autenticados (VLAN de jardim murado) de visitantes autenticados (VLAN de visitantes). O RADIUS CoA move um dispositivo entre VLANs após a autenticação bem-sucedida.

UnionID

Um identificador do WeChat que permanece consistente para um determinado usuário em todas as Contas Oficiais e Aplicativos de Site vinculados ao mesmo registro na Open Platform.

Essencial para redes de hotéis, grupos de varejo e operadores de múltiplos locais que precisam reconhecer o mesmo visitante em várias propriedades, cada uma com sua própria Conta Oficial.

Exemplos práticos

Um hotel de luxo de 200 quartos em Singapura utiliza controladores HPE Aruba e atende a um grande volume de viajantes de negócios chineses. Eles desejam coletar dados demográficos de hóspedes que estão acessando pela primeira vez e garantir que os hóspedes recorrentes se conectem automaticamente sem visualizar o portal novamente. Como eles devem configurar a integração do WeChat OAuth?

Passo 1: Registre uma Conta de Serviço na WeChat Official Accounts Platform (mp.weixin.qq.com) para gerenciar o acesso dos hóspedes ao portal dentro do navegador interno do WeChat. Registre um Aplicativo Web na WeChat Open Platform (open.weixin.qq.com) para hóspedes em navegadores móveis padrão.

Passo 2: Configure o Captive Portal para detectar a string de user agent do MicroMessenger. Forneça o fluxo OAuth do Official Accounts para usuários do navegador interno do aplicativo e o fluxo de código QR do Open Platform para usuários de navegadores padrão.

Passo 3: Para conexões de primeira viagem (sem OpenID existente no banco de dados), solicite o escopo snsapi_userinfo. Apresente uma tela de consentimento em conformidade com a PIPL antes do redirecionamento do OAuth. Armazene o OpenID, apelido, cidade e gênero retornados no banco de dados de perfis dos hóspedes.

Passo 4: Para hóspedes recorrentes (OpenID existente no banco de dados), solicite o escopo snsapi_base. Isso realiza a autenticação de forma silenciosa, sem exibição de avisos ao usuário.

Passo 5: Configure o controlador HPE Aruba para RADIUS CoA na porta UDP 3799. Após o OAuth bem-sucedido, o servidor do portal envia uma solicitação de CoA para promover o dispositivo da VLAN de walled garden para a VLAN de hóspedes.

Passo 6: Implemente o registro de endereço MAC em conjunto com o OpenID para gerenciar a detecção de hóspedes recorrentes. Observe que a randomização de MAC exige o OpenID como o identificador primário, e não o endereço MAC isolado.

Comentário do examinador: Esta abordagem separa corretamente os dois registros de plataforma de acordo com o contexto de acesso, utiliza a seleção de escopo para equilibrar a fricção com a coleta de dados e implementa RADIUS CoA para aplicação segura de rede. O uso do OpenID como o identificador primário para hóspedes recorrentes é a resposta correta para a randomização de MAC. A camada de consentimento PIPL é inegociável para dados de cidadãos chineses.

A equipe de TI de uma rede de varejo relata uma alta taxa de falhas nos logins de WiFi do WeChat em três shoppings. Os usuários se autenticam no WeChat, mas são redirecionados de volta para a página do portal com um erro. Os logs do portal mostram o erro 40029. Qual é a causa provável e como resolvê-la?

O erro 40029 significa que o WeChat rejeitou o código de autorização durante a troca de tokens. As duas causas mais comuns são a incompatibilidade de URI de redirecionamento e a reutilização de código.

Passo 1: Faça login no console de desenvolvedor do WeChat tanto para a Official Accounts Platform quanto para a Open Platform. Navegue até as configurações de OAuth e liste todas as URIs de redirecionamento registradas.

Passo 2: Compare-as com as URIs de redirecionamento reais que o seu servidor de portal utiliza em produção nas três localidades. Verifique se há diferenças de subdomínio (portal.brand.com vs brand.com), diferenças de protocolo (HTTP vs HTTPS) e diferenças de caminho (/callback vs /wechat/callback).

Passo 3: Registre cada variação no console do WeChat. O WeChat realiza validação de correspondência exata, não correspondência de prefixo.

Passo 4: Se as URIs coincidirem, investigue se o seu servidor de portal está tentando reutilizar códigos de autorização. Os códigos do WeChat são de uso único e expiram após cinco minutos. Se o seu servidor tentar novamente a troca de tokens com o mesmo código, ele receberá o erro 40029 na segunda tentativa.

Passo 5: Implemente idempotência no endpoint de troca de tokens para evitar solicitações duplicadas.

Comentário do examinador: O erro 40029 é o erro mais comum em implantações de WeChat OAuth e é quase sempre causado por uma incompatibilidade na URI de redirecionamento. Implantações em múltiplos locais são particularmente vulneráveis porque cada local pode usar um subdomínio ou endereço de balanceador de carga diferente. A causa secundária, reutilização de código, é menos comum, mas vale a pena verificar caso a confirmação do registro da URI esteja correta.

Questões práticas

Q1. Você está implantando um Captive Portal para um estádio com capacidade para 60.000 pessoas que sedia eventos internacionais com uma base significativa de torcedores chineses. A prioridade é colocar todos os participantes online nos primeiros 15 minutos após a abertura dos portões para reduzir o congestionamento de celular. A coleta de dados de marketing é um objetivo secundário. Qual escopo do WeChat OAuth você deve configurar e por quê?

Dica: Considere o impacto de uma tela de consentimento exibida para 15.000 usuários simultâneos em um servidor de Captive Portal.

Ver resposta modelo

Configure o escopo snsapi_base. Isso permite a autenticação silenciosa sem solicitação de consentimento do usuário, proporcionando a experiência de integração mais rápida possível. Na escala de um estádio, uma tela de consentimento adiciona fricção que se multiplica em milhares de conexões simultâneas e pode causar picos de carga no servidor do portal. O snsapi_base retorna apenas o OpenID, o que é suficiente para registrar a sessão e identificar os torcedores que retornam. Para torcedores de primeira viagem dos quais você deseja obter dados demográficos, você pode solicitar o preenchimento do perfil por meio de uma pesquisa pós-conexão, em vez de fazer isso na etapa de autenticação.

Q2. Um arquiteto de rede da sua equipe propõe armazenar o WeChat AppSecret no JavaScript do lado do cliente do Captive Portal para reduzir as viagens de ida e volta ao servidor, fazendo a chamada de troca de token diretamente do navegador. Explique por que essa abordagem é uma falha de segurança crítica e qual é a arquitetura correta.

Dica: Considere quem pode visualizar o código do lado do cliente e o que o AppSecret permite que eles façam.

Ver resposta modelo

Armazenar o AppSecret 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. O AppSecret autentica sua aplicação na API do WeChat. Com ele, um ator mal-intencionado pode se passar por sua aplicação, chamar o endpoint de troca de token do WeChat com qualquer código de autorização válido, recuperar OpenIDs e dados de perfil de usuários e, potencialmente, esgotar os limites de taxa da sua API. A arquitetura correta é um endpoint de troca de token no lado do servidor. O navegador recebe o código de autorização do WeChat e o passa para o seu servidor. Seu servidor, usando o AppSecret armazenado em uma variável de ambiente ou gerenciador de segredos, troca o código por um token e retorna apenas os dados de que o portal precisa. O AppSecret nunca sai do seu servidor.

Q3. Seu estabelecimento opera três propriedades hoteleiras em cidades diferentes, cada uma com sua própria Conta Oficial do WeChat. Um membro do programa de fidelidade que se autenticou nas três propriedades possui três OpenIDs diferentes em seu banco de dados. Como você resolve isso em uma única identidade de hóspede?

Dica: O WeChat fornece um mecanismo para resolução de identidade entre contas que requer uma configuração específica da plataforma.

Ver resposta modelo

Implemente o mecanismo UnionID do WeChat. Vincule as três Contas Oficiais ao mesmo registro de Open Platform em open.weixin.qq.com. Uma vez vinculadas, o WeChat retorna um UnionID junto com o OpenID na resposta snsapi_userinfo. O UnionID é consistente para um determinado usuário em todas as contas vinculadas ao mesmo registro de Open Platform. Migre seu banco de dados para usar o UnionID como o identificador principal de hóspede para registros entre propriedades, retendo o OpenID por conta para chamadas de API específicas de cada conta. Para hóspedes que se autenticaram antes da implementação do UnionID, acione uma nova autenticação com snsapi_userinfo na próxima visita para capturar o UnionID.

Q4. Após implantar a autenticação do WeChat WiFi em um varejo que executa pontos de acesso Cisco Meraki, os hóspedes relatam que concluem o login do WeChat com sucesso, mas retornam à página do portal e não conseguem navegar na internet. Os logs do servidor do portal mostram a recuperação de token bem-sucedida. Qual é a causa mais provável e como diagnosticá-la?

Dica: O portal verificou a identidade. O que ainda não aconteceu?

Ver resposta modelo

A Alteração de Autorização (CoA) do RADIUS não está sendo concluída. O servidor do portal verificou a identidade do hóspede via WeChat OAuth, mas não instruiu com sucesso o controlador Cisco Meraki a mover o dispositivo da VLAN do walled garden para a VLAN de convidados. Diagnostique verificando: (1) se o controlador Meraki tem o RADIUS CoA habilitado e se o IP do servidor do portal está listado como um cliente CoA autorizado; (2) se a porta UDP 3799 está aberta entre o servidor do portal e o controlador; (3) os logs do servidor do portal em busca de erros de solicitação de CoA ou timeouts; e (4) se o segredo compartilhado configurado em ambos os lados coincide. Se o CoA não for compatível com o seu nível de licença Meraki, o bypass de endereço MAC é a alternativa, embora traga o risco de randomização de MAC observado no guia.