Blog

Seguridad en APIs REST: autenticación, autorización y gestión de tokens

Construir APIs seguras no es complicado si entiendes los fundamentos de autenticación y autorización.

#seguridad#apis#autenticacion#backend#jwt

La seguridad en APIs no tiene que ser un tema oscuro. Con los patrones correctos, puedes construir endpoints que protegen datos sin ser paranoico ni sacrificar usabilidad.

Autenticación vs Autorización: dos conceptos distintos

Autenticación responde: "¿eres quien dices que eres?" Autorización responde: "¿tienes permiso para hacer esto?" Mezclarlas es un error común que causa agujeros de seguridad.

La autenticación auténtica (validar credenciales) ocurre una sola vez. La autorización ocurre en cada petición.

  • Autenticación: valida credenciales una sola vez.
  • Autorización: chequea permisos en cada acción.
  • Ambas necesitan ir juntas, pero son capas distintas.

Tokens y sesiones: qué opción elegir

Tokens (JWT) son stateless: el servidor no guarda nada, el cliente envía el token en cada petición. Sesiones son stateful: el servidor guarda estado, el cliente envía una cookie.

Tokens son mejores para APIs públicas y clientes móviles. Sesiones son más simples para aplicaciones web tradicionales. Ambas son válidas si se usan bien.

  1. Tokens: sin estado en servidor, escalables.
  2. Sesiones: más simples, seguridad de cookies built-in.
  3. Elige según tu arquitectura y clientes.

JWT: estructura, validación y cuidados

Un JWT tiene tres partes: header, payload y signature. El servidor firma el token, el cliente lo envía en cada petición y el servidor verifica la firma. El contenido es visible pero no modificable sin que se note.

El cuidado más importante: mantén secretos en el servidor, no en clientes. Si exponés tu clave de firma, es un desastre.

  • Firma con clave privada, valida con pública si es asimétrica.
  • Expira tokens: no duren para siempre.
  • Usa HTTPS siempre: tokens viajan en texto claro en el payload.

Permisos y roles sin romper con buena estructura

En lugar de checkear permisos manualmente en cada endpoint, usa middlewares o decoradores que lo automaticen. Declara qué rol o permiso necesita cada ruta y deja que el framework lo valide.

Cuando los permisos están centralizados, cambiarlos no requiere buscar y editar 50 endpoints.

La seguridad que requiere editar código en muchos lugares no va a escalar. Centraliza la lógica de autorización.

Errores que evitar

No expongas detalles de autenticación en mensajes de error. No confíes en tokens enviados en URLs (usa headers). No guardes secretos en código o .env sin encriptar. No olvides validar entrada incluso con autenticación en lugar.

La mayoría de brechas de seguridad no vienen de problemas criptográficos, vienen de implementación descuidada.

04 / Contacto

¿Hablamos de tu próximo sistema?

Cuéntame el problema que quieres resolver. Respondo en un día laborable y planteo una ruta de acción en el primer mensaje.

Iniciar conversación →