Novedades Versión
Versiónauth-core 0.2.0: verificación de email y MFA con app de autenticación
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 sintenant_idni permisos. Funciones:requestEmailVerificationyconfirmEmailVerification. - MFA con app de autenticación (TOTP, RFC 6238), implementado con
node:cryptoy 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 nuevousers.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-useryadmin-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: usannode:cryptoo 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
anonporque la migración0019hacíarevoke … from anon, que no revoca el grant aPUBLIC. Corregido en0020, 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.