Saltar al contenido

Lección 7 de 12 · Lectura y práctica

Autenticación con JWT y bcrypt

Lección práctica para aplicar Autenticación con JWT y bcrypt dentro de Construcción de APIs RESTful con Node.js y Express, con criterios de decisión, ejemplo guiado, ejercicio y checklist de salida.

Del concepto a la práctica

Taller de esta lección

La autenticación tiene dos momentos diferentes: verificar una credencial y demostrar después que una solicitud pertenece a una sesión válida. En un portal de consultas, la contraseña se compara con un hash almacenado; el token posterior identifica al usuario, pero no debe contener la contraseña ni datos innecesarios.

Ejemplo resuelto

Para el usuario lina@ejemplo.test, el registro guarda passwordHash, nunca password. Durante el acceso, una comparación positiva permite emitir un token con sub: "u17" y rol: "bibliotecaria". El middleware lee Authorization: Bearer <token>, verifica firma, algoritmo permitido, emisor, audiencia y caducidad, y coloca los claims validados en req.user; una firma inválida produce 401. Exige una expiración al emitir tokens, no aceptes tokens sin ella por defecto. Un JWT firmado no cifra su contenido: nunca incluyas secretos.

Pruébalo

  1. Registra una contraseña transformada en hash.

  2. Compara la contraseña recibida sin guardar su texto.

  3. Emite un token con identificador y rol mínimos.

  4. Protege una ruta y prueba ausencia, token inválido y token válido.

Error frecuente: devolver el hash en la respuesta o aceptar cualquier texto decodificado como token. Corrígelo excluyendo el campo sensible y verificando los claims antes de confiar en el contenido. Con bcrypt, rechaza contraseñas que excedan 72 bytes UTF-8 en vez de truncarlas silenciosamente; caracteres acentuados pueden ocupar varios bytes. El permiso de bibliotecaria requiere además autorización vigente del servidor.

Comprueba tu resultado

El registro no contiene la contraseña original. La prueba también rechaza un token caducado y uno con audiencia incorrecta; conocer un rol en el token no sustituye comprobar permisos actuales. Sin cabecera y con token inválido obtienes 401; con token válido, req.user.sub vale u17. Una contraseña incorrecta no emite token ni modifica datos.

Capas de acceso, actualización, copias y respuesta a incidentes alrededor de un sistema.
CursaloMapa de práctica
La seguridad necesita varias capas

El control de acceso, las actualizaciones y las copias de seguridad cubren riesgos distintos. Una alerta necesita un procedimiento de respuesta para contener y recuperar el servicio. Varias capas reducen la exposición, pero ninguna garantiza seguridad absoluta.

Ver la infografía en tamaño completo ↗

Sigue con Construcción de APIs RESTful con Node.js y Express

Esta lección forma parte de un curso de Cursalo. Revisa su programa y elige entre la compra individual o el acceso a toda la escuela.

Si ya tenías acceso a este curso, entra con tu cuenta: tus derechos y tu progreso se conservan. No necesitas comprarlo de nuevo.

01 / ELEGIR UNA RUTA

El próximo paso

Aprende IA mientras construyes algo que sí necesitas.

Empieza por el curso inicial o explora el catálogo para encontrar una práctica alineada con tu trabajo.