18.10. Trabajar con tokens web JSON (JWT) en NodeJS

JSON Web Tokens (JWT) es un estándar abierto (RFC 7519) que define una forma compacta y segura 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 mediante un secreto (con el algoritmo HMAC) o un par de claves pública/privada mediante RSA o ECDSA.

La autenticación basada en JWT es una forma popular de autenticar aplicaciones web. Con la autenticación JWT, se almacena un token en el cliente, que se envía en cada solicitud al servidor para ser autenticado.

Cómo implementar la autenticación basada en JWT en una API NodeJS

Para implementar la autenticación basada en JWT en una API de NodeJS, necesitará los siguientes pasos:

  1. Instalar el paquete jsonwebtoken
  2. Crear una ruta de inicio de sesión para generar el token
  3. Verificar token en cada solicitud

1. Instalar el paquete jsonwebtoken

Primero, necesitarás instalar el paquete jsonwebtoken en tu proyecto NodeJS. Puede hacer esto usando npm (Administrador de paquetes de nodos) con el siguiente comando:

npm instala jsonwebtoken

2. Crea una ruta de inicio de sesión para generar el token

A continuación, deberá crear una ruta de inicio de sesión que generará el token JWT. A continuación se muestra un ejemplo de cómo puede hacer esto:

const jwt = require('jsonwebtoken');
const expresar = requerir('expresar');
aplicación constante = expresar();

app.post('/iniciar sesión', (req, res) => {
    // Autenticar usuario

    usuario constante = {
        identificación: 1,
        nombre de usuario: 'prueba',
        correo electrónico: 'test@test.com'
    }

    jwt.sign({usuario: usuario}, 'clave secreta', (err, token) => {
        res.json({
            ficha: ficha
        });
    });
});

En el ejemplo anterior, primero autenticamos al usuario. Luego usamos la función jwt.sign para crear el token JWT. La función jwt.sign toma tres parámetros: la carga útil (en este caso, el objeto de usuario), la clave secreta y una función de devolución de llamada.

3. Verificar token en cada solicitud

Finalmente, deberás verificar el token JWT en cada solicitud. Puedes hacerlo creando un middleware que verifique el token:

función authenticateToken(solicitud, res, siguiente) {
    const portadorHeader = req.headers['autorización'];

    if (tipo de encabezado de portador! == 'indefinido') {
        portador constante = portadorHeader.split(' ');
        const portadorToken = portador[1];
        req.token = portadorToken;
        próximo();
    } demás {
        res.enviarEstado(403);
    }
}

app.get('/api', authenticateToken, (req, res) => {
    jwt.verify(req.token, 'clave secreta', (err, authData) => {
        si(errar) {
            res.enviarEstado(403);
        } demás {
            res.json({
                mensaje: 'API accedida exitosamente',
                fecha de autenticación
            });
        }
    });
});

En el ejemplo anterior, el middleware authenticateToken comprueba si el token JWT está presente en el encabezado de autorización. Si el token está presente, se verifica mediante la función jwt.verify. Si el token es válido, se permite que la solicitud continúe. Si el token no es válido, se envía un estado de error 403 (Prohibido).

¡Y eso es todo lo que necesitas para implementar la autenticación basada en JWT en una API de NodeJS!

Ahora responde el ejercicio sobre el contenido:

¿Qué se requiere para implementar la autenticación basada en JWT en una API de NodeJS?

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

¡Tú error! Inténtalo de nuevo.

Imagen del artículo Validación de datos con el paquete Joi

Siguiente página del libro electrónico gratuito:

120Validación de datos con el paquete Joi

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