How to Configure WeChat OAuth Authentication for Captive Portals
Este guia técnico explica como configurar a autenticação OAuth do WeChat para captive portals. Detalha os registos de plataforma necessários, o fluxo OAuth 2.0, a seleção de scope e os mecanismos de aplicação de rede necessários para capturar dados primários de visitantes chineses de forma segura.
Ouça este guia
Ver transcrição do podcast
- Resumo Executivo
- Arquitetura Técnica
- Requisitos de Registo na Plataforma
- Plataforma de Contas Oficiais do WeChat
- Plataforma Aberta do WeChat
- Seleção de Scope e Recolha de Dados
- snsapi_base
- snsapi_userinfo
- Integração de Aplicação de Rede
- RADIUS Change of Authorisation (CoA)
- MAC Address Bypass
- Considerações de Conformidade e Segurança
- Alinhamento com o GDPR e a PIPL
- Proteção CSRF
- Validação do URI de Redirecionamento

Resumo Executivo
Quando os visitantes chineses se ligam ao seu WiFi, apresentar uma página de início de sessão apenas com e-mail ou Facebook cria uma fricção imediata. O WeChat tem 1,38 mil milhões de utilizadores ativos mensais, e configurá-lo como fornecedor de identidade elimina esta barreira. Este guia explica como implementar a autenticação OAuth 2.0 do WeChat para captive portals, detalhando os registos de plataforma necessários, o fluxo OAuth e os mecanismos de aplicação de rede necessários para traduzir um início de sessão bem-sucedido em acesso à rede. Abordamos a implementação técnica em hardware empresarial e os requisitos de conformidade ao abrigo do GDPR e da PIPL.
Arquitetura Técnica
Um captive portal interceta o tráfego HTTP de um dispositivo não autenticado e redireciona-o para uma página de início de sessão alojada num servidor de portal. Ao integrar o OAuth do WeChat, insere um fornecedor de identidade de terceiros neste fluxo.

A sequência funciona da seguinte forma:
- O visitante liga-se ao SSID.
- O ponto de acesso ou controlador sem fios deteta a falta de uma sessão autenticada e redireciona o tráfego HTTP para o URL do captive portal.
- O visitante seleciona o início de sessão do WeChat.
- O servidor do portal redireciona o navegador para o endpoint de autorização do WeChat (
open.weixin.qq.com), transmitindo oAppID,redirect_uri,response_type=codeescope. - O WeChat processa a autenticação. Se o visitante utilizar o navegador interno da aplicação WeChat com o scope
snsapi_base, isto ocorre de forma silenciosa. - O WeChat redireciona de volta para o
redirect_urido portal com um código de autorização temporário. - O servidor do portal troca este código por um token de acesso ao chamar
api.weixin.qq.com/sns/oauth2/access_token. - O WeChat devolve um
access_token,refresh_tokene oopeniddo utilizador.
Requisitos de Registo na Plataforma
A implementação do início de sessão do WeChat requer o registo na plataforma de programadores correta. O WeChat opera duas plataformas distintas, e selecionar a errada fará com que a integração falhe.
Plataforma de Contas Oficiais do WeChat
Para um captive portal que serve visitantes dentro do navegador interno da aplicação WeChat, necessita de uma Conta de Serviço (Service Account) na Plataforma de Contas Oficiais (mp.weixin.qq.com). Uma Conta de Subscrição (Subscription Account) não tem as permissões de autorização de página web OAuth necessárias. Uma Conta de Serviço suporta os scopes snsapi_base e snsapi_userinfo.
Plataforma Aberta do WeChat
Para um captive portal acedido a partir de um navegador móvel padrão fora do WeChat (como o Chrome em Android ou o Safari em iOS), necessita de uma Aplicação Web (Website Application) registada na Plataforma Aberta (open.weixin.qq.com). Esta utiliza o scope snsapi_login e apresenta um código QR que o utilizador digitaliza com a sua aplicação WeChat.
A maioria das implementações empresariais requer ambos os registos para abranger todos os métodos de acesso.
Seleção de Scope e Recolha de Dados
O parâmetro scope determina quais os dados que o WeChat devolve ao seu servidor de portal. Esta decisão tem impacto tanto na fricção do utilizador como na conformidade com a privacidade de dados.

snsapi_base
Este scope devolve apenas o OpenID, um identificador único para o utilizador dentro da sua Conta Oficial. Não requer qualquer pedido de consentimento do utilizador, tornando a autenticação invisível para o mesmo. Isto é ideal para visitantes recorrentes dos quais já possui um perfil, ou para locais que priorizam a ausência de fricção em detrimento da recolha de novos dados.
snsapi_userinfo
Este scope devolve o OpenID mais a alcunha (nickname) do WeChat do utilizador, a foto de perfil, o género, a definição de idioma e a cidade. Requer um ecrã de consentimento explícito, introduzindo fricção. Utilize isto para o registo de visitantes pela primeira vez, onde a criação de um perfil é necessária, combinado com uma camada de consentimento em conformidade com o GDPR.
Integração de Aplicação de Rede
A aquisição de um token OAuth prova a identidade, mas não abre a rede. Deve traduzir uma autenticação bem-sucedida em acesso à rede utilizando protocolos padrão.
RADIUS Change of Authorisation (CoA)
Definido em IEEE 802.1X e RFC 3576, o RADIUS CoA permite que o servidor do portal envie um pedido ao controlador de rede após um OAuth bem-sucedido. O controlador move então o dispositivo da VLAN não autenticada para a VLAN de convidados. Este é o padrão para hardware empresarial, incluindo Cisco Meraki, HPE Aruba, Ruckus e Juniper Mist.
MAC Address Bypass
Alternativamente, o servidor do portal regista o endereço MAC do dispositivo como um cliente autorizado, e o controlador permite-o. Embora seja mais simples de implementar, é menos seguro, uma vez que os endereços MAC podem ser falsificados.
A sobreposição de nuvem da Purple automatiza esta tradução, enviando o sinal apropriado para o hardware subjacente (incluindo Ubiquiti UniFi, Cambium, Extreme e Fortinet) assim que o OAuth do WeChat for concluído.
Considerações de Conformidade e Segurança
Alinhamento com o GDPR e a PIPL
Se serve visitantes europeus, o GDPR aplica-se aos dados recolhidos através do OAuth do WeChat. Se serve visitantes chineses, aplica-se a Lei de Proteção de Informações Pessoais (PIPL) da China. Ambas as estruturas exigem uma base legal para o processamento, limitação clara da finalidade e minimização de dados. O scope snsapi_base alinha-se mais facilmente com os princípios de minimização de dados do que o snsapi_userinfo.
Proteção CSRF
O parâmetro state no pedido OAuth previneevita cross-site request forgery. Deve gerar um valor de estado criptograficamente aleatório, armazená-lo na sessão do utilizador e validá-lo quando o WeChat redirecionar de volta.
Validação do URI de Redirecionamento
O WeChat valida o redirect_uri em relação ao domínio autorizado registado na plataforma. Se o servidor do seu portal utilizar um subdomínio, caminho ou HTTP diferente em vez de HTTPS, o fluxo OAuth falha com o erro 40029.
Para mais informações sobre como proteger a sua rede, consulte o nosso Segurança de WiFi Empresarial: Um Guia Completo para 2026 .
Definições Principais
snsapi_base
A WeChat OAuth scope that returns only the user's OpenID without displaying a consent prompt.
Used when IT teams need to authenticate returning visitors silently without causing login friction.
snsapi_userinfo
A WeChat OAuth scope that returns the OpenID along with demographic data (nickname, gender, city) and requires explicit user consent.
Used during first-time registration when marketing teams need to build a visitor profile.
OpenID
A unique identifier for a specific user within a specific WeChat Official Account.
Used as the primary key in the portal database to track visitor behaviour and return visits.
RADIUS CoA
Change of Authorisation. A mechanism defined in RFC 3576 that allows a server to modify the authorisation state of an active session.
Used by the portal server to tell the wireless controller to grant network access after successful WeChat authentication.
PIPL
Personal Information Protection Law. China's comprehensive data privacy regulation.
Must be considered alongside GDPR when designing the consent flow for Chinese visitors using WeChat login.
AppID and AppSecret
The credentials provided by WeChat to identify and authenticate your application.
The AppSecret must remain securely on the portal server and never be exposed in client-side code.
State Parameter
A cryptographically random string passed in the OAuth request and validated upon return.
Essential for preventing Cross-Site Request Forgery (CSRF) attacks on the captive portal.
MAC Address Bypass
A method of granting network access by authorising the device's hardware address rather than requiring 802.1X authentication.
An alternative to RADIUS CoA for simpler network setups, though less secure.
Exemplos Práticos
A luxury retail brand in London wants to offer WeChat login for Chinese shoppers. They want to collect demographic data to understand their customer base, but they are concerned about GDPR compliance and high drop-off rates at the portal.
The retailer should register a Service Account on the WeChat Official Accounts Platform. They must configure the portal to use the snsapi_userinfo scope for first-time connections to gather demographic data (nickname, gender, city). To ensure GDPR compliance, the portal page must display a clear, conscious-choice opt-in before the WeChat redirect, explaining exactly what data is collected and why. For returning shoppers, the portal should detect the MAC address and use snsapi_base for silent re-authentication, minimising friction.
A stadium deploys a new WiFi network using HPE Aruba controllers. They have configured WeChat OAuth, and the portal successfully receives the access token, but the visitor's device remains on the captive portal page and cannot access the internet.
The integration lacks a network enforcement mechanism. The portal server has verified the user's identity with WeChat, but it has not instructed the HPE Aruba controller to grant access. The portal server must be configured to send a RADIUS Change of Authorisation (CoA) message to the controller, instructing it to transition the user's MAC address from the pre-authentication role to the authenticated guest role.
Perguntas de Prática
Q1. You are deploying a captive portal across a retail chain. Testing shows that users opening the portal in Safari on iOS receive an error when selecting WeChat login, but users opening the portal from within a WeChat message link authenticate successfully. What is the likely cause?
Dica: Consider the difference between the WeChat in-app browser and standard mobile browsers.
Ver resposta modelo
The implementation is likely relying solely on a Service Account registered on the Official Accounts Platform, which only supports OAuth within the WeChat in-app browser. To support Safari on iOS, you must also register a Website Application on the WeChat Open Platform and implement user agent detection to route Safari users to the QR code flow.
Q2. Your portal server logs show frequent 40029 'invalid code' errors returning from the WeChat API during the access token exchange. What configuration should you check first?
Dica: Think about how WeChat validates the source of the authentication request.
Ver resposta modelo
You should verify the redirect_uri configuration. WeChat strictly validates the redirect URI against the authorised domain registered in the developer console. If the portal is using a different subdomain, or if it drops HTTPS, WeChat will reject the code exchange.
Q3. A venue operator wants to collect visitor data but insists on zero friction during the login process. They request that you configure WeChat login to collect the visitor's nickname and city without showing a consent prompt. How do you respond?
Dica: Review the capabilities of the different OAuth scopes.
Ver resposta modelo
You must inform the operator that this is technically impossible. Collecting demographic data like nickname and city requires the snsapi_userinfo scope, which mandatorily triggers a WeChat consent prompt. To achieve zero friction, you must use snsapi_base, which operates silently but only returns the OpenID.
Continue a ler esta série
How to Set Up a Captive Portal on Starlink: A Guide for Remote & Maritime Venues
Este guia detalha como contornar o hardware nativo da Starlink e integrar um captive portal gerido na cloud utilizando equipamento de encaminhamento empresarial. Irá aprender a superar a limitação de CGNAT, impor a segmentação de VLAN, gerir as restrições de largura de banda de satélite e garantir a conformidade regulamentar.
Hotel Guest WiFi Management: Integrating PMS, Portals, and Brand Standards
Este guia técnico detalha como arquitetar redes WiFi de hotéis de nível empresarial, focando-se na segmentação de VLAN, integração de PMS para gestão automatizada de sessões e otimização de captive portal para captura de dados em conformidade com o GDPR.
Captive Portal Best Practices: Designing for High Conversion and Compliance
Este guia técnico oferece aos gestores de TI, arquitetos de rede e diretores de operações de espaços um plano completo para implementar captive portals que equilibram a segurança da rede com uma elevada conversão de utilizadores. Abrange toda a arquitetura, desde a segmentação de VLAN e autenticação RADIUS até ao design de consentimento em conformidade com o GDPR e à seleção do método de autenticação. Baseado na experiência operacional da Purple em mais de 80.000 espaços e 440 milhões de inícios de sessão em 2024, cada recomendação é fundamentada em dados reais de implementação.