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.