Como configurar a autenticação WeChat OAuth para Captive Portals
Este guia técnico explica como configurar a autenticação WeChat OAuth para captive portals. Ele detalha os registros de plataforma necessários, o fluxo do OAuth 2.0, a seleção de escopo 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 Registro de Plataforma
- WeChat Official Accounts Platform
- WeChat Open Platform
- Seleção de Escopo e Coleta de Dados
- snsapi_base
- snsapi_userinfo
- Integração de Aplicação de Rede
- RADIUS Change of Authorisation (CoA)
- MAC Address Bypass
- Considerações de Segurança e Conformidade
- Alinhamento com GDPR e PIPL
- Proteção CSRF
- Validação de URI de Redirecionamento

Resumo Executivo
Quando os visitantes chineses se conectam ao seu WiFi, apresentar uma página de login apenas com e-mail ou Facebook cria um atrito imediato. O WeChat tem 1,38 bilhão de usuários ativos mensais, e configurá-lo como um provedor de identidade elimina essa barreira. Este guia explica como implementar a autenticação WeChat OAuth 2.0 para captive portals, detalhando os registros de plataforma necessários, o fluxo do OAuth e os mecanismos de aplicação de rede exigidos para traduzir um login bem-sucedido em acesso à rede. Cobrimos a implementação técnica em hardware corporativo e os requisitos de conformidade sob a GDPR e a PIPL.
Arquitetura Técnica
Um captive portal intercepta o tráfego HTTP de um dispositivo não autenticado e o redireciona para uma página de login hospedada em um servidor de captive portal. Quando você integra o WeChat OAuth, insere um provedor de identidade de terceiros nesse fluxo.

A sequência funciona da seguinte forma:
- O visitante se conecta ao SSID.
- O ponto de acesso ou controlador sem fio detecta a falta de uma sessão autenticada e redireciona o tráfego HTTP para a URL do captive portal.
- O visitante seleciona o login do WeChat.
- O servidor do captive 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 lida com a autenticação. Se o visitante usar o navegador interno do WeChat com o escopo
snsapi_base, isso ocorre de forma silenciosa. - O WeChat redireciona de volta para o
redirect_urido captive portal com um código de autorização temporário. - O servidor do captive portal troca esse código por um token de acesso chamando
api.weixin.qq.com/sns/oauth2/access_token. - O WeChat retorna um
access_token,refresh_tokene oopeniddo usuário.
Requisitos de Registro de Plataforma
A implementação do login do WeChat exige o registro na plataforma de desenvolvedor correta. O WeChat opera duas plataformas distintas, e selecionar a errada fará com que a integração falhe.
WeChat Official Accounts Platform
Para um captive portal que atende visitantes dentro do navegador interno do WeChat, você precisa de uma Conta de Serviço (Service Account) na Official Accounts Platform (mp.weixin.qq.com). Uma Conta de Assinatura (Subscription Account) carece das permissões de autorização de página web OAuth necessárias. Uma Conta de Serviço suporta os escopos snsapi_base e snsapi_userinfo.
WeChat Open Platform
Para um captive portal acessado a partir de um navegador móvel padrão fora do WeChat (como o Chrome no Android ou Safari no iOS), você precisa de uma Aplicação de Website (Website Application) registrada na Open Platform (open.weixin.qq.com). Isso usa o escopo snsapi_login e apresenta um código QR que o usuário escaneia com seu aplicativo WeChat.
A maioria das implantações corporativas exige ambos os registros para cobrir todos os métodos de acesso.
Seleção de Escopo e Coleta de Dados
O parâmetro de escopo determina quais dados o WeChat retorna ao seu servidor de captive portal. Essa decisão afeta tanto o atrito do usuário quanto a conformidade com a privacidade de dados.

snsapi_base
Este escopo retorna apenas o OpenID, um identificador exclusivo para o usuário dentro da sua Conta Oficial (Official Account). Não exige nenhuma solicitação de consentimento do usuário, tornando a autenticação invisível para ele. Isso é ideal para visitantes recorrentes sobre os quais você já possui um perfil, ou para estabelecimentos que priorizam o atrito zero em detrimento da coleta de novos dados.
snsapi_userinfo
Este escopo retorna o OpenID mais o apelido do WeChat do usuário, foto de perfil, gênero, configuração de idioma e cidade. Exige uma tela de consentimento explícita, introduzindo atrito. Use isso para o registro de visitantes de primeira viagem onde a criação de um perfil é necessária, combinado com uma camada de consentimento em conformidade com a GDPR.
Integração de Aplicação de Rede
A aquisição de um token OAuth prova a identidade, mas não abre a rede. Você deve traduzir uma autenticação bem-sucedida em acesso à rede usando protocolos padrão.
RADIUS Change of Authorisation (CoA)
Definido no IEEE 802.1X e na RFC 3576, o RADIUS CoA permite que o servidor do captive portal envie uma solicitação ao controlador de rede após o OAuth bem-sucedido. O controlador então move o dispositivo da VLAN não autenticada para a VLAN de convidados. Este é o padrão para hardware corporativo, incluindo Cisco Meraki, HPE Aruba, Ruckus e Juniper Mist.
MAC Address Bypass
Como alternativa, o servidor do captive portal registra o endereço MAC do dispositivo como um cliente autorizado, e o controlador o permite. Embora seja mais simples de implementar, é menos seguro, pois os endereços MAC podem ser clonados.
A sobreposição de nuvem da Purple automatiza essa tradução, enviando o sinal apropriado para o hardware subjacente (incluindo Ubiquiti UniFi, Cambium, Extreme e Fortinet) assim que o WeChat OAuth for concluído.
Considerações de Segurança e Conformidade
Alinhamento com GDPR e PIPL
Se você atende visitantes europeus, a GDPR se aplica aos dados coletados via WeChat OAuth. Se você atende visitantes chineses, a Lei de Proteção de Informações Pessoais da China (PIPL) se aplica. Ambas as estruturas exigem uma base legal para o processamento, limitação clara de finalidade e minimização de dados. O escopo snsapi_base se alinha mais facilmente com os princípios de minimização de dados do que o snsapi_userinfo.
Proteção CSRF
O parâmetro state na solicitação OAuth previneevita falsificação de solicitação entre sites (cross-site request forgery). Você deve gerar um valor de estado criptograficamente aleatório, armazená-lo na sessão do usuário e validá-lo quando o WeChat redirecionar de volta.
Validação de URI de Redirecionamento
O WeChat valida o redirect_uri em relação ao domínio autorizado registrado na plataforma. Se o seu servidor de portal usar um subdomínio, caminho ou HTTP diferente em vez de HTTPS, o fluxo OAuth falhará com o erro 40029.
Para mais informações sobre como proteger sua rede, consulte nosso Segurança de WiFi Corporativa: Um Guia Completo para 2026 .
Definições principais
snsapi_base
Um escopo do WeChat OAuth que retorna apenas o OpenID do usuário sem exibir uma solicitação de consentimento.
Usado quando as equipes de TI precisam autenticar visitantes recorrentes silenciosamente, sem causar atrito no login.
snsapi_userinfo
Um escopo do WeChat OAuth que retorna o OpenID junto com dados demográficos (apelido, gênero, cidade) e exige o consentimento explícito do usuário.
Usado durante o primeiro registro quando as equipes de marketing precisam criar um perfil de visitante.
OpenID
Um identificador exclusivo para um usuário específico dentro de uma conta oficial do WeChat (WeChat Official Account) específica.
Usado como chave primária no banco de dados do captive portal para rastrear o comportamento do visitante e as visitas de retorno.
RADIUS CoA
Change of Authorisation. Um mecanismo definido na RFC 3576 que permite a um servidor modificar o estado de autorização de uma sessão ativa.
Usado pelo servidor do captive portal para instruir o controlador sem fio a conceder acesso à rede após a autenticação bem-sucedida no WeChat.
PIPL
Personal Information Protection Law. A regulamentação abrangente de privacidade de dados da China.
Deve ser considerada juntamente com a GDPR ao projetar o fluxo de consentimento para visitantes chineses que usam o login do WeChat.
AppID and AppSecret
As credenciais fornecidas pelo WeChat para identificar e autenticar sua aplicação.
O AppSecret deve permanecer de forma segura no servidor do captive portal e nunca ser exposto no código do lado do cliente.
State Parameter
Uma string criptograficamente aleatória transmitida na solicitação OAuth e validada no retorno.
Essencial para prevenir ataques de falsificação de solicitação entre sites (CSRF) no captive portal.
MAC Address Bypass
Um método de concessão de acesso à rede por meio da autorização do endereço de hardware do dispositivo, em vez de exigir a autenticação 802.1X.
Uma alternativa ao RADIUS CoA para configurações de rede mais simples, embora menos segura.
Exemplos práticos
Uma marca de varejo de luxo em Londres deseja oferecer login via WeChat para compradores chineses. Eles querem coletar dados demográficos para entender sua base de clientes, mas estão preocupados com a conformidade com a GDPR e as altas taxas de abandono no captive portal.
O varejista deve registrar uma Conta de Serviço (Service Account) na WeChat Official Accounts Platform. Eles devem configurar o captive portal para usar o escopo snsapi_userinfo para conexões de primeira viagem para coletar dados demográficos (apelido, gênero, cidade). Para garantir a conformidade com a GDPR, a página do captive portal deve exibir um opt-in claro e de escolha consciente antes do redirecionamento do WeChat, explicando exatamente quais dados são coletados e por quê. Para compradores recorrentes, o captive portal deve detectar o endereço MAC e usar snsapi_base para autenticação silenciosa, minimizando o atrito.
Um estádio implanta uma nova rede WiFi usando controladores HPE Aruba. Eles configuraram o WeChat OAuth e o captive portal recebe com sucesso o token de acesso, mas o dispositivo do visitante permanece na página do captive portal e não consegue acessar a internet.
A integração carece de um mecanismo de aplicação de rede. O servidor do captive portal verificou a identidade do usuário com o WeChat, mas não instruiu o controlador HPE Aruba a conceder o acesso. O servidor do captive portal deve ser configurado para enviar uma mensagem RADIUS Change of Authorisation (CoA) para o controlador, instruindo-o a transicionar o endereço MAC do usuário da função de pré-autenticação para a função de convidado autenticado.
Questões práticas
Q1. Você está implantando um captive portal em uma rede de varejo. Os testes mostram que os usuários que abrem o captive portal no Safari no iOS recebem um erro ao selecionar o login do WeChat, mas os usuários que abrem o captive portal a partir de um link de mensagem dentro do WeChat se autenticam com sucesso. Qual é a causa provável?
Dica: Considere a diferença entre o navegador interno do WeChat (in-app browser) e os navegadores móveis padrão.
Ver resposta modelo
A implementação provavelmente está dependendo exclusivamente de uma Conta de Serviço (Service Account) registrada na Official Accounts Platform, que suporta apenas OAuth dentro do navegador interno do WeChat. Para suportar o Safari no iOS, você também deve registrar uma Aplicação de Website (Website Application) na WeChat Open Platform e implementar a detecção de user agent para direcionar os usuários do Safari para o fluxo de código QR.
Q2. Os logs do seu servidor de captive portal mostram erros frequentes 40029 'invalid code' retornando da API do WeChat durante a troca do token de acesso. Qual configuração você deve verificar primeiro?
Dica: Pense em como o WeChat valida a origem da solicitação de autenticação.
Ver resposta modelo
Você deve verificar a configuração do redirect_uri. O WeChat valida rigorosamente o URI de redirecionamento em relação ao domínio autorizado registrado no console do desenvolvedor. Se o captive portal estiver usando um subdomínio diferente, ou se deixar de usar HTTPS, o WeChat rejeitará a troca de código.
Q3. O operador de um estabelecimento deseja coletar dados dos visitantes, mas insiste em atrito zero durante o processo de login. Ele solicita que você configure o login do WeChat para coletar o apelido e a cidade do visitante sem exibir uma solicitação de consentimento. Como você responde?
Dica: Revise os recursos dos diferentes escopos do OAuth.
Ver resposta modelo
Você deve informar ao operador que isso é tecnicamente impossível. A coleta de dados demográficos como apelido e cidade exige o escopo snsapi_userinfo, que obrigatoriamente aciona uma solicitação de consentimento do WeChat. Para obter atrito zero, você deve usar o snsapi_base, que opera silenciosamente, mas retorna apenas o 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 ignorar o hardware nativo do Starlink e integrar um Captive Portal gerenciado na nuvem usando equipamentos de roteamento corporativos. Você aprenderá como superar a limitação de CGNAT, aplicar a segmentação de VLAN, gerenciar restrições de largura de banda de satélite e garantir a conformidade regulatória.
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, com foco na segmentação de VLAN, integração de PMS para gerenciamento automatizado de sessões e otimização de Captive Portal para captura de dados em conformidade com a GDPR.
Captive Portal Best Practices: Designing for High Conversion and Compliance
Este guia técnico oferece a gerentes de TI, arquitetos de rede e diretores de operações de locais um blueprint completo para implantar captive portals que equilibram a segurança da rede com uma alta conversão de usuários. Ele abrange toda a arquitetura, desde a segmentação de VLAN e autenticação RADIUS até o design de consentimento em conformidade com a GDPR e a seleção do método de autenticação. Extraído da experiência operacional da Purple em mais de 80.000 locais e 440 milhões de logins em 2024, cada recomendação é baseada em dados reais de implantação.