Los requisitos para establecer un servidor de portal externo (por encima de Omada SDN Controller 5.0.15)

Requisito de la aplicación de usuario
Actualizado06-03-2022 07:11:31 AM 12725
Este artículo se aplica a: 

Para Omada Controller v4 (4.1.5 a 4.4.6), consulte la pregunta frecuente 2907 .

Para Omada Controller v3, consulte la pregunta frecuente 2274 .

 

En comparación con Omada SDN Controller v4, los principales cambios son los siguientes:

1. Agregue la ID del controlador a la URL para iniciar sesión en el punto de acceso y enviar la información del cliente.

2. Agregue el encabezado HTTP, que lleva el token CSRF.

 

Nota: Las palabras clave en cursiva y negrita indican parámetros que EAP o Gateway completan automáticamente, y su servidor de portal externo debe identificarlos y entregarlos correctamente. Los significados de los parámetros se indican en la primera aparición.

 

Este documento describe los requisitos para establecer un servidor de portal externo ( Portal para abreviar). La siguiente imagen muestra el flujo de datos entre los dispositivos de red, lo que puede ayudar a comprender mejor el mecanismo de trabajo.

Pasos 1 y 2.

Cuando un cliente está conectado a la red inalámbrica o cableada con un Portal habilitado e intenta acceder a Internet, su solicitud HTTP será interceptada por EAP o Gateway, respectivamente, y luego redirigida al Controlador SDN de Omada ( Controlador para abreviar) junto con con la información de conexión que es rellenada automáticamente por EAP o Gateway en la URL.

 

Pasos 3 y 4.

Después de eso, el cliente enviará una solicitud HTTP GET con la información de conexión al Controlador y será redirigido al Portal por la respuesta del Controlador con una respuesta HTTP con el código de estado 302. La respuesta HTTP incluye la URL del Portal en el campo de ubicación, así como la conexión. información.

URL para 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 para puerta de enlace: http(s):// PORTAL ?

clientMac=CLIENT_MAC&gatewayMac=GATEWAY_MAC&vid=VLAN_ID&t=TIME_SINCE_EPOCH&site=SITE_NAME&redirectUrl=LANDING_PAGE.

PORTAL

La dirección IP o URL y el número de puerto (si es necesario) del servidor de portal externo.

clientMac

CLIENT_MAC

Dirección MAC del cliente.

apMac

AP_MAC

Dirección MAC del EAP al que está conectado el cliente.

gatewayMac

GATEWAY_MAC

Dirección MAC de la puerta de enlace.

vid

VLAN_ID

ID de VLAN de la red cableada a la que está conectado el cliente.

ssidName

SSID_NAME

Nombre del SSID al que está conectado el cliente

radioId

RADIO_ID

Radio ID de la banda a la que está conectado el cliente, donde 0 representa 2.4G y 1 representa 5G.

site

SITE_NAME

Nombre del sitio.

redirectUrl

LANDING_PAGE

URL para visitar después de una autenticación exitosa, que se puede configurar en la página de destino.

t

TIME_SINCE_EPOCH

La unidad aquí es microsegundo.

 

       

 

Pasos 5 y 6.

El cliente enviará una solicitud HTTP GET al Portal con la URL anterior. El portal debe poder reconocer y mantener la información de conexión en la cadena de consulta de la solicitud HTTP GET y devolver la página web para la autenticación.

 

Pasos 7, 8 y 9.

El cliente enviará información de autenticación al Portal, que se entregará al servidor de autenticación y se verificará. Luego, el servidor de autenticación devuelve el resultado de la autenticación a Portal.

Puede decidir cómo Portal obtiene la información de autenticación del cliente y cómo Portal se comunica con el servidor de autenticación, de acuerdo con sus propios requisitos, lo cual está más allá del alcance de este artículo.

 

NOTA: En la figura anterior, el Portal y el servidor de autenticación están separados. Puede instalarlos en el mismo servidor que desee. El método de autenticación también depende de usted. Solo asegúrese de que Portal pueda conocer el resultado de la autenticación del servidor de autenticación.

 

Pasos 10 y 11.

Si se autoriza la solicitud de autenticación, el Portal debe enviar la información del cliente al Controlador llamando a su API.

Primero, debe iniciar sesión en Controller mediante el envío de una solicitud HTTP POST . La URL de la solicitud debe ser https://CONTROLLER:PORT/CONTROLLER_ID/api/v2/hotspot/login y debe llevar la información de la cuenta del operador en formato JSON en el cuerpo del mensaje HTTP: “name=OPERATOR_USERNAME&password=OPERATOR_PASSWORD .

Tenga en cuenta que la cuenta y la contraseña aquí son el operador agregado en la interfaz del administrador del punto de acceso, en lugar de la cuenta y la contraseña de la cuenta del controlador.

      

CONTROLLER

Dirección IP o URL del controlador Omada SDN.

PORT

Puerto HTTPS para la gestión del controlador de Omada SDN Controller (8043 para software y 433 para OC de forma predeterminada, vaya a Configuración --- Controlador --- Configuración de acceso para modificar).

CONTROLLER_ID

Identificador del Controlador SDN de Omada. Cuando acceda al controlador, el identificador se agregará automáticamente a la URL, de donde obtendrá el identificador.

Por ejemplo, si la URL de su controlador es https://localhost:8043/abcdefghijklmnopqrstuvwxyzabcdef/, entonces CONTROLLER_ID es abcdefghijklmnopqrstuvwxyzabcdef.

OPERATOR_USERNAME

Nombre de usuario del operador del punto de acceso.

OPERATOR_PASSWORD

Contraseña del operador del punto de acceso.

 

Plantilla de código PHP:

 

public static function login()

    {

        $loginInfo = array(

            "name" => OPERATOR_USER,

            "password" => OPERATOR_PASSWORD

        );

        $headers = array(

            "Content-Type: application/json",

            "Accept: application/json"

        );

        $ch = curl_init();

 

        // post

        curl_setopt($ch, CURLOPT_POST, TRUE);

 

        // Set return to a value, not return to page

        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

 

        // Set up cookies. COOKIE_FILE_PATH defines where to save Cookie.

        curl_setopt($ch, CURLOPT_COOKIEJAR, COOKIE_FILE_PATH);

        curl_setopt($ch, CURLOPT_COOKIEFILE, COOKIE_FILE_PATH);

 

        // Allow Self Signed Certs

        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);

        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);

 

        // API Call

        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);

        //Prevent CSRF. TOKEN_FILE_PATH defines where to save Token.

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

            // login successfully

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

        }

        curl_close($ch);

    }

 

    private static function setCSRFToken($token)

    {

        $myfile = fopen(TOKEN_FILE_PATH, "w") or die("Unable to open file!");

        fwrite($myfile, $token);

        fclose($myfile);

        return $token;

    }

 

Si pasa la autenticación de inicio de sesión, el Controlador responderá con el siguiente JSON en el cuerpo HTTP. Tenga en cuenta que el token dentro del resultado es el CSRF-Token, que debe agregarse al encabezado HTTP de los siguientes pasos.

{

    "errorCode": 0,

    "msg": "Hotspot log in successfully.",

    "result": {

        "token": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

    }

}

 

Pasos 12 y 13.

Después de un inicio de sesión exitoso, el Portal puede enviar el resultado de la autenticación del cliente a https://CONTROLLER:PORT/CONTROLLER_ID/api/v2/hotspot/extPortal/auth con el método HTTP POST .

La información del cliente debe estar encapsulada en formato JSON y debe contener los siguientes parámetros.

Para EAP: “clientMac=CLIENT_MAC&apMac=AP_MAC&ssidName=SSID_NAME &radioId=RADIO_ID&site=SITE_NAME&time=EXPIRE_TIME&authType =4

Para Gateway: “clientMac=CLIENT_MAC&gatewayMac=GATEWAY_MAC&vid=VLAN_ID&site=SITE_NAME&time=EXPIRE_TIME&authType =4

 

 time

EXPIRE_TIME

Hora de caducidad de la autenticación. La unidad aquí es microsegundo.

 

Plantilla de código PHP para EAP:

 

public static function authorize($clientMac, $apMac, $ssidName, $radioId, $milliseconds)

    {

        // Send user to authorize and the time allowed

        $authInfo = array(

            'clientMac' => $clientMac,

            'apMac' => $apMac,

            'ssidName' => $ssidName,

            'radioId' => $radioId,

            'time' => $milliseconds,

            'authType' => 4

        );

        $csrfToken = self::getCSRFToken();

        $headers = array(

            'Content-Type: application/json',

            'Accept: application/json',

            'Csrf-Token: ' . $csrfToken

        );

        $ch = curl_init();

        // post

        curl_setopt($ch, CURLOPT_POST, TRUE);

 

        // Set return to a value, not return to page

        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

 

        // Set up cookies.

        curl_setopt($ch, CURLOPT_COOKIEJAR, COOKIE_FILE_PATH);

        curl_setopt($ch, CURLOPT_COOKIEFILE, COOKIE_FILE_PATH);

 

        // Allow Self Signed Certs

        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);

        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);

 

        // API Call

        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) {

            // authorized successfully

        }

        curl_close($ch);

    }

 

    public static function getCSRFToken()

    {

        $myfile = fopen(TOKEN_FILE_PATH, "r") or die("Unable to open file!");

        $token = fgets($myfile);

        fclose($myfile);

        return $token;

    }

If the authentication request is accepted, the Controller will reply with the following JSON:

{

    "errorCode": 0

}

 

Nota : el portal debe poder cumplir los dos requisitos siguientes:

1. Permitir certificado autofirmado . O subirá su propio certificado HTTPS a Controller.

2. Lea y guarde el “ TPEAP_SESSIONID ” en Cookie y envíe una solicitud de autenticación con la Cookie.

Related FAQs

¿Es útil esta faq?

Sus comentarios nos ayudan a mejorar este sitio.

Recommend Products

SuscripciónTP-Link toma en serio su privacidad. Para obtener más detalles sobre las prácticas de privacidad de TP-Link, consulte Política de privacidad de TP-Link .

De United States?

Obtener productos, eventos y servicios para su región.