JSON Web Tokens, o JWT, es un estándar de token de acceso que tiene como objetivo hacer que la comunicación entre dos partes (cliente y servidor, por ejemplo) sea segura. JWT es una forma eficaz de manejar la autenticación y autorización en aplicaciones NodeJS. En este capítulo de nuestro curso, aprenderemos cómo proteger rutas con JWT en NodeJS.
Para empezar, debemos entender qué es JWT. JWT es una cadena codificada que se pasa entre el cliente y el servidor para validar la identidad del usuario y garantizar que la información transmitida sea segura. El token se compone de tres partes: el encabezado, la carga útil y la firma.
El encabezado contiene información sobre el tipo de token y el algoritmo de cifrado utilizado. La carga útil contiene las reclamaciones o los datos que desea transmitir. La firma se utiliza para verificar que el remitente del JWT es quien dice ser y para garantizar que el contenido no haya sido alterado.
Para trabajar con JWT en NodeJS, necesitaremos la biblioteca jsonwebtoken. Para instalarlo, puedes usar el siguiente comando en la terminal:
npm instala jsonwebtoken
Una vez instalada la biblioteca, podemos comenzar a crear tokens. Aquí hay un ejemplo de cómo puedes crear un token JWT en NodeJS:
const jwt = require('jsonwebtoken'); fecha constante = { identificación: 1, nombre: 'John Doe' }; const secreto = 'miclavesecreta'; token constante = jwt.sign(datos, secreto); consola.log(token);
En este ejemplo, estamos creando un token JWT que contiene los datos del usuario. La clave secreta 'mysecretkey' se utiliza para firmar el token.
Ahora que tenemos un token, podemos usarlo para proteger nuestras rutas. Para hacer esto, necesitamos crear un middleware que verifique la presencia del token JWT en cada solicitud. Aquí tienes un ejemplo de cómo puedes hacer esto:
const jwt = require('jsonwebtoken'); const secreto = 'miclavesecreta'; autenticar const = (req, res, siguiente) => { token constante = req.headers.authorization; si (!token) { return res.status(401).json({ mensaje: 'No se proporcionó token' }); } jwt.verify(token, secreto, (err, decodificado) => { si (errar) { return res.status(401).json({ mensaje: 'Token no válido' }); } req.user = decodificado; próximo(); }); }; aplicación.use(autenticar);
En este ejemplo, el middleware 'autenticar' extrae el token del encabezado 'autorización' de la solicitud. Si el token no está presente, la solicitud se rechaza con un estado 401. Si el token está presente, se verifica mediante la función 'jwt.verify'. Si la verificación falla, la solicitud se rechaza con un estado de 401. Si la verificación tiene éxito, los datos del token decodificado se agregan a la solicitud y la solicitud se pasa al siguiente middleware.
Con este middleware, podemos proteger cualquier ruta simplemente incluyéndola en la cadena de middleware de la ruta. Aquí tienes un ejemplo:
app.get('/protected', autenticar, (req, res) => { res.json({ mensaje: 'Esta es una ruta protegida' }); });
En este ejemplo, solo se podrá acceder a la ruta '/protected' si la solicitud incluye un token JWT válido en el encabezado 'autorización'.
En resumen, JWT es una forma poderosa y flexible de manejar la autenticación y autorización en aplicaciones NodeJS. Con la biblioteca jsonwebtoken, podemos crear y verificar fácilmente tokens JWT y, con el concepto de middleware, podemos proteger fácilmente nuestras rutas. Espero que este capítulo le haya brindado una buena comprensión de cómo trabajar con JWT en NodeJS.
En la siguiente sección, profundizaremos en otras técnicas de autenticación y autorización en NodeJS. ¡Estén atentos!