Skip to Content
Nextra 4.0 is released 🎉
Plugin de Autenticación

Configuración del Plugin de Autenticación

Para el correcto funcionamiento del plugin, se detallan los siguientes pasos a seguir:

Activación del Plugin

Para habilitar el plugin, sigue estos pasos:

  1. Ingresa a: Administración del sitio -> Extensiones -> Autenticación -> Gestionar la autenticación.
  2. Luego, habilita el plugin presionando en el botón indicado en la imagen.

Alt text

Generación de URL de Autenticación con Tokens JWT

El siguiente código proporcionado es una función diseñada para generar una URL de autenticación utilizando tokens JWT (JSON Web Tokens). Esta función está diseñada para ser utilizada en un plugin de autenticación en una plataforma web, específicamente en nuestro sistema de gestión de aprendizaje (LMS). Los tokens JWT garantizan un acceso seguro a la plataforma.

La función getBcnLoginAuthUrl toma dos parámetros:

  • $tokenWith: Este parámetro especifica qué campo del usuario se utilizará para generar el token JWT. Por defecto, se utiliza el campo ‘username’, comúnmente empleado para identificar a los usuarios en sistemas de autenticación.
  • $usuario: Este parámetro es un objeto que contiene la información del usuario que se utilizará para generar el token JWT.

La función base64urlEncode se utiliza para codificar datos en formato base64url. Esta codificación es necesaria para garantizar la integridad y seguridad del token JWT. La función base64urlEncode toma un parámetro $data y lo codifica a base64url. El resultado es una cadena de caracteres que puede ser utilizada en el token JWT.

El proceso dentro de la función es el siguiente:

  1. Se configura el encabezado del token JWT con el algoritmo de firma y el tipo de token.
  2. Se crea el payload del token, incluyendo el campo especificado por $tokenWith del usuario proporcionado. El payload se codifica a formato JSON y luego a base64url.
  3. Se genera una firma HMAC-SHA256 utilizando un token predefinido. Esta firma se agrega al encabezado y al payload del token JWT.
  4. Se concatenan el encabezado, el payload y la firma para formar el token JWT completo.
  5. Se construye la URL de autenticación incluyendo el token JWT como parámetro y se devuelve como resultado de la función.
<?php define('HOURSECS', 3600); function getBcnLoginAuthUrl(string $tokenWith = 'username', stdClass $usuario) { // Token entregado en el plugin $tokenToGenerate = '92b4c2ea6bd9706xxxxxxxxxxxxxxxxx'; // Configurar el header JWT $header = [ 'alg' => 'HS256', 'typ' => 'JWT', ]; // Codificar el header a JSON y luego a base64url $header = base64urlEncode(json_encode($header)); // Crear el payload con el campo especificado por $tokenWith $now = time(); $payload = [ 'username' => $usuario->{$tokenWith}, 'iat' => $now, 'exp' => $now + HOURSECS ]; // Codificar el payload a JSON y luego a base64url $payload = base64urlEncode(json_encode($payload)); // Generar la firma utilizando HMAC-SHA256 $signature = hash_hmac('SHA256', "$header.$payload", $tokenToGenerate, true); $signature = base64urlEncode($signature); // Concatenar el header, payload y firma para formar el token JWT $token = "$header.$payload.$signature"; $url = "https://url_de_tu_campus/auth/bcn_token/login.php?token=$token"; return $url; } // Función para codificar datos a base64url function base64urlEncode($data) { return rtrim(strtr(base64_encode($data), '+/', '-_'), '='); } // Ejemplo de uso // Puedes especificar el campo que quieres usar como parte del token $url = getBcnLoginAuthUrl('username', $usuario); echo "URL with JWT Token: " . $url;

Para utilizar esta función, simplemente llámala proporcionando el campo deseado para el token JWT y un objeto que contenga la información del usuario. La URL generada puede ser utilizada para autenticar al usuario en la plataforma mediante el plugin correspondiente.

Ten en cuenta que también puedes utilizar alguna librería que estimes conveniente para generar el JWT, como PHP-JWT  u otras opciones disponibles en la comunidad de desarrollo.

Parámetros Aceptados por el Plugin

CampoObligatorioDescripción
usernameSíSe utiliza para buscar en nuestra plataforma al usuario que coincida con ese nombre de usuario.
courseNoSe utiliza para redirigir al curso correspondiente. Si el ID del curso no existe, redirige al frontpage.
iatNoTiempo en que se emitió el token, en formato Epoch.
expNoRepresenta la fecha y hora de expiración del token (Expiration Time), en formato Epoch.
El formato Epoch, también conocido como Unix time, es una representación de tiempo que cuenta los segundos transcurridos desde el 1 de enero de 1970 a las 00:00:00 UTC (Coordinated Universal Time). Es un estándar utilizado en muchos sistemas informáticos para facilitar el almacenamiento y la manipulación de fechas y horas. El valor de Epoch es un entero que representa el número de segundos desde la fecha de referencia.

Punto de Acceso (Endpoint)

  • El endpoint para la autenticación es: https://urlcampus.com/auth/bcn_token/login.php?token=tokenjwt 

  • Esta URL es crucial para el proceso de autenticación. Al acceder a ella con el token JWT correspondiente, se completará el proceso de inicio de sesión en nuestra plataforma.
  • A continuación, se muestra un ejemplo de un token JWT generado a través del sitio jwt.io  con un botón que te llevará directamente al sitio para visualizar y analizar el token.


    Ver en jwt.io

    Token JWT

    CampoValor
    TokeneyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VybmFtZSI6ImFsdW1ubyIsImlhdCI6MTcxMTE3MjI1NCwiZXhwIjoxNzExMTc1ODU0fQ.JiVEcWh5t0rIS3w24iHe9ktI5QI6Yi2Q9LIoxLc7kr0
    Llavededf4f2a7389eec2d0883e55340c232c
Last updated on