Novedades Versión

Versión

auth-core 0.2.0: verificación de email y MFA con app de autenticación

· 3 min de lectura · Hugo Lázaro Gandul

auth-core es el paquete que lleva el tenant_id, el rol y los permisos al JWT. La versión 0.2.0 añade dos filtros antes de darle esos claims a nadie.

Novedades

  • Verificación de email obligatoria. Tablas y tokens propios (pgcrypto), no el «Confirm email» nativo de Supabase Auth. Mientras el email no esté verificado, el token sale sin tenant_id ni permisos. Funciones: requestEmailVerification y confirmEmailVerification.
  • MFA con app de autenticación (TOTP, RFC 6238), implementado con node:crypto y Web Crypto, sin depender del MFA nativo de Supabase. Incluye códigos de recuperación de un solo uso y una ventana de «sesión recordada» configurable.
  • Restablecimiento de credenciales por un administrador (sendPasswordResetLink, changeUserEmail), con el permiso nuevo users.manage_credentials.
  • Alta de usuarios en un solo paso (provisionUser): invita la identidad y asigna la membresía, respetando el guard de escalada de privilegios.
  • Cinco Edge Functions nuevas: mfa-enroll, mfa-verify, mfa-disable, admin-provision-user y admin-reset-credentials.
  • Una interfaz única (IdentityProviderAdapter) aísla lo que el paquete necesita de la Admin API de Supabase Auth.

Cambios y correcciones

  • Para una cuenta ya verificada y sin MFA, el hook no cambia nada.
  • Entry point nuevo @kaizenith/auth-core/server. El código TOTP, los códigos de recuperación y el adaptador de identidad dejaron de exportarse desde el entry point principal: usan node:crypto o solo tienen sentido con la service role, y en el barril principal acababan en el bundle de cualquier app de navegador. Se encontró construyendo la demo, no en una revisión teórica.
  • Seguridad: tres funciones eran ejecutables por anon porque la migración 0019 hacía revoke … from anon, que no revoca el grant a PUBLIC. Corregido en 0020, con un test nuevo que comprueba los privilegios de ejecución. Está explicado en el artículo «Cinco fugas reales» y en el registro de seguridad.
  • Se corrigió una sintaxis de TypeScript que rompía el build de cualquier proyecto con erasableSyntaxOnly.

Entrada retroactiva: reconstruida a partir del CHANGELOG.md de auth-core.

← Todas las novedades