Les exigences de l'établissement d'un serveur de portail externe (au-dessus du contrôleur SDN Omada 5.0.15)

Application utilisateur requise
Mis à jour07-10-2023 08:50:55 AM 39383
Ce document concerne les modèles suivants : 

Convient pour Omada Controller 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 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):// 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

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.

 

https://static.tp-link.com/image-20210301141438-2_1614579303917s.png

 

É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 / 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 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).

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 le CONTROLLER_ID est abcdefghijklmnopqrstuvwxyzabcdef.

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 :

 

fonction statique publique login()

{

$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 d'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êche CSRF. TOKEN_FILE_PATH définit où enregistrer le jeton.

si ($resObj->errorCode == 0) {

// connexion réussie

self::setCSRFToken($resObj->result->token);

}

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. Notez que le jeton à l'intérieur du résultat est le CSRF-Token, qui doit être ajouté à l'en-tête HTTP des étapes suivantes.

{

"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 / 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 :

 

autorisation de fonction statique publique($clientMac, $apMac, $ssidName, $radioId, $millisecondes)

{

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

$authInfo = tableau(

'clientMac' => $clientMac,

'apMac' => $apMac,

'ssidName' => $ssidName,

'radioId' => $radioId,

'time' => $millisecondes,

'authType' => 4

);

$csrfToken = self::getCSRFToken();

$en-têtes = tableau(

'Type de contenu : application/json',

'Accepter : application/json',

'Csrf-Token: ' . $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 d'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);

echo $res;

$resObj = json_decode($res);

si ($resObj->errorCode == 0) {

// autorisé avec succès

}

curl_close($ch);

}

 

fonction statique publique 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 le cookie et envoyez une demande d'authentification avec le cookie.

FAQs associées

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

Vos commentaires nous aideront à améliorer ce site.

Produits Recommandés

De United States?

Infos produits, événements, services pour votre pays.