Description de l'interface du protocole d'authentification matérielle Wi-Fi


Description de l'interface du protocole d'authentification matérielle Wi-Fi


Vue d'ensemble

Le protocole d'authentification matérielle est principalement utilisé pour modifier la méthode d'authentification des appareils de type portail, afin que l'appareil puisse identifier l'identité WeChat pour libérer les clients, rendant ainsi le mobile des clients téléphones et PC rapides et pratiques Connectez-vous au Wi-Fi.

Logique métier

Connexion au Wi-Fi sur mobile

Processus de connexion utilisateur

Le client clique sur le SSID sur le téléphone mobile pour afficher la page du portail, et clique sur le bouton « WeChat Connect » sur la page Wi-Fi » pour accéder à la page de connexion, affichant le logo et le nom du compte officiel. Cliquez sur le bouton « Connecter maintenant » pour commencer la connexion au WiFi. Une fois la connexion réussie, il passera à la page de connexion réussie et suivez le compte officiel du commerçant.


Diagramme de synchronisation du module

Si vous ne voyez pas clairement le texte dans l'image, vous pouvez d'abord enregistrer l'image localement via "Enregistrer l'image sous", puis l'agrandir pour la visualiser.


PC connecté au Wi-Fi

Processus de connexion utilisateur

Une fois que le client a sélectionné le SSID sur le PC, ouvrez la page du portail dans le navigateur et le Wi-Fi 2D L'affichage s'affiche sur le code de la page. Utilisez WeChat sur votre téléphone mobile pour scanner le code QR, cliquez sur le bouton « Confirmer » sur la page du téléphone mobile, connectez votre PC au Wi-Fi et la page du portail du navigateur passera automatiquement à la page Web configurée par le commerçant.


Schéma de synchronisation du module

Si vous ne voyez pas clairement le texte dans l'image, vous pouvez d'abord enregistrer l'image localement via "Enregistrer l'image sous", puis l'agrandir pour la visualiser.


Processus de mise en œuvre du terminal mobile

Veuillez suivre les étapes ci-dessous pour terminer la transformation de l'appareil et permettre aux appareils mobiles d'utiliser WeChat pour se connecter au Wi-Fi.

La première étape : obtenir les informations Wi-Fi du magasin

La première étape pour transformer l'équipement de type portail consiste à obtenir les informations Wi-Fi du magasin, notamment : appId, shop_id, ssid, secretkey. Il existe deux manières d'obtenir les informations Wi-Fi du magasin :

1.

Dans la Plateforme publique WeChatPlug-in WeChat Wi-Fi, ouvrez [Gestion des appareils]->[Ajouter un appareil], ajoutez « Ajouter une méthode WeChat pour se connecter à Internet + service en champ proche après connexion à Internet"- >"Périphérique de type portail" ; après l'ajout réussi, vous pouvez obtenir les informations sur les paramètres Wi-Fi du magasin.

Les appareils ajoutés peuvent également obtenir des informations sur les paramètres Wi-Fi du magasin dans [Détails de l'appareil] -> [Afficher les informations de modification de l'appareil].

2. Appelez l'interface pour obtenir

Appelez l'interface "Ajouter un périphérique de portail" pour obtenir.

Étape 2 : Transformer la page du portail mobile

Si l'appareil connecté est un appareil mobile, citez le JSAPI WeChat suivant dans la page du portail pour permettre à la page du portail Wi-Fi d'origine d'appeler les capacités WeChat :

<script type="text/javascript"    
src="https://wifi.weixin.qq.com/resources/js/wechatticket/wechatutil.js" ></script>

Appelez JSAPI pour déclencher le client WeChat :

Wechat_GotoRedirect(
appId,      
extend,     
timestamp, 
sign,       
shop_id,   
authUrl,   
mac,      
ssid );

Exemple spécifique :

Wechat_GotoRedirect(
'wx23fb4aaf04b8491e',  
'demoNew',            
'1441768153341',          
'a355c78bad9be9235d2105d28f8e010c',   
'6747662',  
'http://wifi.weixin.qq.com/assistant/wifigw/auth.xhtml?httpCode=200',       
'aa:aa:aa:aa:aa:aa',     
'2099');

Description du paramètre

Le paramètre est-il obligatoire ? Description
appId est le compte de la plateforme publique WeChat du marchand
extendOui extend peut être inclus Mettre une collection de paramètres pertinents dont les développeurs ont besoin , qui sera à terme transmis de manière transparente à l'URL d'authentification de l'opérateur. Le paramètre extend ne prend en charge que l'anglais et les chiffres, et la longueur ne doit pas dépasser 300 caractères.
timestamp est horodatage en millisecondes
sign est signature du paramètre de demande, la méthode de calcul spécifique est expliquée ci-dessous
shopId est L'identifiant du magasin où l'appareil AP est localisé, c'est-à-dire que shop_id
authUrl est l'URL du serveur d'authentification Le client WeChat soumettra les informations d'identité WeChat de l'utilisateur à cette URL et obtiendra l'authentification et la libération
mac. Appareil Android requisadresse mac du téléphone portable de l'utilisateur, le format est séparé par deux points, la longueur des caractères est de 17 et les lettres sont en minuscules, par exemple : 00:1f:7a:ad:5c:a8
ssid est le nom du réseau sans fil du appareil AP

Méthode de calcul de la signature :

sign = MD5(appId + extend + timestamp + shopId + authUrl + mac + ssid + secretkey);

Remarque : L'horodatage ici est l'horodatage actuel en millisecondes.

Étape 3 : Prise en charge de la libération temporaire des demandes d'accès à Internet

Veuillez vous assurer que l'AP/AC peut temporairement libérer les demandes d'accès à Internet de l'utilisateur après l'ouverture de la page du portail. Ce n'est que lorsque la version temporaire réussit que le JSAPI mentionné ci-dessus peut être appelé pour appeler WeChat en échange d'informations sur l'identité de l'utilisateur afin de garantir que les demandes d'authentification ultérieures sont complétées avec succès et que le réseau est connecté avec succès.

Remarque : lorsque vous appelez WeChat sur IOS, si le réseau n'est pas disponible, le Wi-Fi sera coupé, provoquant l'échec de la connexion réseau. Par conséquent, veuillez vous assurer que l'AC/AP prend en charge la libération temporaire des demandes d'accès à Internet.

Le navigateur Web de certains appareils Android ne peut pas lancer automatiquement le client WeChat. Veuillez vous référer à la solution dans la FAQ.

Étape 4 : Accepter l'authentification et la libération de l'identité WeChat

Une fois le client WeChat appelé, il lancera automatiquement une demande d'authUrl (paramètre entrant de JSAPI) et soumettra à l'utilisateur les paramètres d'informations d'identité WeChat requis pour authentification, y compris extend, openId, tid.

Exemple de client WeChat envoyant une demande à authUrl :

http://www.foo.com/portal/auth.html?extend=xxx&openId=xxx&tid=xxx

Description du paramètre

Paramètre Description
extend est le paramètre d'extension transmis lors de l'appel du JSAPI WeChat ci-dessus, qui est renvoyé à la page d'accueil du marchand tel quel
openIdL'openId WeChat de l'utilisateur
tid est le numéro de téléphone portable crypté de l'utilisateur (utilisé uniquement pour le classement par le service de supervision du réseau)

Le serveur d'authentification en arrière-plan correspondant à authUrl doit être capable d'identifier ces informations de paramètres et de renvoyer le résultat de l'authentification AC au client WeChat. Le client WeChat demandera à l'utilisateur si la connexion a réussi ou non en fonction du code de retour http.

Si le code de retour http est 200, on considère que l'authentification du service est réussie. Le client WeChat accède à la page de connexion réussie. Une fois que l'utilisateur a cliqué sur le bouton « Terminer », il accède à la page d'accueil du commerçant ; le serveur d'authentification doit transférer la demande d'authentification, veuillez renvoyer 302 et l'adresse du saut suivant, le client WeChat lancera une autre demande vers l'adresse du saut suivant, et le saut 302 n'est pris en charge qu'une seule fois pour les non-200 et 302, ou le retour 302 ; les codes dépassant le nombre de fois, cela est considéré comme un échec d'authentification, et cette connexion Le réseau échoue et le client WeChat passe à la page d'échec de connexion.

Remarque : le temps d'attente pour une demande de client WeChat est de 10 s. Veuillez vous assurer que le serveur d'authentification en arrière-plan renvoie le résultat de l'authentification AC, c'est-à-dire le code de retour http, dans les 10 s après que le client WeChat envoie une demande à authUrl. Le fait de ne pas renvoyer un résultat d'authentification pendant plus de 10 secondes sera considéré comme un échec d'authentification.

Étape 5 : Scannez le code QR pour vous connecter à Internet

Après avoir terminé les étapes un à quatre, effectuez la configuration suivante pour permettre au périphérique portail de scanner le code QR pour se connecter au Wi-Fi. Les opérations spécifiques sont les suivantes :

1. Modifier le contenu du saut du serveur de portail

.

Lorsqu'un utilisateur de téléphone mobile non authentifié tente de se connecter à Internet, AC redirige la requête http de l'utilisateur vers la page du portail sur le serveur du portail. Ici, AC doit identifier davantage si la requête http provient du client WeChat, elle sera redirigée. Apportez simplement les deux paramètres convenus authUrl et extend sur l'URL.

http://www.foo.com/portal/portal.html?authUrl=http%3A%2F%2Fwww.foo.com%2Fportal%2Fauth.html&extend=xxx
Paramètre Description
authUrl est l'authUrl renseignée dans la page du portail lors de la deuxième étape, qui est l'URL du serveur d'authentification. Le client WeChat soumettra les informations d'identité WeChat de l'utilisateur à cette URL. et obtenir l'authentification Release
extend est le paramètre d'extension transmis lors de l'appel du WeChat JSAPI ci-dessus, qui est renvoyé à la page d'accueil du marchand tel quel

2. Comment identifier si la requête http provient du client WeChat

Il suffit d'analyser "User-Agent" dans la structure d'en-tête du paquet http pour déterminer s'il contient le mot-clé "micromessenger" (veuillez faire attention pour ne pas intercepter d'autres requêtes http WeChat, veuillez donc bien faire correspondre les mots-clés), l'exemple de code est le suivant :

...
String userAgent = request.getHeader("User-Agent");
if(userAgent.matches(".*micromessenger.*")){
	  response.sendRedirect("http://www.foo.com/portal/portal.html?authUrl=http%3A%2F%2Fwww.foo.com%2Fportal%2Fauth.html&extend=xxx ");			
}
...

Le client WeChat analysera l'authUrl et étendra les paramètres dans l'adresse de saut du serveur Portal et continuera à terminer le processus de connexion.

3. Empêcher IOS d'afficher automatiquement la page du portail

Afin d'empêcher IOS d'afficher automatiquement la page du portail lors du changement de SSID, veuillez modifier l'adresse de détection d'IOS "http://captive.apple .com/hotspot-detect. html dans la liste blanche.

4. Téléchargez le code QR du matériel

Après avoir terminé la transformation du serveur de portail, appelez l'interface « Obtenir le code QR du matériel » pour télécharger le code QR du magasin et le publier dans le magasin. pour vous connecter au Wi-Fi.


Exemple de page de portail mobile Démo

Veuillez vous référer à l'exemple de démo pour transformer la page du portail mobile (le code JS est directement dans la page)

Veuillez utiliser navigateur mobile pour ouvrir le lien suivant (peut être saisi manuellement, vous pouvez également scanner le code pour obtenir l'adresse du lien) :

https://wifi.weixin.qq.com/operator/demoNew.xhtml

Si vous utilisez WeChat pour scanner le code, veuillez cliquer sur le bouton dans le coin supérieur droit et sélectionner la page « Ouvrir dans le navigateur », ne l'expérimentez pas directement dans le navigateur WeChat.


FAQ

1. Le navigateur Web de certains téléphones Android ne peut pas appeler automatiquement le client WeChat

La version Android de WeChat 6.2.5 et supérieure prend déjà en charge l'ouverture manuelle du client et la poursuite de la connexion. fonction de processus. Pour garantir le bon déroulement de ce processus, les développeurs doivent prêter attention aux points suivants :

1.保证微信客户端版本为6.2.5以上的Android版微信;
2.参考示例demo中jsapi的写法,在无法自动跳转微信客户端时弹出提示,让用户手动切换到微信;
3.在portal页面中调用微信jsapi时,需保证AP设备的ssid和手机mac这2个参数真实有效;
4.测试过程请从切换到目标ssid动作开始(例如:原来为3G或4G网络然后手动选择目标ssid,原来为非目标ssid的wifi信号然后手动选择目标ssid,等等)。

2. Comment s'assurer que le téléphone reste sous le SSID cible après avoir sauté de la page du portail vers WeChat sur IOS ?

Afin de garantir que le Wi-Fi est disponible, le système IOS ne basculera pas vers celui-ci immédiatement après que l'utilisateur a sélectionné un SSID. Il détectera plutôt si le service par défaut sur le réseau public est accessible via le SSID. S'il peut être reniflé, c'est seulement alors que la connexion au SSID apparaît réellement. Dans l'environnement AP où le portail apparaît, ce point est utilisé pour afficher la page du portail. Si l'authentification est terminée sur la page du portail, l'invite dans le coin supérieur droit du portail passera de « Annuler » à « Terminer ». ". Si vous laissez cette interface à l'état "Complet", le SSID que vous venez de sélectionner sera déconnecté et reviendra à la dernière connexion disponible. Cependant, si vous laissez cette interface à l'état "Complet", elle ne sera pas déconnectée.

Étant donné que l'interface du portail passera à WeChat lors du passage de l'authentification WeChat, il est indispensable de garantir le statut « Complet » dans le coin supérieur droit du portail. Les développeurs doivent prêter attention aux points suivants :

1.确保弹出portal后,临时放行手机的所有流量;
2.临时放行手机的所有流量后,局部或整体刷新portal页面触发IOS再次进行嗅探;
3.IOS嗅探可以正常触达公网上的预设服务后“取消”变为“完成”;
4.以上动作完成后,再调用跳转微信的JSAPI,继而跳转微信完成认证连接流程。


Processus de mise en œuvre côté PC

Veuillez suivre les étapes ci-dessous pour utiliser WeChat pour vous connecter au Wi-Fi côté PC.

La première étape : obtenir les informations Wi-Fi du magasin

La première étape pour connecter le PC au Wi-Fi consiste à obtenir les informations Wi-Fi du magasin, notamment : appId, shop_id. Il existe deux façons d'obtenir les informations Wi-Fi du magasin :

1. Obtenez via l'opération de page

Ouvrez le plug-in WeChat Wi-Fi sur la Plateforme publique WeChat, dans [Gestion des appareils]->[ Ajouter un appareil] , ajoutez « Ajouter une méthode WeChat pour se connecter à Internet + service en champ proche après la connexion à Internet » -> « Appareil de type portail » une fois l'ajout réussi, vous pouvez obtenir les informations sur les paramètres Wi-Fi du magasin.

Les appareils ajoutés peuvent également obtenir des informations sur les paramètres Wi-Fi dans [Détails de l'appareil] -> [Afficher les informations de modification de l'appareil].

2. Obtenez le shop_id via l'interface

Appelez l'interface "Obtenir la liste des magasins WiFi", qui est l'ID du magasin auquel l'appareil doit être ajouté.

Étape 2 : Modifier la page du portail PC

Si l'appareil connecté est un PC, citez le JSAPI WeChat suivant dans la page du portail afin que la page du portail Wi-Fi d'origine ait la possibilité d'appeler Capacité WeChat :

<script type="text/javascript"    
src="https://wifi.weixin.qq.com/resources/js/wechatticket/pcauth.js" ></script>

Appelez JSAPI pour générer un code QR. L'exemple de code spécifique est le suivant :

 <script type="text/javascript">
	    JSAPI.auth({
	    	target : document.getElementById('qrcode_zone'),
	        appId : 'wx23fb4aaf04b8491e',
	        shopId : 6747662,
	        extend : 'wechatpc',
	        authUrl : 'http://wximg.qq.com/tmt/wifi-landing-pc/dist/html/index-success.html'
	    });
</script>

Description du paramètre

.
Le paramètre est-il obligatoire ? Description
target est Emplacement de placement de l'image du code QR
appId est compte de la plateforme publique WeChat du marchand
shopId OuiC'est-à-dire shop_id, l'ID du magasin où se trouve l'appareil (magasin de la plateforme publique WeChat)
extendOuiextend peut contenir un ensemble de paramètres pertinents dont le développeur a besoin, qui sera éventuellement transmis de manière transparente à l'URL de certification de l'opérateur. Le paramètre extend ne prend en charge que l'anglais et les chiffres, et la longueur ne doit pas dépasser 300 caractères.
authUrl est l'URL du serveur d'authentification Le client WeChat soumettra les informations d'identité WeChat de l'utilisateur à cette URL et obtiendra l'authentification et la libération
.


Étape 3 : Prise en charge de la version sur liste blanche sur PC

AP/AC doit mettre la version sur liste blanche sur PC pour prendre en charge le référencement de la page du portail jsapi, interroger l'arrière-plan de WeChat et obtenir openid et tid.

Veuillez ajouter la prise en charge de l'URL de WeChat se connectant au Wi-Fi. L'URL est :

https://wifi.weixin.qq.com/

pour prendre en charge :

1. Citer jsapi :

https://wifi.weixin.qq.com/resources/js/wechatticket/pcauth.js

2.

https://wifi.weixin.qq.com/cgi-bin/pollpcresult

Étape 4 : Prendre en charge la libération temporaire des demandes d'accès Internet du côté mobile

Veuillez vous référer à la troisième étape du processus de mise en œuvre de l'extrémité mobile pour prendre en charge la libération temporaire des demandes d'accès Internet du côté mobile .

Étape 5 : Accepter l'authentification et la libération de l'identité WeChat

Veuillez vous référer à la quatrième étape du processus de mise en œuvre mobile pour accepter l'authentification et la libération de l'identité WeChat.

Exemple de page PC Portal Démo

Veuillez vous référer à l'exemple Démo pour modifier la page PC Portal (le code JS est directement dans la page) :

https://wifi.weixin.qq.com/operator/demoForPc.xhtml



Méthode d'authentification hors ligne

L'environnement Wi-Fi ne peut pas libérer temporairement le trafic utilisateur pour la communication avec le Le backend WeChat peut être réalisé en utilisant l’authentification hors ligne. Veuillez suivre les étapes ci-dessous pour utiliser WeChat et vous connecter au Wi-Fi sur votre appareil mobile.


Diagramme de synchronisation du module

Si vous ne voyez pas clairement le texte dans l'image, vous pouvez d'abord enregistrer l'image en local via "Enregistrer l'image sous", puis l'agrandir pour la visualiser



Étape 1 : Obtenir les informations Wi-Fi du magasin

Veuillez vous référer à l'Étape 1 du processus de mise en œuvre du terminal mobile pour obtenir les informations Wi-Fi du magasin.


Étape 2 : Modifier la page du portail mobile

Référencez le lien pour appeler WeChat hors ligne dans la page du portail, afin que la page du portail Wi-Fi d'origine puisse appeler les fonctionnalités du client WeChat. Le format du lien est le suivant :

 function callWechatBrowser(){
	var appId = getParam('appId');
	var shopId = getParam('shopId');
	var authUrl = getParam('authUrl');
	var extend = getParam('extend');
	var timestamp = getParam('timestamp');
	var sign = getParam('sign');
	var weixinUrl = 'weixin://connectToFreeWifi/?apKey=_p33beta&appId='+appId+'&shopId='+shopId+'&authUrl='+authUrl+'&extend='+extend+'&timestamp='+timestamp+'&sign='+sign;	
	window.location=weixinUrl;
}

Description du paramètre


Le paramètre est-il obligatoire ? Description
appId est le compte de la plateforme publique WeChat du marchand
shopId est c'est-à-dire shop_id, où l'appareil est Store ID (WeChat magasin de plate-forme publique)
authUrl est l'URL du serveur d'authentification Le client WeChat soumettra les informations d'identité WeChat de l'utilisateur à cette URL et obtiendra la certification et la libération. La valeur de authUrl est codée en URL, telle que : http%3A%2F%2F192.168.1.1%2Fauth.html%3Ft%3Dabc%26s%3D123
extend est extend peut être à l'intérieur Mettez le jeu de paramètres pertinent dont le développeur a besoin, et il sera éventuellement transmis de manière transparente à l'URL d'authentification de l'opérateur. Le paramètre extend ne prend en charge que l'anglais et les chiffres, et la longueur ne doit pas dépasser 300 caractères.
timestamp est horodatage en millisecondes
sign est signature du paramètre de demande, la méthode de calcul spécifique est expliquée ci-dessous


Méthode de calcul de la signature :

sign = MD5(appId + extend + timestamp + shop_id + authUrl + mac + ssid + secretkey);

Remarque : L'horodatage ici est l'horodatage actuel en millisecondes. authUrl est au format URL non codé lors de la signature, tel que : http://192.168.1.1/auth.html?t=abc&s=123


Étape 3 : Prise en charge de l'identité WeChat libération d'authentification

Une fois le client WeChat appelé, il lancera automatiquement une demande d'authentification à authUrl et soumettra le paramètre d'extension. L'identité WeChat de l'utilisateur (paramètre tid) sera transmise via la page d'accueil du commerçant. Les développeurs doivent veiller à l'obtenir en arrière-plan de la page d'accueil du commerçant. Exemple de client WeChat envoyant une demande à authUrl :

http://www.foo.com/portal/auth.html?extend=xxx

Description du paramètre

Si le code de retour http est 200, on considère que l'authentification du service est réussie. Le client WeChat accède à la page de connexion réussie. Une fois que l'utilisateur a cliqué sur le bouton « Terminer », il accède à la page d'accueil du commerçant ; le serveur d'authentification doit transférer la demande d'authentification, veuillez renvoyer 302 et l'adresse du saut suivant, le client WeChat lancera une autre demande vers l'adresse du saut suivant, et le saut 302 n'est pris en charge qu'une seule fois pour les non-200 et 302, ou le retour 302 ; les codes dépassant le nombre de fois, cela est considéré comme un échec d'authentification, et cette connexion Le réseau échoue et le client WeChat passe à la page d'échec de connexion.
Paramètre Description
extend est le paramètre d'extension transmis lors de l'appel de la JSAPI WeChat ci-dessus. Il est renvoyé tel quel à la page d'accueil du commerçant. Le serveur d'authentification en arrière-plan correspondant à l'authUrl doit pouvoir le faire. Identifiez ces informations de paramètre et renvoyez le résultat de l'authentification AC au client WeChat. Le client WeChat demandera à l'utilisateur si la connexion a réussi ou non en fonction du code de retour http.
Remarque : le temps d'attente pour une demande de client WeChat est de 10 s. Veuillez vous assurer que le serveur d'authentification en arrière-plan renvoie le résultat de l'authentification AC, c'est-à-dire le code de retour http, dans les 10 s après que le client WeChat envoie une demande à authUrl. Le fait de ne pas renvoyer un résultat d'authentification pendant plus de 10 secondes sera considéré comme un échec d'authentification.