Autenticación con JWT y Acceso a Varios Sistemas en Laravel [SOLUCIONADO]

El uso eficiente de tokens JWT (JSON Web Tokens) en Laravel puede ser una tarea desafiante si no se comprende totalmente su funcionamiento. Comencemos por entender qué son los tokens JWT.

Comprendiendo los tokens JWT

Los JWT son tokens creados con normas de seguridad que almacenan información como cadenas de texto encryptadas. Su estructura consiste en tres partes: cabecera (header), contenido (payload) y firma (signature).

    Cabecera = {
        "alg": "HS256",
        "typ": "JWT"
    }
    

Laravel y JWT

En sistemas construidos con Laravel, la autenticación JWT se puede implementar con diferentes herramientas y paquetes, como jwt-auth.

Instalación de jwt-auth

Primero, necesitamos instalar jwt-auth. Ejecutamos el siguiente comando en el terminal:

    composer require tymon/jwt-auth
    

Configuración de jwt-auth

A continuación, configuramos jwt-auth agregando los siguientes códigos a sus archivos correspondientes.

    // En config/app.php
    'providers' => [
        ...
        TymonJWTAuthProvidersLaravelServiceProvider::class,
    ],
    

    // En .env
    JWT_SECRET=YourGeneratedSecretKey
    

Autenticación de Usuario

Ahora que jwt-auth está instalado y configurado, podemos crear una ruta para autenticar a los usuarios y generar un token JWT.

    Route::post('login', function (Request $request) {
        $credentials = $request->only('email', 'password');
        if (!$token = auth()->attempt($credentials)) {
            return response()->json(['error' => 'Unauthorized'], 401);
        }
        return response()->json(compact('token'));
    });
    

Acceder a varios sistemas

Con el token JWT, podemos autenticar a los usuarios a través de múltiples sistemas. Supongamos que tenemos un sistema adicional llamado SystemB que requiere autenticación.

    Route::get('system-b', function (Request $request) {
        try {
            $user = JWTAuth::parseToken()->authenticate();
        } catch (Exception $e) {
            return response()->json(['error' => 'Unauthorized'], 401);
        }
        // Accede a SystemB con el usuario autenticado.
    });
    

Incorporación de Roles y Permisos

Los JWT pueden mejorar todavía más el sistema al proporcionar roles y permisos. Para ello se puede usar el paquete spatie/laravel-permission.

Recordatorio de Seguridad

Si bien la autenticación JWT es segura, debe ser usada correctamente. Nunca exponga información sensible en el contenido del token. Asegúrese siempre de que sus tokens JWT estén bien protegidos y no sean accesibles para terceros.

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Más información
Privacidad