Les exigences de l'établissement d'un serveur de portail externe (ci-dessus Omada Controller 4.1.5)
Convient pour Omada Controller V4.1.5 ou supérieur
Si la version de votre contrôleur Omada est inférieure à Omada Controller 4.1.5, veuillez consulter la FAQ 2274
Si la version de votre contrôleur Omada est inférieure à Omada Controller 2.6.0, veuillez consulter la FAQ 928
Ce document décrit les exigences lors de la création d'un serveur de portail externe. L'image ci-dessous illustre le flux de données entre le client sans fil, le périphérique EAP, le contrôleur Omada, le serveur de portail et le serveur d'authentification, ce qui peut vous aider à mieux comprendre les exigences de l'établissement d'un serveur de portail externe.
- Le client sans fil est connecté au SSID sur lequel l'authentification du portail est activée et tente d'accéder à Internet. Le périphérique EAP interceptera la requête HTTP du client, puis la redirigera vers le contrôleur Omada. Le client câblé est connecté au réseau dont l'authentification du portail est activée et tente d'accéder à Internet. La passerelle interceptera la requête HTTP du client, puis redirigera également vers le contrôleur Omada. Le client enverra ensuite la requête GET au contrôleur Omada avec la chaîne de requête «cid = client_mac & ap = ap_mac & ssid = ssid_name & t = time_since_epoch & rid = Radio_id» dans l'URL en fonction de la réponse HTTP qu'il reçoit de l'EAP. (Étape 1 et Étape 2)
- Le contrôleur Omada redirige ensuite le client vers le serveur de portail externe en répondant à une réponse HTTP avec le code d'état 302 Trouvé au client. La réponse HTTP avec ce code d'état fournira en outre l'URL du serveur de portail externe dans le champ d'emplacement. L'URL contient également la chaîne de requête. Pour Omada Controller 4.1.5 ou supérieur, l'URL pour EAP est http: // portal_server_ip? ClientMac = client_mac & apMac = ap_mac & ssidName = ssid_name & t = time_since_epoch & radioId = Radio_id & site = site_name & redirectUrl = xx. . L'URL de la passerelle est http: // portal_server_ip? ClientMac = client_mac & gatewayMac = gateway_mac & vid = vid & t = time_since_epoch & site = site_name & redirectUrl = xx . (Étape 3 et Étape 4)
La signification des paramètres est indiquée dans le tableau 1 Explication des paramètres.
clientMac |
L'adresse MAC du client. |
apMac |
L'adresse MAC de l'EAP auquel le client est connecté. |
passerelleMac |
L'adresse MAC de la passerelle. |
à |
L'ID VLAN du réseau câblé qui active la fonction de portail. |
ssidName |
Le nom SSID connecté. |
t |
Le nombre de secondes depuis l'époque, 1970-01-01 00:00:00 |
radioId |
L'identifiant radio du SSID connecté où 0 représente 2,4G et 1 représente 5G. |
site |
Le nom du site. |
redirectUrl |
L'URL définie dans l'élément de configuration de la page de destination dans l'interface de gestion. (Fournissez uniquement les paramètres au serveur de portail, l'interface de redirection réelle est déterminée par le serveur de portail.) |
- Le client enverra la requête GET au serveur de portail externe en utilisant l'URL mentionnée ci-dessus. (Étape 5)
4.Le serveur de portail externe doit être capable d'intercepter et de conserver un enregistrement des paramètres dans la chaîne de requête de la requête GET et de renvoyer une page Web avec un formulaire d'authentification au client sans fil. (Étape 6)
- Les informations d'authentification du client seront soumises au serveur de portail et le serveur de portail soumettra les informations au serveur d'authentification (étapes 7 et 8). Cependant, la façon dont le serveur de portail obtient les informations d'authentification du client et la façon dont le serveur de portail communique avec le serveur d'authentification dépendent de votre propre implémentation, qui est hors de la portée de cet article.
- Le serveur d'authentification vérifie les informations d'authentification et renvoie le résultat au serveur de portail. (Étape 9)
REMARQUE: Dans cet exemple, le serveur de portail et le serveur d'authentification sont séparés. Mais ils peuvent être installés sur le même serveur que vous le souhaitez. La méthode d'authentification dépend également de vous. Assurez-vous simplement que le serveur de portail sait quand l'authentification est réussie.
- Si l'authentification réussit, le serveur de portail doit envoyer les informations client au contrôleur Omada en appelant l'API du contrôleur Omada. Tout d'abord, il doit se connecter au contrôleur Omada en envoyant une requête POST . L' URL de la demande sera https: // hôte: port / hotspot / login et portera les données «nom = le_username_of_ operator & password = the_password_of_operator» au format JSON dans le corps du message HTTP.
L'interface d'appel est POST / api / v2 / hotspot / login. Le paramètre de passage est JSON: {nom: xxx, mot de passe: xxx}. Veuillez noter que le compte et le mot de passe ici sont l'opérateur ajouté dans l'interface du gestionnaire de hotspot, et non le compte et le mot de passe pour la connexion au contrôleur.
Par exemple,
connexion à une fonction statique privée ()
{
$ ch = curl_init ();
// post
curl_setopt ($ ch, CURLOPT_POST, TRUE);
// Définit le retour sur une valeur, pas le retour à la page
curl_setopt ($ ch, CURLOPT_RETURNTRANSFER, 1);
// Configurer les cookies
curl_setopt ($ ch, CURLOPT_COOKIEJAR, COOKIE_FILE_PATH);
curl_setopt ($ ch, CURLOPT_COOKIEFILE, COOKIE_FILE_PATH);
// Autoriser les certificats auto-signés
curl_setopt ($ ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt ($ ch, CURLOPT_SSL_VERIFYHOST, FALSE);
// Appel API
curl_setopt ($ ch, CURLOPT_URL, CONTROLLER_SERVER. "/ login");
curl_setopt ($ ch, CURLOPT_POSTFIELDS, "nom =". OPERATOR_USER. "& password =". OPERATOR_PASSWORD);
$ res = curl_exec ($ ch);
$ resObj = json_decode ($ res);
// Empêcher CSRF
if ($ resObj-> success == true) {
self :: setCSRFToken ($ resObj-> valeur);
}
curl_close ($ ch);
}
fonction statique privée setCSRFToken ($ token) {
$ myfile = fopen (TOKEN_FILE_PATH, "w") ou die ("Impossible d'ouvrir le fichier!");
fwrite ($ myfile, $ token);
fclose ($ monfichier);
return $ token;
}
(Étape 10)
- Si le serveur de portail s'est connecté avec succès au contrôleur, il enverra alors les informations client à https: // controller_server_ip: https_port / api / v2 / hotspot / extPortal / auth? Token = CSRFToken en utilisant la méthode POST . Les données d'information peuvent être représentées par JSON farmat et doivent contenir les paramètres ci-dessous.
Pour EAP, clientMac = client_mac & apMac = ap_mac & ssidName = ssid_name & t = time_since_epoch & radioId = Radio_id & site = site_name & time = expire_time
Pour la passerelle,
clientMac = client_mac & gatewayMac = gateway_mac & vid = vid & t = time_since_epoch & site = site_name & time = expire_time
Par exemple (pour EAP),
fonction statique privée authorize ($ clientMac, $ apMac, $ ssidName, $ radioId, $ t, $ seconds, $ site)
{
// Envoyer l'utilisateur à autoriser et le temps imparti
$ authInfo = tableau (
'clientMac' => $clientMac,
'apMac' => $apMac,
''ssidName => $ssidName,
'radioId' => $ radioId,
't' => $ t,
'time' => $ secondes
);
$ ch = curl_init ();
// post
curl_setopt ($ ch, CURLOPT_POST, TRUE);
// Définit le retour sur une valeur, pas le retour à la page
curl_setopt ($ ch, CURLOPT_RETURNTRANSFER, 1);
// Configurer les cookies
curl_setopt ($ ch, CURLOPT_COOKIEJAR, COOKIE_FILE_PATH);
curl_setopt ($ ch, CURLOPT_COOKIEFILE, COOKIE_FILE_PATH);
// Autoriser les certificats auto-signés
curl_setopt ($ ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt ($ ch, CURLOPT_SSL_VERIFYHOST, FALSE);
// Appel API
$ csrfToken = self :: getCSRFToken ();
curl_setopt ($ ch, CURLOPT_URL, CONTROLLER_SERVER. "/ extportal /". $ site. "/ auth". "? token =". $ csrfToken);
$ data = json_encode ($ authInfo);
curl_setopt ($ ch, CURLOPT_POSTFIELDS, http_build_query ($ authInfo));
$ res = curl_exec ($ ch);
$ resObj = self :: resultConvert ($ res);
if ($ resObj ['succès'] == false) {
echo $ res;
}
curl_close ($ ch);
}
fonction statique privée resultConvert ($ json)
{
$ json = str_replace (tableau ('{', '}', ':', ','), tableau ('[{"', '}]', '":', ', "'), $ json );
fonction cb_quote ($ v)
{
return '"' .trim ($ v [1]). '"';
}
$ newJSON = preg_replace_callback ("~ \" (. *?) \ "~", "cb_quote", $ json);
$ res = json_decode ($ newJSON, true) [0];
return $ res;
}
fonction statique privée getCSRFToken () {
$ myfile = fopen (TOKEN_FILE_PATH, "r") or die ("Impossible d'ouvrir le fichier!");
$ token = fgets ($ monfichier);
fclose ($ monfichier);
return $ token;
}
(Étape 11)
La signification de ces paramètres est la même que dans le tableau 1 Explication des paramètres. Le paramètre time est ici le nombre de secondes avant l'expiration de l'authentification client. Ce paramètre est défini par le serveur de portail.
- Le contrôleur Omada renvoie un message JSON : {"success": [true / false], "message": "return information"} au serveur de portail après que le contrôleur Omada a traité les informations fournies dans la requête HTTP POST. La manière dont le serveur de portail traite le message JSON dépend de votre propre implémentation. (Étape 12)
TOKEN_FILE_PATH est un fichier qui enregistre le CSRFToken renvoyé par la demande de connexion, les clients peuvent le configurer eux-mêmes.
Remarque: pour appeler l'API avec succès, votre serveur de portail doit être configuré pour atteindre les deux points suivants:
- Autoriser le certificat auto-signé;
- Lisez le paquet https du serveur, enregistrez le TPEAP_SESSIONID dans la demande Cookie ,avec ce cookie à l'avenir.
Est-ce que ce FAQ a été utile ?
Vos commentaires nous aideront à améliorer ce site.