Les exigences de l'établissement d'un serveur de portail externe (au-dessus du contrôleur SDN Omada 5.0.15)
Convient au contrôleur Omada 5.0.15 ou supérieur.
Pour Omada Controller 4.1.5 à 4.4.6, veuillez vous référer à la FAQ 2907
Pour Omada Controller 2.6.0 à 3.2.17, veuillez vous référer à la FAQ 2274
Par rapport à Omada SDN Controller v4, les principaux changements sont les suivants :
1. Ajoutez l'ID du contrôleur à l'URL pour la connexion au point d'accès et la soumission des informations client.
2. Ajoutez l'en-tête HTTP, qui contient le jeton CSRF.
Remarque : Les mots-clés en gras et italique indiquent des paramètres qui sont automatiquement renseignés par EAP ou Gateway et doivent être correctement identifiés et fournis par votre serveur de portail externe. La signification des paramètres est indiquée lors de la première apparition.
Ce document décrit les conditions requises pour établir un serveur de portail externe ( portail en abrégé). L'image ci-dessous représente le flux de données entre les périphériques réseau, ce qui peut aider à mieux comprendre le mécanisme de fonctionnement.
Étapes 1 et 2.
Lorsqu'un client est connecté au réseau sans fil ou filaire lié avec un portail activé et tente d'accéder à Internet, sa requête HTTP sera interceptée par EAP ou Gateway, respectivement, puis redirigée vers le contrôleur Omada SDN (contrôleur en abrégé) le long de avec les informations de connexion qui sont renseignées automatiquement par EAP ou Gateway dans l'URL.
Étapes 3 et 4.
Après cela, le client enverra une requête HTTP GET avec les informations de connexion au contrôleur et sera redirigé vers le portail par la réponse du contrôleur avec une réponse HTTP avec le code d'état 302. La réponse HTTP inclut l'URL du portail dans le champ d'emplacement ainsi que la connexion. information.
URL du PAE :
http(s):// PORTAIL ? clientMac= CLIENT_MAC &apMac= AP_MAC &ssidName= SSID_NAME &t= TIME_SINCE_EPOCH &radioId= RADIO_ID &site= SITE_NAME &redirectUrl= LANDING_PAGE .
URL de la passerelle :
http(s):// PORTAIL ? clientMac= CLIENT_MAC &gatewayMac= GATEWAY_MAC &vid= VLAN_ID &t= TIME_SINCE_EPOCH &site= SITE_NAME &redirectUrl= LANDING_PAGE .
PORTAIL |
L'adresse IP ou l'URL et le numéro de port (si nécessaire) du serveur de portail externe. |
|
clientMac |
CLIENT_MAC |
Adresse MAC du client. |
apMac |
AP_MAC |
Adresse MAC de l'EAP auquel le client est connecté. |
passerelleMac |
GATEWAY_MAC |
Adresse MAC de la passerelle. |
vidéo |
ID_VLAN |
ID VLAN du réseau filaire auquel le client est connecté. |
nom_ssid |
SSID_NAME |
Nom du SSID auquel le client est connecté |
identifiant radio |
ID_RADIO |
ID radio de la bande à laquelle le client est connecté, où 0 représente 2,4G et 1 représente 5G. |
site |
NOM DU SITE |
Nom du site. |
URL de redirection |
LANDING_PAGE |
URL à visiter après une authentification réussie, qui peut être définie dans la page de destination. |
t |
TIME_SINCE_EPOCH |
L'unité ici est la microseconde. |
Étapes 5 et 6.
Le client enverra la requête HTTP GET au portail avec l'URL ci-dessus. Le portail doit être capable de reconnaître et de conserver les informations de connexion dans la chaîne de requête de la requête HTTP GET et de renvoyer la page Web pour authentification.
Étapes 7, 8 et 9.
Le client soumettra les informations d'authentification au portail, qui seront transmises au serveur d'authentification et vérifiées. Le serveur d'authentification renvoie ensuite le résultat de l'authentification au portail.
Vous pouvez décider comment Portal obtient les informations d'authentification du client et comment Portal communique avec le serveur d'authentification, en fonction de vos propres besoins, ce qui dépasse le cadre de cet article.
REMARQUE : Dans la figure ci-dessus, le portail et le serveur d'authentification sont séparés. Vous pouvez les installer sur le même serveur que vous le souhaitez. La méthode d'authentification dépend également de vous. Assurez-vous simplement que Portal peut connaître le résultat de l'authentification du serveur d'authentification.
Étapes 10 et 11.
Si la demande d'authentification est autorisée, le portail doit envoyer les informations client au contrôleur en appelant son API.
Tout d’abord, il doit se connecter au Controller en envoyant une requête HTTP POST . L'URL de la requête doit être https:// CONTROLLER : PORT / CONTROLLER_ID /api/v2/hotspot/login et doit contenir les informations du compte de l'opérateur au format JSON dans le corps du message HTTP : {"name": " OPERATOR_USERNAME ","password " : " OPERATOR_PASSWORD "}.
Notez que le compte et le mot de passe ici sont l'opérateur ajouté dans l'interface du gestionnaire de hotspot, plutôt que le compte et le mot de passe du compte du contrôleur.
MANETTE |
Adresse IP ou URL du contrôleur Omada SDN. |
PORT |
Port HTTPS pour la gestion du contrôleur Omada SDN (8043 pour le logiciel et 433 pour OC par défaut, accédez à Paramètres --- Contrôleur --- Configuration d'accès pour modification). |
CONTROLLER_ID |
Identifiant du contrôleur Omada SDN. Lorsque vous accédez au contrôleur, l'identifiant sera automatiquement ajouté à l'URL, à partir de laquelle vous obtiendrez l'identifiant. Par exemple, si l'URL de votre contrôleur est https://localhost:8043/abcdefghijklmnopqrstuvwxyzabcdef/, alors CONTROLLER_ID est abcdefghijklmnopqrstuvwxyzabcdef. |
OPERATOR_USERNAME |
Nom d'utilisateur de l'opérateur du hotspot. |
OPERATOR_PASSWORD |
Mot de passe de l'opérateur du hotspot. |
Modèle de code PHP :
connexion de fonction statique publique ()
{
$loginInfo = tableau(
"nom" => OPERATOR_USER,
"mot de passe" => OPERATOR_PASSWORD
);
$en-têtes = tableau(
"Type de contenu : application/json",
"Accepter : application/json"
);
$ch = curl_init();
// poste
curl_setopt($ch, CURLOPT_POST, TRUE);
// Définit le retour à une valeur, pas le retour à la page
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
// Configurer les cookies. COOKIE_FILE_PATH définit où enregistrer le cookie.
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, "https://" . CONTROLLER . ":" . PORT . "/" . CONTROLLER_ID . "/api/v2/hotspot/login");
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($loginInfo));
$res = curl_exec($ch);
$resObj = json_decode($res);
//Empêcher CSRF. TOKEN_FILE_PATH définit où enregistrer le jeton.
si ($resObj->errorCode == 0) {
// se connecte avec succès
self::setCSRFToken($resObj->result->token);
}
curl_close($ch);
}
fonction statique privée setCSRFToken($token)
{
$monfichier = fopen(TOKEN_FILE_PATH, "w") ou die("Impossible d'ouvrir le fichier !");
fwrite($monfichier, $token);
fclose($monfichier);
retourner $jeton ;
}
Si l'authentification de connexion réussit, le contrôleur répondra avec le JSON suivant dans le corps HTTP. Notez que le jeton à l'intérieur du résultat est le jeton CSRF, qui doit être ajouté à l'en-tête HTTP des étapes suivantes.
{
"code d'erreur": 0,
"msg": "Connexion au Hotspot réussie.",
"résultat": {
"jeton": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}
}
Étapes 12 et 13.
Une fois la connexion réussie, le portail peut envoyer le résultat de l'authentification du client à https:// CONTROLLER : PORT / CONTROLLER_ID /api/v2/hotspot/extPortal/auth avec la méthode HTTP POST .
Les informations client doivent être encapsulées au format JSON dans le corps du message HTTP et doivent contenir les paramètres suivants.
Pour EAP : {" clientMac ":" CLIENT_MAC "," apMac ":" AP_MAC "," ssidName ":" SSID_NAME "," radioId ":" RADIO_ID "," site ":" SITE_NAME "," time ":" EXPIRE_TIME "," Typeauth ":" 4 "}
Pour la passerelle :
{" clientMac " : CLIENT_MAC "," gatewayMac ":" GATEWAY_MAC "," vid ":" VLAN_ID "," site ":" SITE_NAME "," time ":" EXPIRE_TIME "," authType ":" 4 "}
temps |
DATE D'EXPIRATION |
Délai d'expiration de l'authentification. L'unité ici est la microseconde. |
Modèle de code PHP pour EAP :
fonction statique publique autoriser ($ clientMac, $ apMac, $ ssidName, $ radioId, $ milliseconds)
{
// Envoie à l'utilisateur l'autorisation et le temps imparti
$authInfo = tableau(
'clientMac' => $clientMac,
'apMac' => $apMac,
'ssidName' => $ssidName,
'radioId' => $radioId,
'temps' => $millisecondes,
'authType' => 4
);
$csrfToken = self::getCSRFToken();
$en-têtes = tableau(
'Type de contenu : application/json',
'Accepter : application/json',
'Jeton Csrf : ' . $csrfToken
);
$ch = curl_init();
// poste
curl_setopt($ch, CURLOPT_POST, TRUE);
// Définit le retour à 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, "https://" . CONTROLLER . ":" . PORT . "/" . CONTROLLER_ID . "/api/v2/hotspot/login");
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($authInfo));
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$res = curl_exec($ch);
écho $res;
$resObj = json_decode($res);
si ($resObj->errorCode == 0) {
// autorisé avec succès
}
curl_close($ch);
}
fonction statique publique getCSRFToken()
{
$monfichier = fopen(TOKEN_FILE_PATH, "r") ou die("Impossible d'ouvrir le fichier !");
$token = fgets($monfichier);
fclose($monfichier);
retourner $jeton ;
}
Si la demande d'authentification est acceptée, le contrôleur répondra avec le JSON suivant :
{
"Code d'erreur": 0
}
Remarque : Le portail doit pouvoir répondre aux deux exigences suivantes :
1. Autoriser le certificat auto-signé . Ou vous téléchargerez votre propre certificat HTTPS sur Controller.
2. Lisez et enregistrez le « TPEAP_SESSIONID » dans Cookie et envoyez la demande d'authentification avec le Cookie.
* Pour Controller v5.11 et supérieur, le nom du cookie est « TPOMADA_SESSIONID » .
Est-ce que ce FAQ a été utile ?
Vos commentaires nous aideront à améliorer ce site.