Les exigences de l'établissement d'un serveur de portail externe (ci-dessus Omada Controller 4.1.5)

Application utilisateur requise
Mis à jour07-10-2023 08:51:13 AM 73831
Ce document concerne les modèles suivants : 

Convient pour Omada Controller 4.1.5 à 4.4.6.

Pour Omada Controller 5.0.15 ou supérieur, veuillez vous référer à la FAQ 3231

Pour Omada Controller 2.6.0 à 3.2.17, veuillez vous référer à la FAQ 2274

Pour Omada Controller 2.5.4 ou inférieur, veuillez vous référer à la FAQ 928

 

Remarque : Les mots-clés en italique gras indiquent des paramètres 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 dans la première apparition.

 

Ce document décrit les exigences pour établir un serveur de portail externe ( portail en abrégé). L'image ci-dessous illustre le flux de données entre les périphériques réseau, ce qui peut aider à mieux comprendre le mécanisme de travail.

Étapes 1 et 2.

Lorsqu'un client est connecté au réseau sans fil ou câblé 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 avec les informations de connexion 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 pour EAP : http(s):// PORTAL ?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):// PORTAL ?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

VLAN_ID

ID VLAN du réseau câblé auquel le client est connecté.

ssidName

SSID_NAME

Nom du SSID auquel le client est connecté

identifiant radio

RADIO_ID

ID radio de la bande à laquelle le client est connecté, où 0 représente 2,4G et 1 représente 5G.

placer

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 une requête HTTP GET au portail avec l'URL ci-dessus. Le portail doit être en mesure 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 seront vérifiées. Ensuite, le serveur d'authentification renvoie 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, selon vos propres exigences, 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 à partir du serveur d'authentification.

 

Étapes 10 et 11.

Si la demande d'authentification est autorisée, le portail doit envoyer les informations du 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 /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 " .

L'interface d'appel est POST /api/v2/hotspot/login. Le paramètre de passage est JSON : {“name”:”xxx”, “password”:”xxx”}. Notez que le compte et le mot de passe ici sont l'opérateur ajouté dans l'interface du gestionnaire de points d'accès, 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 du contrôleur Omada SDN (8043 pour le logiciel et 433 pour OC par défaut, accédez à Paramètres --- Contrôleur --- Access Config pour modification).

OPERATOR_USERNAME

Nom d'utilisateur de l'opérateur du point d'accès.

OPERATOR_PASSWORD

Mot de passe de l'opérateur du hotspot.

 

Modèle de code PHP :

connexion de fonction statique privée ()

{

$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 d'API

curl_setopt($ch, CURLOPT_URL, CONTROLLER.":".PORT."/api/v2/hotspot/login” );

curl_setopt($ch, CURLOPT_POSTFIELDS, "name=" . OPERATOR_USER ."&password=" . OPERATOR_PASSWORD);

$res = curl_exec($ch);

$resObj = json_decode($res);

// Empêche CSRF. TOKEN_FILE_PATH définit où enregistrer le jeton.

if($resObj->succès == vrai){

self ::setCSRFToken($resObj->value);

}

curl_close($ch);

}

fonction statique privée setCSRFToken($token){

$myfile = fopen(TOKEN_FILE_PATH, "w") or die("Impossible d'ouvrir le fichier !");

fwrite($monfichier, $jeton);

fclose($monfichier);

retourne $token ;

}

Si l'authentification de connexion réussit, le contrôleur répondra avec le JSON suivant dans le corps HTTP.

{

"code d'erreur": 0,

"msg": "Connexion hotspot réussie.",

"résultat": {

"jeton": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

}

}

 

Étapes 12 et 13.

Après une connexion réussie, Portal peut envoyer le résultat de l'authentification du client à https:// CONTROLLER : PORT /api/v2/hotspot/extPortal/auth?token=CSRFToken avec la méthode HTTP POST . Les informations client doivent être encapsulées au format JSON 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 & authType =4 "

Pour Gateway : " clientMac= CLIENT_MAC &gatewayMac= GATEWAY_MA C&vid= VLAN_ID &site= SITE_NAME &time= EXPIRE_TIM E& 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 privée autorise($clientMac,$apMac,$ssidName,$radioId,$ millisecondes,$site)

{

// Envoie l'utilisateur à autoriser et le temps imparti

$authInfo = tableau(

'clientMac' => $clientMac,

'apMac' => $apMac,

''ssidName => $ssidName,

'radioId ' => $radioId,

'time' => $millisecondes,

'authType' => 4

);

$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 d'API

$csrfToken = self::getCSRFToken();

curl_setopt($ch, CURLOPT_URL, CONTROLLER.":". PORT."/api/v2/hotspot/extPortal/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'] == faux){

echo $res;

}

curl_close($ch);

}

fonction statique privée resultConvert($json)

{

$json = str_replace(array('{','}',':',','),array('[{" ',' }]','":',',"'),$json );

fonction cb_quote($v)

{

return '"'.trim($v[1]).'"' ;

}

$newJSON=preg_replace_callback("~\"(.*?)\"~","cb_quote", $json);

$res = json_decode($newJSON, true)[0] ;

retourne $res ;

}

fonction statique privée getCSRFToken(){

$myfile = fopen(TOKEN_FILE_PATH, "r") or die("Impossible d'ouvrir le fichier !");

$token = fgets($monfichier);

fclose($monfichier);

retourne $token ;

}

Si la demande d'authentification est acceptée, le Controller 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 une demande d'authentification avec le cookie.

Est-ce que ce FAQ a été utile ?

Vos commentaires nous aideront à améliorer ce site.

Recommend Products