Pular para o conteúdo principal

Como Configurar a Autenticação OAuth do WeChat para Captive Portals

Este guia técnico explica como configurar a autenticação OAuth do WeChat para captive portals. Ele detalha os registros de plataforma necessários, o fluxo 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 com segurança.

📖 4 min de leitura📝 815 palavras🔧 2 exemplos práticos3 questões práticas📚 8 definições principais

Ouça este guia

Ver transcrição do podcast
COMO CONFIGURAR AUTENTICAÇÃO OAUTH WECHAT PARA CAPTIVE PORTALS Um Briefing Técnico da Purple - Aproximadamente 10 Minutos --- INTRODUÇÃO E CONTEXTO (aproximadamente 1 minuto) Bem-vindo. Se você é responsável pelo WiFi de visitantes em um hotel, rede de varejo, estádio ou centro de convenções que atende visitantes chineses, este briefing é para você. O WeChat tem 1,38 bilhão de usuários ativos mensais, de acordo com os dados de 2024 da Tencent. A esmagadora maioria está na China, mas a plataforma também tem uma presença internacional significativa - 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 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 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 que você realmente possa usar. É 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. --- MERGULHO TÉCNICO PROFUNDO (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, 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 controladora 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 em open.weixin.qq.com, passando seu AppID, a URI de redirecionamento, o tipo de resposta de código 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 ele estiver usando o navegador interno do WeChat, a experiência pode ser silenciosa com o escopo snsapi_base - sem nenhum prompt 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 api.weixin.qq.com/sns/oauth2/access_token, passando seu AppID, AppSecret, o código e o tipo de concessão de authorization_code. 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 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 em open.weixin.qq.com lida com aplicativos de site e aplicativos móveis. A WeChat Official Accounts Platform em mp.weixin.qq.com lida com contas públicas - o que a maioria dos locais 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 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 usa o escopo snsapi_login e apresenta um código QR que o usuário escaneia com o aplicativo WeChat deles. Na prática, a maioria das implantações em locais usa ambos. Um convidado no WiFi de um hotel pode abrir o portal no Chrome, ver um código QR, escaneá-lo com o WeChat e autenticar. Ou eles podem seguir um link no próprio WeChat, cair no navegador interno e autenticar silenciosamente com snsapi_base. Vamos falar sobre a seleção de escopo, pois este é um ponto de decisão real. O snsapi_base retorna apenas o OpenID - 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 convidados recorrentes que você já traçou o perfil, ou para locais onde você deseja atrito zero à custa de zero novos dados. O snsapi_userinfo retorna o OpenID mais o apelido do WeChat do usuário, foto de perfil, gênero, configuração de idioma e cidade. Requer uma tela de consentimento explícita. O usuário vê uma mensagem perguntando se 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 convidado pela primeira vez, onde você deseja criar um perfil, use snsapi_userinfo e combine-o com uma camada de consentimento em conformidade com a GDPR na página do seu portal. Para um convidado recorrente que já consentiu e de quem você já possui o perfil, use snsapi_base para reautenticação silenciosa. Agora, o lado da aplicação de 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 RADIUS Change of Authorisation, definida na RFC 3576, e 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 convidados. Isso funciona com Cisco Meraki, HPE Aruba, Ruckus, Juniper Mist e a maioria dos controladores de nível corporativo. 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 gerencia ambos os mecanismos. Após a conclusão do WeChat OAuth, a sobreposição de nuvem da Purple envia o sinal apropriado para o hardware subjacente - seja ele 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 as cinco coisas que fazem as implementações de Captive Portal com WeChat OAuth falharem. Primeiro: incompatibilidade da URI de redirecionamento. O WeChat valida a URI de redirecionamento com base no domínio autorizado que você registrou na plataforma. Se o servidor do seu portal usar um subdomínio diferente, um caminho diferente ou HTTP em vez de HTTPS, o fluxo OAuth falhará com o erro 40029 - código inválido. Registre cada variante de domínio que você usa, incluindo ambientes de teste. 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. 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: a falha na detecção do navegador integrado. O navegador interno do WeChat define uma string de user agent específica contendo "MicroMessenger". Se o seu portal não detectar isso e fornecer o fluxo OAuth correto - fluxo de Conta Oficial para o navegador interno, fluxo de QR da Open Platform para navegadores padrão - os usuários terão uma experiência instável ou um erro. Quinto: alinhamento com GDPR e PIPL. Se você atende visitantes europeus, a GDPR se aplica aos dados que você coleta via WeChat OAuth. Se você atende visitantes chineses, a Lei de Proteção de Informações Pessoais da China - 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 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 jurídica 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 empresarial, 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 OAuth do WeChat funciona no iOS? Sim, mas com uma nuance. A estrutura de Transparência do Rastreamento de Aplicativos da Apple não afeta os fluxos de OAuth do lado do servidor. O login do WeChat no Safari no iOS funciona através do fluxo de código QR ou do fluxo de redirecionamento. O próprio aplicativo WeChat lida com a autenticação. Pergunta: O que acontece se a API do WeChat estiver indisponível? Seu portal deve implementar uma alternativa de segurança. Se a chamada da API do WeChat expirar ou retornar um erro, redirecione o usuário para um método de login alternativo. Não os deixe com uma tela em branco. Pergunta: Posso usar o OpenID como um identificador persistente de cliente? Dentro da sua Conta Oficial, sim. O OpenID é estável para um determinado usuário e uma determinada Conta Oficial. Se você tiver várias Contas Oficiais, o mesmo usuário terá diferentes OpenIDs nelas. Para resolução de identidade entre contas, o WeChat fornece um UnionID, que exige que suas contas estejam vinculadas na Open Platform. --- RESUMO E PRÓXIMOS PASSOS (aproximadamente 1 minuto) Para resumir. A autenticação OAuth do WeChat para portais cativos é um exercício de registro em duas plataformas, uma decisão de escopo, uma integração de aplicaçã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 são estes. Primeiro, determine se seus visitantes encontram o portal dentro do navegador interno do WeChat ou em um navegador móvel padrão - isso determina qual registro de plataforma você precisa. Segundo, decida sobre o escopo - snsapi_base para visitantes recorrentes, snsapi_userinfo para o primeiro registro com consentimento. Terceiro, confirme se o hardware da sua rede suporta RADIUS CoA ou configure o bypass de MAC como alternativa. Quarto, revise seu aviso de privacidade e fluxo de consentimento em relação aos requisitos do GDPR e PIPL. Quinto, 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 OAuth do WeChat como parte de uma plataforma mais ampla de WiFi de Convidados 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

Resumo Executivo

Quando visitantes chineses se conectam ao seu WiFi, apresentar uma splash page apenas com opções de login por e-mail ou Facebook cria uma barreira de entrada imediata. Com 13,8 bilhões de usuários ativos mensais, configurar o WeChat como um provedor de identidade elimina esse atrito. Este guia demonstra como implementar a autenticação WeChat OAuth 2.0 para Captive Portals, detalhando os registros de plataforma necessários, fluxos de OAuth e os mecanismos de aplicação de rede exigidos para traduzir um login bem-sucedido em acesso à rede. Abordaremos a implementação técnica para hardware de nível corporativo, juntamente com os requisitos de conformidade sob a GDPR e PIPL.

Arquitetura Técnica

O Captive Portal intercepta o tráfego HTTP de dispositivos não autenticados e os redireciona para uma splash page hospedada em um servidor de portal. Ao integrar o WeChat OAuth, você insere um provedor de identidade de terceiros nesse fluxo.

architecture_overview.png

Aqui está a interação exata passo a passo:

  1. O visitante se conecta ao SSID.
  2. O Access Point (AP) sem fio ou controladora sem fio detecta a falta de uma sessão autenticada e redireciona o tráfego HTTP para a URL do Captive Portal.
  3. O visitante seleciona WeChat Login.
  4. O servidor do portal redireciona o navegador para o endpoint de autorização do WeChat (open.weixin.qq.com), passando o AppID, redirect_uri, response_type=code e scope.
  5. O WeChat lida com a autenticação. Se o visitante estiver dentro do navegador interno do aplicativo WeChat usando o escopo snsapi_base, isso ocorre de forma silenciosa.
  6. O WeChat redireciona de volta para a redirect_uri do portal com um código de autorização temporário.
  7. O servidor do portal troca esse código por um token de acesso chamando api.weixin.qq.com/sns/oauth2/access_token.
  8. O WeChat retorna o access_token, refresh_token e o openid do usuário.

Requisitos de Registro de Plataforma

A implementação do login do WeChat exige o registro na plataforma de desenvolvedores correta. O WeChat opera duas plataformas distintas, e selecionar a errada causará falha na integração.

Plataforma de Contas Oficiais do WeChat

Para Captive Portals servidos no navegador integrado do WeChat, você precisa de uma Service Account registrada na WeChat Official Accounts Platform (mp.weixin.qq.com). Subscription Accounts não possuem as permissões necessárias de autorização de página web OAuth. Service Accounts suportam os escopos snsapi_base e snsapi_userinfo.

WeChat Open Platform

Para Captive Portals acessados de navegadores móveis padrão fora do WeChat (ex: Chrome no Android ou Safari no iOS), você precisa de uma Website Application registrada na Open Platform (open.weixin.qq.com). Isso utiliza o escopo snsapi_login e apresenta um QR code para o usuário escanear com o aplicativo WeChat.

A maioria das implantações corporativas exige ambos os registros para cobrir todas as vias de acesso.

Seleção de Escopo e Coleta de Dados

O parâmetro de escopo determina quais dados o WeChat retorna para o servidor do seu portal. Essa decisão afeta tanto a fricção do usuário quanto a conformidade com a privacidade de dados.

scope_comparison_chart.png

snsapi_base

Este escopo retorna apenas o OpenID, o identificador exclusivo do usuário em sua Official Account. Ele não exige nenhuma solicitação de autorização do usuário, tornando a autenticação silenciosa. Isso é ideal para visitantes frequentes para os quais você já possui um perfil, ou para locais que priorizam zero fricção em vez da coleta de novos dados.

snsapi_userinfo

Este escopo retorna o OpenID junto com o apelido do WeChat do usuário, foto de perfil, gênero, configurações de idioma e cidade. Ele exige uma página de autorização explícita, introduzindo fricção. 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 o GDPR.

Integração de Execução de Rede

A aquisição de um token OAuth comprova a identidade, mas não abre a rede. Você deve traduzir a autenticação bem-sucedida em acesso à rede usando protocolos padrão.

RADIUS Change of Authorization (CoA)

Definido no IEEE 802.1X e RFC 3576, o RADIUS CoA permite que o servidor do portal envie uma solicitação ao controlador de rede após o sucesso do OAuth. O controlador então move o dispositivo de uma VLAN não autenticada para uma VLAN de convidados. Este é o padrão para hardware de nível corporativo, incluindo Cisco Meraki, HPE Aruba, Ruckus e Juniper Mist.

MAC Address Bypass

Como alternativa, o servidor do portal registra o endereço MAC do dispositivo como um cliente autorizado, e o controlador permite o acesso. Embora mais simples de implementar, isso é menos seguro, pois os endereços MAC podem ser falsificados.

A tecnologia de sobreposição em nuvem da Purple automatiza essa transição, enviando os sinais apropriados 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 GDPR e PIPL

Se você atende a visitantes europeus, a GDPR se aplica aos dados coletados via WeChat OAuth. Se você atende a visitantes chineses, a Lei de Proteção de Informações Pessoais (PIPL) da China se aplica. Ambas as estruturas exigem que o processamento tenha uma base legal, limitação explícita de finalidade e minimização de dados. Comparado ao escopo snsapi_userinfo, o escopo snsapi_base é mais fácil de alinhar com os princípios de minimização de dados.

Proteção CSRF

O parâmetro state em solicitações OAuth evita a 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 a redirect_uri em relação ao domínio autorizado registrado na plataforma. Se o seu servidor de portal usar um subdomínio ou caminho diferente, ou usar HTTP em vez de HTTPS, o fluxo OAuth falhará com o erro 40029.

Para obter mais informações sobre como proteger sua rede, consulte nosso Segurança de WiFi Corporativo: Um Guia Completo para 2026 .

Definições principais

snsapi_base

Um escopo OAuth do WeChat que retorna apenas o OpenID do usuário sem exibir uma solicitação de consentimento.

Usado quando as equipes de TI precisam autenticar visitantes que retornam silenciosamente, sem causar atrito no login.

snsapi_userinfo

Um escopo OAuth do WeChat que retorna o OpenID junto com dados demográficos (apelido, gênero, cidade) e requer 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 específica.

Usado como a chave primária no banco de dados do portal para rastrear o comportamento do visitante e as visitas de retorno.

RADIUS CoA

Change of Authorisation (Mudança de Autorização). Um mecanismo definido no RFC 3576 que permite a um servidor modificar o estado de autorização de uma sessão ativa.

Usado pelo servidor do portal para informar ao controlador sem fio que conceda acesso à rede após a autenticação bem-sucedida no WeChat.

PIPL

Lei de Proteção de Informações Pessoais. A regulamentação abrangente de privacidade de dados da China.

Deve ser considerado juntamente com o GDPR ao projetar o fluxo de consentimento para visitantes chineses usando o login do WeChat.

AppID e AppSecret

As credenciais fornecidas pelo WeChat para identificar e autenticar sua aplicação.

O AppSecret deve permanecer seguro no servidor do portal e nunca ser exposto no código do lado do cliente.

Parâmetro State

Uma string criptograficamente aleatória passada na solicitação OAuth e validada no retorno.

Essencial para prevenir ataques de falsificação de solicitação entre sites (CSRF) no captive portal.

Bypass de Endereço MAC

Um método de conceder acesso à rede autorizando o 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 quer oferecer login do WeChat para compradores chineses. Eles desejam coletar dados demográficos para entender sua base de clientes, mas estão preocupados com a conformidade com o GDPR e as altas taxas de abandono no portal.

O varejista deve registrar uma conta de serviço na Plataforma de Contas Oficiais do WeChat. Eles devem configurar o portal para usar o escopo snsapi_userinfo para as primeiras conexões para coletar dados demográficos (apelido, gênero, cidade). Para garantir a conformidade com o GDPR, a página do portal deve exibir um opt-in claro de escolha consciente antes do redirecionamento do WeChat, explicando exatamente quais dados são coletados e por quê. Para compradores que retornam, o portal deve detectar o endereço MAC e usar snsapi_base para reautenticação silenciosa, minimizando o atrito.

Comentário do examinador: Esta abordagem equilibra a coleta de dados com a experiência do usuário. Ao limitar o fluxo de alto atrito do `snsapi_userinfo` à primeira visita e usar o `snsapi_base` posteriormente, o varejista maximiza a conversão enquanto permanece em conformidade com os princípios de minimização de dados.

Um estádio implanta uma nova rede WiFi usando controladores HPE Aruba. Eles configuraram o OAuth do WeChat e o 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 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 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 do perfil de pré-autenticação para o perfil de convidado autenticado.

Comentário do examinador: Isso destaca a distinção entre verificação de identidade e controle de acesso à rede. As redes corporativas exigem um protocolo como RADIUS CoA para preencher a lacuna entre a aplicação web (portal) e a infraestrutura de rede.

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 portal no Safari no iOS recebem um erro ao selecionar o login do WeChat, mas os usuários que abrem o portal a partir de um link de mensagem dentro do WeChat autenticam com sucesso. Qual é a causa provável?

Dica: Considere a diferença entre o navegador interno do WeChat e os navegadores móveis padrão.

Ver resposta modelo

A implementação provavelmente está dependendo exclusivamente de uma Conta de Serviço registrada na Official Accounts Platform, que só suporta OAuth dentro do navegador interno do WeChat. Para suportar o Safari no iOS, você também deve registrar um Website Application na WeChat Open Platform e implementar a detecção de user agent para rotear os usuários do Safari para o fluxo de código QR.

Q2. Os logs do servidor do seu portal mostram erros frequentes de 'invalid code' 40029 retornados pela WeChat API durante a troca de token de acesso. Qual configuração você deve verificar primeiro?

Dica: Pense em como o WeChat valida a origem da requisição de autenticação.

Ver resposta modelo

Você deve verificar a configuração de redirect_uri. O WeChat valida estritamente a URI de redirecionamento em relação ao domínio autorizado registrado no console do desenvolvedor. Se o portal estiver usando um subdomínio diferente, ou se perder o HTTPS, o WeChat rejeitará a troca de código.

Q3. O operador de um local 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 de 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 snsapi_base, que funciona silenciosamente, mas retorna apenas o OpenID.