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:
- Ingresa a: Administración del sitio -> Extensiones -> Autenticación -> Gestionar la autenticación.
- Luego, habilita el plugin presionando en el botón indicado en la imagen.

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:
- Se configura el encabezado del token JWT con el algoritmo de firma y el tipo de token.
- Se crea el payload del token, incluyendo el campo especificado por
$tokenWithdel usuario proporcionado. El payload se codifica a formato JSON y luego a base64url. - Se genera una firma HMAC-SHA256 utilizando un token predefinido. Esta firma se agrega al encabezado y al payload del token JWT.
- Se concatenan el encabezado, el payload y la firma para formar el token JWT completo.
- 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
| Campo | Obligatorio | Descripción |
|---|---|---|
| username | SÃ | Se utiliza para buscar en nuestra plataforma al usuario que coincida con ese nombre de usuario. |
| course | No | Se utiliza para redirigir al curso correspondiente. Si el ID del curso no existe, redirige al frontpage. |
| iat | No | Tiempo en que se emitió el token, en formato Epoch. |
| exp | No | Representa la fecha y hora de expiración del token (Expiration Time), en formato Epoch. |
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.

Campo Valor Token eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VybmFtZSI6ImFsdW1ubyIsImlhdCI6MTcxMTE3MjI1NCwiZXhwIjoxNzExMTc1ODU0fQ.JiVEcWh5t0rIS3w24iHe9ktI5QI6Yi2Q9LIoxLc7kr0 Llave dedf4f2a7389eec2d0883e55340c232c