17.1. Autenticación y Autorización en APIs de NodeJS: Autenticación con JWT

La autenticación y la autorización son elementos cruciales en la creación de API en NodeJS. Garantizan la seguridad de los datos manipulados por la API, permitiendo únicamente el acceso a determinados recursos a usuarios autorizados. Este capítulo de libro electrónico se centrará en la autenticación con JWT (JSON Web Tokens).

¿Qué es JWT?

JSON Web Tokens (JWT) es un estándar abierto (RFC 7519) que define una forma compacta y autónoma de pasar información entre partes como un objeto JSON. Esta información se puede verificar y confiar porque está firmada digitalmente. Los JWT se pueden firmar usando un secreto (con el algoritmo HMAC) o un par de claves pública/privada usando RSA o ECDSA.

¿Por qué utilizar JWT para la autenticación?

Los JWT son una buena opción para la autenticación por varios motivos. Primero, son apátridas. Esto significa que no necesitamos almacenar información de la sesión en el servidor o en una base de datos. En cambio, toda la información necesaria se almacena en el token y se envía al servidor en cada solicitud. Esto permite que nuestra aplicación sea escalable y fácil de administrar.

En segundo lugar, los JWT son compactos y se pueden enviar a través de una URL, en un encabezado HTTP o en una cookie. Esto los hace muy convenientes para la autenticación, especialmente en aplicaciones de una sola página (SPA).

¿Cómo funciona la autenticación JWT?

La autenticación con JWT normalmente implica los siguientes pasos:

  1. El usuario envía sus credenciales al servidor.
  2. El servidor comprueba las credenciales y, si son válidas, genera un JWT que se envía de vuelta al usuario.
  3. El usuario almacena el JWT de alguna manera (por ejemplo, en una cookie o en el almacenamiento local).
  4. El usuario envía el JWT en cada solicitud posterior al servidor.
  5. El servidor comprueba el JWT y, si es válido, procesa la solicitud.
  6. Si el JWT no es válido (por ejemplo, ha caducado), el servidor rechaza la solicitud.

Implementación de autenticación con JWT en NodeJS

Para implementar la autenticación JWT en NodeJS, necesitamos el paquete jsonwebtoken. Podemos instalarlo usando npm:


npm instala jsonwebtoken

Una vez instalado el paquete, podemos usarlo para generar y verificar JWT. A continuación se muestra un ejemplo de cómo podemos hacer esto:


const jwt = require('jsonwebtoken');

// Generar un JWT
const token = jwt.sign({ id: user.id }, 'tu-clave-secreta', { expiresIn: '1h' });

// Verificar un JWT
intentar {
  const decodificado = jwt.verify(token, 'tu-clave-secreta');
  console.log(decodificado.id); // imprimirá la identificación del usuario
} atrapar (errar) {
  console.error('Token no válido');
}

La función jwt.sign() genera un JWT. Se necesitan tres argumentos: la carga útil (un objeto que contiene la información que queremos almacenar en el token), el secreto (una cadena utilizada para firmar el token) y las opciones (un objeto que puede contener varias propiedades, como expiresIn , que define cuándo caduca el token).

La función jwt.verify() verifica un JWT. Se necesitan dos argumentos: la ficha y el secreto. Si el token es válido, devuelve la carga útil. Si no es válido, arroja un error.

En resumen, la autenticación con JWT en NodeJS es un proceso simple y efectivo que puede mejorar significativamente la seguridad de sus API. Con JWT, puede garantizar que solo los usuarios autorizados tengan acceso a ciertos recursos, haciendo que su aplicación sea más segura y confiable. .

Ahora responde el ejercicio sobre el contenido:

¿Qué se necesita para implementar la autenticación con JWT en NodeJS?

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

¡Tú error! Inténtalo de nuevo.

Imagen del artículo Autenticación y autorización en APIs de NodeJS: Autorización con roles y permisos

Siguiente página del libro electrónico gratuito:

100Autenticación y autorización en APIs de NodeJS: Autorización con roles y permisos

4 minutos

¡Obtén tu certificado para este curso gratis! descargando la aplicación Cursa y leyendo el libro electrónico allí. ¡Disponible en Google Play o App Store!

Disponible en Google Play Disponible en App Store

+ 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.