18.1 Trabajar con tokens web JSON (JWT) en NodeJS

Los tokens web JSON, o JWT, son una parte integral del desarrollo web moderno y proporcionan un método seguro y eficiente para la autenticación y autorización. Son especialmente útiles en API, donde la comunicación entre el cliente y el servidor debe ser rápida y segura. En este capítulo, exploraremos qué son los JWT, cómo funcionan y cómo podemos implementarlos en una API de NodeJS.

¿Qué son los tokens web JSON?

Los JWT son tokens de acceso que se utilizan para autenticar usuarios y pasar información entre partes. Están comprimidos en formato JSON, lo que los hace livianos y fáciles de transmitir. Cada JWT se compone de tres partes: el encabezado, la carga útil y la firma.

El encabezado normalmente contiene dos partes: el tipo de token, que es JWT, y el algoritmo de firma, como HMAC SHA256 o RSA. La carga útil, también conocida como "reclamaciones", son afirmaciones sobre una entidad (normalmente el usuario) y metadatos adicionales. La firma se utiliza para verificar que el remitente del JWT es quien dice ser y para garantizar que el mensaje no haya sido alterado en el camino.

¿Cómo funcionan los JWT?

Cuando un usuario se autentica exitosamente en una aplicación, el servidor crea un JWT y se lo devuelve al usuario. Este token generalmente se almacena localmente en el dispositivo del usuario y se envía junto con cada solicitud posterior al servidor. El servidor verifica la firma del token para garantizar que sea válido y luego usa la información de la carga útil para procesar la solicitud.

Uno de los principales beneficios de los JWT es que son autosuficientes. Esto significa que toda la información necesaria para autenticar al usuario está contenida en el token, lo que elimina la necesidad de realizar consultas adicionales a la base de datos para verificar la identidad del usuario. Esto puede resultar en un mejor rendimiento y escalabilidad.

Implementación de JWT en NodeJS

Para trabajar con JWT en NodeJS, necesitamos el paquete 'jsonwebtoken'. Este paquete proporciona una serie de funciones útiles para trabajar con JWT, incluidas funciones para crear, verificar y decodificar tokens.

Para crear un JWT, utilizamos la función 'firmar'. Esta función toma tres argumentos: la carga útil, una clave secreta utilizada para firmar el token y un objeto de opciones. El objeto de opciones puede incluir cosas como el algoritmo de firma a usar y la vida útil del token.

const jwt = require('jsonwebtoken');
carga útil constante = {
  nombre de usuario: 'JohnDoe',
  rol: 'administrador'
};
const secreto = 's3cr3t';
opciones constantes = {
  caducaEn: '2h'
};
token const = jwt.sign(carga útil, secreto, opciones);

Para verificar un JWT, utilizamos la función 'verificar'. Esta función toma tres argumentos: el token, la clave secreta utilizada para firmar el token y una función de devolución de llamada. La función de devolución de llamada se llama con el resultado de la verificación.

const jwt = require('jsonwebtoken');
token constante = '...'; // el token recibido
const secreto = 's3cr3t';
jwt.verify(token, secreto, (err, decodificado) => {
  si (errar) {
    console.log('Token no válido');
  } demás {
    console.log('Token válido', decodificado);
  }
});

Es importante tener en cuenta que la clave secreta utilizada para firmar y verificar el token debe mantenerse segura. Si un atacante obtiene acceso a la clave secreta, puede crear sus propios tokens y obtener acceso no autorizado a la aplicación.

En resumen, los JWT proporcionan una forma segura y eficiente de manejar la autenticación y la autorización en las API. Son especialmente útiles en NodeJS, donde podemos aprovechar el paquete 'jsonwebtoken' para crear, verificar y decodificar tokens fácilmente. < /p>

Ahora responde el ejercicio sobre el contenido:

¿Qué son los JSON Web Tokens (JWT) y cómo se implementan en NodeJS?

¡Tienes razón! Felicitaciones, ahora pasa a la página siguiente.

¡Tú error! Inténtalo de nuevo.

Imagen del artículo Trabajar con JSON Web Tokens (JWT) en NodeJS: Cómo generar un JWT en NodeJS 111

Siguiente página del libro electrónico gratuito:

Trabajar con JSON Web Tokens (JWT) en NodeJS: Cómo generar un JWT en NodeJS

Tiempo estimado de lectura: 3 minutos

Descarga la aplicación para obtener una certificación gratuita y escuchar cursos en segundo plano, incluso con la pantalla apagada.

+ 6,5 millones
estudiantes

Certificado gratuito y
válido con código QR

48 mil ejercicios
gratis

Calificación de 4.8/5
en tiendas de aplicaciones

Cursos gratuitos de
vídeo, audio y texto.