MOX
Productos
Conoce nuestros servicios adicionales
Recursos & Elementos
Volver

MOXAndrés Villalobos
13-09-2025

Tutorial Node.js: Implementación de Autenticación en APIs REST con JWT

El desarrollo de aplicaciones web modernas requiere una atención especial en la seguridad. Uno de los aspectos más críticos es la autenticación, especialmente cuando se trata de API REST. En este tutorial, exploraremos cómo implementar un sistema de autenticación robusto utilizando Node.js y JSON Web Tokens (JWT). Acompáñanos en esta guía donde cubriremos desde la instalación hasta la implementación completa.

¿Qué es JWT?

JSON Web Tokens (JWT) es un estándar abierto que define una forma compacta y autónoma para transmitir información entre partes como un objeto JSON. Esta información puede ser verificada y confiable porque está firmada digitalmente. La autenticación a través de JWT no solo es segura, sino que también es altamente escalable.

Ventajas del uso de JWT

Una de las principales ventajas del uso de JWT en comparación con otras técnicas de autenticación es su naturaleza autónoma. Esto significa que los tokens contienen toda la información necesaria para la autenticación, eliminando la necesidad de mantener sesiones en el servidor. Otro beneficio esencial es su compatibilidad con CORS, lo cual es crucial cuando se desarrollan APIs que necesitan ser accesibles desde diferentes dominios.

Configurando el Entorno

Antes de comenzar, asegúrate de tener Node.js instalado. Necesitarás instalar algunas dependencias: express, jsonwebtoken y bcrypt. Esto se puede realizar ejecutando el siguiente comando:

$ npm install express jsonwebtoken bcrypt

Estructura Básica del Proyecto

Puedes estructurar tu proyecto como se muestra a continuación:

|-- src  |   |-- index.js   |-- middlewares  |   |-- auth.js 

index.js será nuestro punto de entrada, mientras que auth.js manejará las funciones relacionadas con la autenticación.

Creamos una API Básica

A continuación, crearemos una API básica con Express:

// index.js const express = require(express); const app = express(); app.use(express.json()); app.get(/, (req, res) => { res.send(¡API funcionando!); }); const PORT = process.env.PORT || 3000; app.listen(PORT, () => { console.log(
Servidor corriendo en el puerto ${PORT}
); });

Implementando JWT para Autenticación

Código del Middleware auth.js

// auth.js const jwt = require(jsonwebtoken); const secretKey = mi_clave_secreta; module.exports.authenticateToken = (req, res, next) => { const token = req.header(x-access-token); if (!token) return res.status(403).send(Acceso denegado.); try { const verified = jwt.verify(token, secretKey); req.user = verified; next(); } catch (err) { res.status(401).send(Token inválido); } }; 

Aquí hemos definido un middleware simple que autentica la validez de los tokens pasados en las cabeceras HTTP.

Manejo de Usuarios y Generación de Tokens

A continuación, implementamos las rutas para registrar usuarios y generar tokens:

// index.js const bcrypt = require(bcrypt); const jwt = require(jsonwebtoken); const users = []; app.post(/register, async (req, res) => { try { const salt = await bcrypt.genSalt(10); const hashedPassword = await bcrypt.hash(req.body.password, salt); const user = { name: req.body.name, password: hashedPassword }; users.push(user); res.status(201).send(Usuario registrado!); } catch (err) { res.status(500).send(err.message); } }); app.post(/login, async (req, res) => { const user = users.find((user) => user.name === req.body.name); if (!user) return res.status(404).send(Usuario no encontrado); try { const validPassword = await bcrypt.compare(req.body.password, user.password); if (!validPassword) return res.status(400).send(Contraseña incorrecta); const token = jwt.sign({ _id: user._id }, mi_clave_secreta); res.header(x-access-token, token).send(¡Login exitoso!); } catch (err) { res.status(500).send(err.message); } }); 

Ahora hemos añadido rutas para el registro y login. Al iniciar sesión exitosamente, se generará un token JWT que se devolverá al cliente.

Explora más sobre tecnología aquí

Otros artículos que te podrían interesar