Los tokens web JSON (JWT) son una forma eficaz de gestionar la autenticación y la autorización en aplicaciones Node.js. Los JWT son tokens cifrados que contienen información sobre el usuario que se puede verificar para garantizar que las solicitudes provengan de una fuente confiable. En este capítulo, discutiremos cómo manejar tokens de actualización en NodeJS.

Los tokens de actualización desempeñan un papel crucial a la hora de mantener la seguridad del usuario y reducir la necesidad de que el usuario inicie sesión repetidamente. Un token de actualización es un tipo especial de token que se utiliza para obtener un nuevo token de acceso. Tiene una vida útil más larga que el token de acceso, lo que permite a los usuarios permanecer autenticados sin tener que volver a ingresar sus credenciales.

Para comenzar a trabajar con JWT y actualizar tokens, primero debemos instalar la biblioteca jsonwebtoken. En la terminal, ejecute el siguiente comando:

npm instala jsonwebtoken

Una vez instalada la biblioteca, puede crear tokens utilizando el método sign(). Este método acepta tres argumentos: la carga útil, la clave secreta y las opciones. La carga útil contiene la información del usuario, la clave secreta se utiliza para firmar y verificar el token, y las opciones pueden incluir cosas como el algoritmo de firma y la validez del token.

const jwt = require('jsonwebtoken'); carga útil constante = {userId: user.id}; const secret = 'tu-clave-secreta'; opciones constantes = { expira en: '1h' }; token const = jwt.sign(carga útil, secreto, opciones);

Ahora que tenemos nuestro token, podemos enviarlo al cliente para que pueda usarlo en solicitudes posteriores. Cuando el cliente envía una solicitud con un token, podemos usar el método verificar() para asegurarnos de que el token sea válido.

token constante = req.headers.authorization; intentar { const decodificado = jwt.verify(token, 'tu-clave-secreta'); req.user = decodificado; } atrapar(errar) { res.status(401).send('Token no válido'); }

Entonces, ¿cómo encajan los tokens de actualización en esto? Bueno, cuando el token de acceso caduque, el usuario deberá iniciar sesión nuevamente para obtener uno nuevo. Para evitar esto, podemos emitir un token de actualización junto con el token de acceso. El token de actualización tiene una validez mucho más larga y se puede utilizar para obtener un nuevo token de acceso sin necesidad de que el usuario vuelva a iniciar sesión.

Para emitir un token de actualización, podemos usar el mismo método sign(), pero con un tiempo de vencimiento más largo.

const refrescoToken = jwt.sign(carga útil, 'tu-token-de-actualización-secreto', { expiresIn: '7d' });

Cuando el token de acceso caduca, el cliente puede enviar una solicitud con el token de actualización para obtener un nuevo token de acceso. Luego podemos verificar el token de actualización de la misma manera que lo hicimos con el token de acceso. Si el token de actualización es válido, emitimos un nuevo token de acceso.

const refrescoToken = req.body.token; intentar { const decodificado = jwt.verify(refreshToken, 'tu-token-de-actualización-secreto'); const newAccessToken = jwt.sign({ userId: decoded.userId }, 'su-clave-secreta', { expiresIn: '1h' }); res.json({ accessToken: newAccessToken }); } atrapar(errar) { res.status(401).send('Token de actualización no válido'); }

Es importante tener en cuenta que los tokens de actualización también pueden caducar. Cuando esto suceda, el usuario deberá iniciar sesión nuevamente. Además, debes tratar los tokens de actualización como contraseñas y almacenarlos de forma segura.

En resumen, los tokens de actualización son una parte esencial de la gestión de la autenticación y la autorización en las aplicaciones Node.js. Permiten a los usuarios permanecer autenticados durante períodos de tiempo más largos sin tener que ingresar repetidamente sus credenciales. Al mismo tiempo, ayudan a mantener la seguridad de las aplicaciones al garantizar que solo se acepten solicitudes de fuentes confiables.

Ahora responde el ejercicio sobre el contenido:

¿Qué es un token de actualización y cuál es su función en un sistema de autenticación JWT en una aplicación Node.js?

¡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 implementar la autenticación basada en JWT en una API de NodeJS

Siguiente página del libro electrónico gratuito:

119Trabajar con JSON Web Tokens (JWT) en NodeJS: cómo implementar la autenticación basada en JWT en una API de NodeJS

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.