Comment configurer l'authentification OAuth WeChat pour les Captive Portals
Ce guide technique explique comment configurer l'authentification OAuth WeChat pour les captive portals. Il détaille les enregistrements de plateforme requis, le flux OAuth 2.0, la sélection de la portée (scope) et les mécanismes d'application réseau nécessaires pour capturer en toute sécurité les données de première partie des visiteurs chinois.
Écouter ce guide
Voir la transcription du podcast
- Résumé exécutif
- Architecture technique
- Exigences d'enregistrement de la plateforme
- Plateforme WeChat Official Accounts
- WeChat Open Platform
- Sélection du Scope et Collecte de Données
- snsapi_base
- snsapi_userinfo
- Intégration de l'Application des Règles Réseau
- RADIUS Change of Authorisation (CoA)
- MAC Address Bypass
- Considérations de Conformité et de Sécurité
- Alignement GDPR et PIPL
- Protection CSRF
- Validation de l'URI de redirection

Résumé exécutif
Lorsque les visiteurs chinois se connectent à votre WiFi, leur présenter une page de connexion contenant uniquement un e-mail ou Facebook crée une friction immédiate. WeChat compte 1,38 milliard d'utilisateurs actifs mensuels, et le configurer comme fournisseur d'identité élimine cet obstacle. Ce guide explique comment implémenter l'authentification WeChat OAuth 2.0 pour les Captive Portals, en détaillant les enregistrements de plateforme nécessaires, le flux OAuth et les mécanismes d'application réseau requis pour traduire une connexion réussie en un accès réseau. Nous couvrons l'implémentation technique sur le matériel d'entreprise et les exigences de conformité dans le cadre du GDPR et de la PIPL.
Architecture technique
Un Captive Portal intercepte le trafic HTTP d'un appareil non authentifié et le redirige vers une page de connexion hébergée sur un serveur de portail. Lorsque vous intégrez WeChat OAuth, vous insérez un fournisseur d'identité tiers dans ce flux.

La séquence fonctionne comme suit :
- Le visiteur se connecte au SSID.
- Le point d'accès ou le contrôleur sans fil détecte l'absence de session authentifiée et redirige le trafic HTTP vers l'URL du Captive Portal.
- Le visiteur sélectionne la connexion WeChat.
- Le serveur du portail redirige le navigateur vers le point de terminaison d'autorisation de WeChat (
open.weixin.qq.com), en transmettant l'AppID, leredirect_uri, leresponse_type=codeet lescope. - WeChat gère l'authentification. Si le visiteur utilise le navigateur intégré de WeChat avec le scope
snsapi_base, cela se produit de manière transparente. - WeChat redirige à nouveau vers le
redirect_uridu portail avec un code d'autorisation temporaire. - Le serveur du portail échange ce code contre un jeton d'accès en appelant
api.weixin.qq.com/sns/oauth2/access_token. - WeChat renvoie un
access_token, unrefresh_tokenet l'openidde l'utilisateur.
Exigences d'enregistrement de la plateforme
L'implémentation de la connexion WeChat nécessite un enregistrement sur la bonne plateforme de développement. WeChat exploite deux plateformes distinctes, et le choix de la mauvaise entraîne l'échec de l'intégration.
Plateforme WeChat Official Accounts
Pour un Captive Portal desservant les visiteurs à l'intérieur du navigateur intégré de WeChat, vous devez disposer d'un compte de service (Service Account) sur la plateforme Official Accounts (mp.weixin.qq.com). Un compte d'abonnement (Subscription Account) ne dispose pas des autorisations d'autorisation de page web OAuth nécessaires. Un compte de service prend en charge les scopes snsapi_base et snsapi_userinfo.
WeChat Open Platform
Pour un Captive Portal accédé depuis un navigateur mobile standard en dehors de WeChat (comme Chrome sur Android ou Safari sur iOS), vous devez enregistrer une application de site Web sur la Open Platform (open.weixin.qq.com). Celle-ci utilise le scope snsapi_login et présente un code QR que l'utilisateur scanne avec son application WeChat.
La plupart des déploiements d'entreprise nécessitent les deux enregistrements afin de couvrir toutes les méthodes d'accès.
Sélection du Scope et Collecte de Données
Le paramètre de scope détermine les données que WeChat renvoie à votre serveur de portail. Cette décision a un impact à la fois sur la friction utilisateur et sur la conformité en matière de confidentialité des données.

snsapi_base
Ce scope renvoie uniquement l'OpenID, un identifiant unique pour l'utilisateur au sein de votre compte officiel. Il ne nécessite aucune demande de consentement de l'utilisateur, ce qui rend l'authentification invisible pour ce dernier. C'est la solution idéale pour les visiteurs récurrents pour lesquels vous possédez déjà un profil, ou pour les établissements qui privilégient une friction nulle plutôt que la collecte de nouvelles données.
snsapi_userinfo
Ce scope renvoie l'OpenID ainsi que le pseudo WeChat de l'utilisateur, sa photo de profil, son genre, ses paramètres de langue et sa ville. Il nécessite un écran de consentement explicite, ce qui introduit de la friction. Utilisez cette option pour l'enregistrement des nouveaux visiteurs lorsqu'il est nécessaire de créer un profil, en l'associant à une couche de consentement conforme au GDPR.
Intégration de l'Application des Règles Réseau
L'obtention d'un jeton OAuth prouve l'identité, mais elle n'ouvre pas le réseau. Vous devez traduire une authentification réussie en un accès réseau à l'aide de protocoles standards.
RADIUS Change of Authorisation (CoA)
Défini dans les normes IEEE 802.1X et RFC 3576, le RADIUS CoA permet au serveur du portail d'envoyer une requête au contrôleur réseau après un OAuth réussi. Le contrôleur déplace ensuite l'appareil du VLAN non authentifié vers le VLAN invité. C'est la norme pour le matériel d'entreprise, notamment Cisco Meraki, HPE Aruba, Ruckus et Juniper Mist.
MAC Address Bypass
Alternativement, le serveur du portail enregistre l'adresse MAC de l'appareil en tant que client autorisé, et le contrôleur l'autorise. Bien que plus simple à mettre en œuvre, cette méthode est moins sécurisée car les adresses MAC peuvent être usurpées.
L'overlay cloud de Purple automatise cette traduction, en envoyant le signal approprié au matériel sous-jacent (notamment Ubiquiti UniFi, Cambium, Extreme et Fortinet) une fois le processus WeChat OAuth terminé.
Considérations de Conformité et de Sécurité
Alignement GDPR et PIPL
Si vous accueillez des visiteurs européens, le GDPR s'applique aux données collectées via WeChat OAuth. Si vous accueillez des visiteurs chinois, la loi chinoise sur la protection des informations personnelles (PIPL) s'applique. Les deux cadres exigent une base légale pour le traitement, une limitation claire des finalités et la minimisation des données. Le scope snsapi_base s'aligne plus facilement sur les principes de minimisation des données que le scope snsapi_userinfo.
Protection CSRF
Le paramètre state dans la requête OAuth empêche la falsification de requêtes intersites. Vous devez générer une valeur d'état aléatoire de manière cryptographique, la stocker dans la session de l'utilisateur et la valider lorsque WeChat redirige l'utilisateur.
Validation de l'URI de redirection
WeChat valide le redirect_uri par rapport au domaine autorisé enregistré sur la plateforme. Si votre serveur de Captive Portal utilise un sous-domaine, un chemin ou un protocole HTTP différent au lieu de HTTPS, le flux OAuth échoue avec l'erreur 40029.
Pour plus d'informations sur la sécurisation de votre réseau, consultez notre Enterprise WiFi Security: A Complete Guide for 2026 .
Définitions clés
snsapi_base
Une portée OAuth WeChat qui renvoie uniquement l'OpenID de l'utilisateur sans afficher de demande de consentement.
Utilisé lorsque les équipes informatiques doivent authentifier silencieusement les visiteurs récurrents sans créer de friction lors de la connexion.
snsapi_userinfo
Une portée OAuth WeChat qui renvoie l'OpenID ainsi que des données démographiques (pseudo, genre, ville) et nécessite le consentement explicite de l'utilisateur.
Utilisé lors de la première inscription lorsque les équipes marketing doivent créer un profil de visiteur.
OpenID
Un identifiant unique pour un utilisateur spécifique au sein d'un compte officiel WeChat spécifique.
Utilisé comme clé primaire dans la base de données du Captive Portal pour suivre le comportement des visiteurs et les visites récurrentes.
RADIUS CoA
Change of Authorisation. Un mécanisme défini dans la norme RFC 3576 qui permet à un serveur de modifier l'état d'autorisation d'une session active.
Utilisé par le serveur du Captive Portal pour indiquer au contrôleur sans fil d'accorder l'accès au réseau après une authentification WeChat réussie.
PIPL
Personal Information Protection Law. La réglementation complète de la Chine sur la confidentialité des données.
Doit être pris en compte aux côtés du GDPR lors de la conception du flux de consentement pour les visiteurs chinois utilisant la connexion WeChat.
AppID and AppSecret
Les identifiants fournis par WeChat pour identifier et authentifier votre application.
L'AppSecret doit rester sécurisé sur le serveur du Captive Portal et ne jamais être exposé dans le code côté client.
State Parameter
Une chaîne de caractères aléatoire générée par cryptographie, transmise dans la requête OAuth et validée lors du retour.
Indispensable pour prévenir les attaques de type Cross-Site Request Forgery (CSRF) sur le Captive Portal.
MAC Address Bypass
Une méthode d'octroi d'accès au réseau en autorisant l'adresse matérielle de l'appareil plutôt qu'en exigeant une authentification 802.1X.
Une alternative au RADIUS CoA pour les configurations réseau plus simples, bien que moins sécurisée.
Exemples concrets
Une marque de vente au détail de luxe à Londres souhaite proposer la connexion WeChat aux acheteurs chinois. Elle souhaite collecter des données démographiques pour comprendre sa clientèle, mais s'inquiète de la conformité au GDPR et des taux d'abandon élevés sur le portail.
Le détaillant doit enregistrer un compte de service sur la plateforme WeChat Official Accounts. Il doit configurer le portail pour utiliser la portée snsapi_userinfo lors des premières connexions afin de recueillir des données démographiques (pseudo, sexe, ville). Pour garantir la conformité au GDPR, la page du portail doit afficher un consentement explicite et éclairé avant la redirection vers WeChat, expliquant précisément quelles données sont collectées et pourquoi. Pour les acheteurs de retour, le portail doit détecter l'adresse MAC et utiliser snsapi_base pour une réauthentification silencieuse, minimisant ainsi les frictions.
Un stade déploie un nouveau réseau WiFi à l'aide de contrôleurs HPE Aruba. Ils ont configuré OAuth WeChat, et le portail reçoit avec succès le jeton d'accès, mais l'appareil du visiteur reste bloqué sur la page du captive portal et ne peut pas accéder à Internet.
L'intégration manque d'un mécanisme d'application réseau. Le serveur du portail a vérifié l'identité de l'utilisateur auprès de WeChat, mais il n'a pas ordonné au contrôleur HPE Aruba d'autoriser l'accès. Le serveur du portail doit être configuré pour envoyer un message RADIUS Change of Authorisation (CoA) au contrôleur, lui demandant de faire passer l'adresse MAC de l'utilisateur du rôle de pré-authentification au rôle d'invité authentifié.
Questions d'entraînement
Q1. Vous déployez un Captive Portal au sein d'une chaîne de magasins. Les tests montrent que les utilisateurs ouvrant le portail dans Safari sur iOS reçoivent une erreur lors de la sélection de la connexion WeChat, mais que les utilisateurs ouvrant le portail depuis un lien de message WeChat s'authentifient avec succès. Quelle est la cause probable ?
Conseil : Considérez la différence entre le navigateur intégré de WeChat et les navigateurs mobiles standard.
Voir la réponse type
L'implémentation repose probablement uniquement sur un compte de service (Service Account) enregistré sur la plateforme Official Accounts, qui ne prend en charge OAuth que dans le navigateur intégré de WeChat. Pour prendre en charge Safari sur iOS, vous devez également enregistrer une application de site Web (Website Application) sur la plateforme WeChat Open et implémenter la détection de l'agent utilisateur (user agent) pour diriger les utilisateurs de Safari vers le flux de code QR.
Q2. Les journaux de votre serveur de portail affichent de fréquentes erreurs 40029 "invalid code" renvoyées par l'API WeChat lors de l'échange de jetons d'accès. Quelle configuration devez-vous vérifier en premier ?
Conseil : Pensez à la manière dont WeChat valide la source de la demande d'authentification.
Voir la réponse type
Vous devez vérifier la configuration de l'URI de redirection (redirect_uri). WeChat valide strictement l'URI de redirection par rapport au domaine autorisé enregistré dans la console développeur. Si le portail utilise un sous-domaine différent, ou s'il abandonne le protocole HTTPS, WeChat rejettera l'échange de code.
Q3. Un exploitant de site souhaite collecter les données des visiteurs mais insiste sur un processus de connexion sans aucune friction. Il vous demande de configurer la connexion WeChat pour collecter le pseudo et la ville du visiteur sans afficher de demande de consentement. Que répondez-vous ?
Conseil : Passez en revue les capacités des différents scopes OAuth.
Voir la réponse type
Vous devez informer l'exploitant que cela est techniquement impossible. La collecte de données démographiques telles que le pseudo et la ville nécessite le scope snsapi_userinfo, qui déclenche obligatoirement une demande de consentement WeChat. Pour obtenir une friction nulle, vous devez utiliser snsapi_base, qui fonctionne de manière transparente mais ne renvoie que l'OpenID.
Continuer la lecture de cette série
How to Set Up a Captive Portal on Starlink: A Guide for Remote & Maritime Venues
Ce guide explique comment contourner le matériel Starlink natif et intégrer un Captive Portal géré dans le cloud à l'aide d'équipements de routage d'entreprise. Vous apprendrez à surmonter la limitation du CGNAT, à appliquer la segmentation VLAN, à gérer les contraintes de bande passante par satellite et à garantir la conformité réglementaire.
Bonnes pratiques du Captive Portal : conception pour une conversion élevée et la conformité
Ce guide technique offre aux responsables informatiques, architectes réseau et directeurs d'exploitation de sites un plan complet pour déployer des captive portals équilibrant sécurité réseau et taux de conversion élevé. Il couvre l'ensemble de l'architecture, de la segmentation VLAN et l'authentification RADIUS à la conception de consentements conformes au GDPR et à la sélection des méthodes d'authentification. Issu de l'expérience opérationnelle de Purple sur plus de 80 000 sites et 440 millions de connexions en 2024, chaque recommandation est ancrée dans des données de déploiement réelles.
Comment optimiser les Captive Portals pour une sécurité réseau maximale et une conversion utilisateur optimale
Ce guide fournit un plan technique complet pour optimiser les Captive Portals au sein des entreprises, couvrant l'architecture de segmentation réseau, la sélection des méthodes d'authentification, la conception de formulaires de consentement conformes au GDPR et l'optimisation de la conversion. Il s'adresse aux responsables informatiques, architectes réseau et CTO d'hôtels, de chaînes de magasins, de stades et d'organisations du secteur public qui doivent concilier la sécurité réseau et la collecte de données de première partie. Purple gère l'infrastructure de Captive Portals de plus de 80 000 sites avec 440 millions de connexions en 2024, et les cadres présentés ici reflètent cette expérience opérationnelle.