Generación y Firma de Tokens JWT en APIs Backend

Clase 10 de 20Curso de Backend con Node.js: Autenticación con Passport.js y JWT

Resumen

¿Cómo implementar la generación de un token en una API?

Implementar la generación de tokens en tu API es esencial para asegurar la autenticación y autorización de los usuarios. En este contexto, al usuario, una vez autenticado, se le debe otorgar un token que permita manejar su sesión y conectarse a otros endpoints. Veamos cómo implementar esta lógica utilizando JSON Web Tokens (JWT).

¿Cómo generar un token?

  1. Importación de librerías: Comienza importando la librería de JSON Web Token. Esto es crucial ya que te permitirá trabajar con JWT en tu aplicación.

    const jwt = require('jsonwebtoken');
    
  2. Definir el payload: El payload contiene la información que se almacenará en el token. Esto puede incluir cualquier dato relevante, como el ID del usuario. En nuestro caso, utilizaremos el ID y el rol del usuario.

    const payload = {
        id: req.user.id,
        role: req.user.role
    };
    
  3. Generar el token: Una vez que se tiene el payload, se genera el token utilizando una clave secreta que no debe estar en el código fuente, sino configurada como una variable de entorno.

    const token = jwt.sign(payload, process.env.JWT_SECRET);
    

¿Cómo manejar el secreto de la firma del token?

Es importante que el secreto utilizado para firmar el token sea seguro y esté gestionado como una variable de entorno. Esto lo proporciona mayor seguridad frente a ataques. Aquí te explicamos cómo:

  • Crear una variable de entorno: Define una variable de entorno llamada JWT_SECRET que contenga el secreto.

    Ejemplo en .env:

    JWT_SECRET=your-secret-key
    
  • Generación del secreto: Utiliza herramientas en línea como Keygen.io para generar claves seguras mediante algoritmos robustos.

¿Cómo reiniciar el entorno de desarrollo?

Después de configurar las variables de entorno, es esencial reiniciar tu entorno de desarrollo para que los cambios surtan efecto. Si no lo haces, podrías enfrentar errores, como el que el secreto no tenga un valor asignado.

  1. Detener la aplicación: Si tu aplicación está corriendo, asegúrate de detenerla antes de realizar cambios.

  2. Reiniciar la aplicación: Una vez configurada la variable de entorno, corre nuevamente tu aplicación para cargar los nuevos valores.

¿Qué esperar al probar el login?

Una vez implementada la lógica de generación de tokens, al probar el endpoint de login, se espera lo siguiente:

  • Respuesta: El sistema debería devolver tanto la información del usuario como el token recién generado.
  • Funcionalidad segura: Este token le permitirá al usuario manejar su sesión de manera segura en los siguientes requests.

Por último, asegúrate de aplicar estos tokens en la protección de las rutas de tu API, forzando a los usuarios a enviar el token para acceder a recursos protegidos. ¡Así garantizas una capa más de seguridad y control en tus servicios!