Skip to main content
Architecture11 min read

La autenticación es más difícil de lo que crees

He implementado autenticación 4 veces en diferentes proyectos. Cada vez pensé que me llevaría 2 días. Cada vez me llevó 2 semanas. Aquí está el porqué, y qué haría diferente.

Part ofCloud & Infrastructure->
By Jason TeixeiraDecember 28, 2025
AuthenticationSecuritySupabaseJWTArchitecture
Share:
On this page

Cada plan de proyecto que he escrito tiene una partida: "Autenticación — 2 días."

Cada retrospectiva de proyecto tiene una nota: "La autenticación tomó 2 semanas."

He construido sistemas de autenticación 4 veces hasta ahora. Cada vez, lo subestimo. Aquí está el porqué, y lo que finalmente aprendí.

El Iceberg

Lo que crees que es la autenticación:

  • Formulario de inicio de sesión
  • Almacenar un token
  • Verificar si el token es válido
  • Listo

Lo que realmente es la autenticación:

  • Formulario de inicio de sesión (email/contraseña + OAuth + enlaces mágicos + MFA?)
  • Hash de contraseñas (bcrypt, argon2, ¿qué factor de costo?)
  • Gestión de sesiones (JWT vs cookie de sesión vs ¿ambos?)
  • Renovación de tokens (renovación silenciosa, rotación, revocación)
  • Protección CSRF (cookies del mismo sitio, token de doble envío)
  • Límite de velocidad (en inicio de sesión, en registro, en restablecimiento de contraseña)
  • Flujo de restablecimiento de contraseña (generación de token, caducidad, uso único)
  • Verificación de email (token, lógica de reenvío, ¿qué pasa si cambian de email?)
  • Bloqueo de cuenta (¿cuántos intentos? ¿Cuál es el flujo de desbloqueo?)
  • Acceso basado en roles (admin vs usuario vs moderador)
  • Gestión de claves API (para acceso programático)
  • Invalidación de sesión al cambiar la contraseña
  • "Recordarme" vs "solo esta sesión"
  • Notificación de inicio de sesión desde un nuevo dispositivo
  • Registro de auditoría (quién inició sesión, cuándo, desde dónde)

Eso son 15+ funcionalidades. A 1-2 días cada una, estás mirando un mes.

Lo Que Hago Ahora: Usar Supabase Auth y Extender

Después de construir autenticación personalizada dos veces y odiar mi vida ambas veces, ahora empiezo con Supabase Auth (o Clerk, o Auth.js). Maneja:

  • Email/contraseña con bcrypt
  • Proveedores OAuth (Google, GitHub, Discord)
  • Tokens JWT con renovación
  • Verificación de email
  • Restablecimiento de contraseña
  • Gestión de sesiones
  • Límite de velocidad

Eso es el 80% de la autenticación, manejado por personas que piensan en autenticación a tiempo completo. Me enfoco en el 20% que es específico de mi aplicación:

\\

Reader route

article -> proof -> offer

ReadClusterProofScope

cluster

Cloud & Infrastructure

intent

Architecture

route

next step

What to do with this

Turn the note into a build path.

If this topic maps to a real business problem, keep reading the cluster, study the academy path, or route the work into a scoped engagement.

Jason Teixeira
Written by
Jason Teixeira
Founder, Sage Ideas Studio · Principal Engineer
livebuild 5d6c8652026-08-05 06:00Z
// solo studio// no analytics resold// every commit human-reviewed