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 à jour11-08-2021 14:59:56 PM 44294
Ce document concerne les modèles suivants : 

Pour Omada Controller v4 (4.1.5 à 4.4.6), veuillez vous référer à la FAQ 2907 .

Pour Omada Controller v3, 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 sur le client.

2. Ajoutez l'en-tête HTTP, qui porte le jeton CSRF.

 

Remarque : les mots-clés en gras 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 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 filaire lié à 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 SDN Omada ( contrôleur en abrégé) le long 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 demande 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 informations.

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.

à

VLAN_ID

ID VLAN du réseau filaire auquel le client est connecté.

nom_ssid

SSID_NAME

Nom du SSID auquel le client est connecté

ID radio

RADIO_ID

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.

redirectUrl

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 pouvoir reconnaître et conserver les informations de connexion dans la chaîne de requête de la requête HTTP GET et 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 à Portal.

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 à partir 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 elle 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 SDN Omada.

PORT

Port HTTPS pour le contrôleur Gestion du contrôleur Omada SDN (8043 pour le logiciel et 433 pour OC par défaut, accédez à Paramètres --- Contrôleur --- Accès à la configuration pour modification).

CONTROLLER_ID

Identifiant du contrôleur SDN Omada. 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 hotspot.

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

        );

        $headers = tableau(

            "Type de contenu : application/json",

            "Accepter : application/json"

        );

        $ch = curl_init();

 

        // Publier

        curl_setopt($ch, CURLOPT_POST, TRUE);

 

        // Fixe le retour à une valeur, ne retourne pas à 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.

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

            // connexion avec succès

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

        }

        curl_close($ch);

    }

 

    fonction statique privée setCSRFToken($token)

    {

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

        fwrite($monfichier, $jeton);

        fclose($monfichier);

        renvoie $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.

{

    "errorCode": 0,

    "msg": "Connectez-vous au hotspot avec succès.",

    "résultat": {

        "jeton": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

    }

}

 

Étapes 12 et 13.

Une fois la 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 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 la passerelle : " 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 publique autoriser($clientMac, $apMac, $ssidName, $radioId, $millisecondes)

    {

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

        $authInfo = tableau(

            'clientMac' => $clientMac,

            'apMac' => $apMac,

            'ssidName' => $ssidName,

            'radioId' => $radioId,

            'time' => $millisecondes,

            'AuthType' => 4

        );

        $csrfToken = self::getCSRFToken();

        $headers = tableau(

            'Type de contenu : application/json',

            'Accepter : application/json',

            'Csrf-Jeton : ' . $csrfJeton

        );

        $ch = curl_init();

        // Publier

        curl_setopt($ch, CURLOPT_POST, TRUE);

 

        // Fixe le retour à une valeur, ne retourne pas à 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);

        echo $ res;

        $resObj = json_decode($res);

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

            // autorisé avec succès

        }

        curl_close($ch);

    }

 

    fonction statique publique getCSRFToken()

    {

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

        $jeton = fgets($monfichier);

        fclose($monfichier);

        renvoie $token ;

    }

Si la demande d'authentification est acceptée, le contrôleur répondra avec le JSON suivant :

{

    "errorCode": 0

}

 

Remarque : Le portail doit être en mesure de 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.

De United States?

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