Copertina Osservatorio

Better Auth: framework di autenticazione open-source per TypeScript

Better Auth è un framework TypeScript framework-agnostic per autenticazione e autorizzazione self-hosted, con plugin per 2FA, passkey e multi-tenancy.

15 giugno 20267 min di lettura
better authautenticazione typescriptopen source authself-hosted authenticationframework auth

Cos'è

Better Auth è un framework open-source di autenticazione e autorizzazione scritto in TypeScript. Nasce con l'obiettivo di offrire agli sviluppatori una soluzione completa e autocontenuta per gestire identità, sessioni e permessi direttamente all'interno della propria applicazione e del proprio database, senza dipendere da servizi di terze parti. È distribuito con licenza MIT e progettato per essere indipendente dal framework frontend o dal runtime utilizzato.

Il progetto è stato fondato da Bereket Engida e pubblicato su GitHub nel 2024. Dopo aver rapidamente attratto l'attenzione della comunità TypeScript, è entrato a far parte del batch di primavera 2025 di Y Combinator e ha successivamente raccolto un round seed da 5 milioni di dollari. Nonostante la crescita, Better Auth rimane un progetto open-source con codice disponibile pubblicamente.

La filosofia di fondo è che l'autenticazione non debba essere delegata per forza a servizi gestiti, ma possa essere implementata in modo solido, type-safe ed estensibile all'interno dello stack tecnologico del team.

Il problema che risolve

Nell'ecosistema TypeScript la gestione dell'autenticazione è storicamente frammentata. Le librerie esistenti offrono spesso solo primitive di base — come la creazione di sessioni o il parsing di token OAuth — lasciando al team il compito di costruire a mano funzionalità come la registrazione via email, il recupero password, la gestione dei ruoli, l'autenticazione a due fattori o il supporto a più organizzazioni. Al contrario, i servizi gestiti come Clerk, Auth0 o Firebase Auth centralizzano i dati degli utenti su infrastrutture di terze parti, introducono costi ricorrenti e riducono il controllo su flussi, dati e conformità.

Better Auth si colloca nel mezzo: fornisce un framework pronto all'uso con funzionalità avanzate integrate, ma mantiene l'intero sistema di autenticazione sotto il controllo dello sviluppatore. Questo approccio risponde a esigenze di sovranità dei dati, personalizzazione dei flussi e riduzione delle dipendenze esterne, specialmente per startup, SaaS e applicazioni enterprise.

Come funziona

Better Auth si installa come pacchetto npm nel proprio progetto. Il cuore del sistema è una funzione di configurazione, solitamente esposta da un file auth.ts, in cui si definiscono i provider di autenticazione, i plugin attivi, l'adattatore del database e le opzioni di sicurezza. Il framework genera automaticamente endpoint API, gestisce le migrazioni del database e fornisce un client TypeScript per il frontend.

Il flusso tipico prevede:

  1. Installazione: npm install better-auth o equivalenti con pnpm/yarn/bun.
  2. Configurazione: si dichiara l'istanza betterAuth({ ... }) con i provider desiderati, ad esempio email/password, Google, GitHub, e i plugin come two-factor, passkey o organization.
  3. Database: tramite un adapter, Better Auth crea e gestisce le tabelle necessarie per utenti, account, sessioni e verifiche. Supporta ORM e query builder come Drizzle, Prisma e Kysely, oltre a MongoDB.
  4. Client: sul frontend si inizializza il client con l'URL dell'endpoint auth, ottenendo funzioni type-safe per login, logout, registrazione e lettura della sessione.
  5. Protezione rotte: sul server si utilizzano hook o middleware per verificare la sessione e proteggere risorse e API.

Il framework è compatibile con Next.js, Nuxt, Astro, Svelte, Vue, React, SolidStart, Hono e altri ambienti, inclusi runtime edge come Cloudflare Workers e Vercel Edge Functions.

Caratteristiche principali

Better Auth include un insieme ampio di funzionalità disponibili out-of-the-box o tramite plugin ufficiali:

  • Email e password: registrazione, login, hashing sicuro delle password, recupero password e verifica email.
  • Social login: supporto per decine di provider OAuth, tra cui Google, GitHub, Discord, Apple e altri.
  • Magic links: autenticazione passwordless tramite link inviato via email.
  • Passkey: supporto a WebAuthn per l'accesso senza password basato su biometrici o chiavi di sicurezza.
  • Two-factor authentication (2FA): autenticazione a due fattori tramite TOTP, utilizzabile come plugin.
  • Organizzazioni e multi-tenancy: gestione di team, membri, ruoli e permessi all'interno di organizzazioni.
  • Rate limiting: limitatore di richieste integrato, configurabile per proteggere gli endpoint di autenticazione.
  • Gestione automatica del database: creazione e aggiornamento delle tabelle necessarie, con supporto alle migrazioni.
  • Sessioni: gestione di cookie e token di sessione, con supporto alla multi-sessione.
  • Plugin ecosystem: architettura a plugin per estendere il framework con funzionalità come SSO, SCIM, Stripe, OAuth provider personalizzati e altro.
  • Type safety: API server e client completamente tipate in TypeScript.
  • CLI: strumento da riga di comando per inizializzare il progetto, generare lo schema e gestire la configurazione.
  • AI tooling: esposizione di un file llms.txt, skill per assistenti di coding e un server MCP per l'integrazione con modelli che supportano il Model Context Protocol.

Casi d'uso concreti

Better Auth si adatta a diversi scenari, dalla semplice applicazione web al SaaS complesso:

  • SaaS B2B: gestione di team, inviti, ruoli e organizzazioni con controllo degli accessi.
  • Applicazioni consumer: login rapido con email/password, OAuth o magic links, con opzione passkey per esperienze moderne.
  • Startup in crescita: soluzione scalabile senza costi di vendor all'aumentare degli utenti.
  • Applicazioni enterprise: necessità di tenere i dati di autenticazione on-premise o all'interno del proprio cloud, con supporto a funzionalità avanzate come 2FA e SSO.
  • Progetti con requisiti di privacy: controllo totale su dove risiedono i dati degli utenti, utile per conformità a GDPR e altre normative.
  • Applicazioni su edge: compatibilità con runtime serverless e edge, dove servizi tradizionali potrebbero avere latenza o limiti di compatibilità.

Punti di forza e limiti

Punti di forza

  • Ampia copertura funzionale senza dipendenze da servizi esterni.
  • Framework-agnostic e runtime-agnostic.
  • TypeScript-first, con forte type safety end-to-end.
  • Plugin system che consente di attivare solo le funzionalità necessarie.
  • Comunità attiva e sviluppo rapido.
  • Codice open-source sotto licenza MIT, quindi modificabile e auditabile.
  • Documentazione ricca e strumenti per l'integrazione con assistenti AI.

Limiti

  • La responsabilità operativa rimane interamente del team: database, backup, sicurezza, aggiornamenti e monitoraggio.
  • Non offre un'interfaccia utente predefinita: bisogna costruire i propri componenti di login, dashboard e gestione utenti.
  • Rispetto a servizi gestiti, richiede più competenze interne su autenticazione e sicurezza.
  • Alcune funzionalità avanzate, come SAML SSO, sono disponibili in plugin specifici che possono richiedere configurazioni complesse.
  • In alcuni confronti il bundle del pacchetto risulta più pesante rispetto a librerie più leggere, in quanto include molta logica integrata.

Alternative e contesto

Better Auth opera in un mercato affollato di soluzioni per l'autenticazione. Le principali alternative si dividono in due categorie: librerie self-hosted e servizi gestiti.

Tra le librerie self-hosted, Auth.js (precedentemente NextAuth.js) è la più consolidata, specialmente nell'ecosistema Next.js, con ampia copertura di provider OAuth e una comunità molto grande. Tuttavia richiede più lavoro manuale per funzionalità come organizzazioni, 2FA e passkey. Lucia è una libreria di primitive per sessioni, deprecata come pacchetto autonomo e ora raccomandata principalmente come riferimento architetturale; molti sviluppatori che la usavano sono migrati verso soluzioni più complete come Better Auth. Stack Auth offre un approccio più vicino ai servizi gestiti, con componenti UI predefiniti e dashboard, pur restando open-source.

Tra i servizi gestiti, Clerk è la scelta più popolare per chi cerca componenti UI pronte, gestione degli utenti e scalabilità senza occuparsi dell'infrastruttura, a fronte di un costo che cresce con gli utenti. Auth0 e WorkOS sono orientati a contesti enterprise con requisiti di SAML, SSO e supporto commerciale. Supabase Auth è la scelta naturale per chi utilizza già Supabase come backend.

Better Auth si distingue per chi vuole mantenere il controllo dei dati e avere un set di funzionalità moderne integrate, senza passare a un servizio gestito.

In sintesi

Better Auth è un framework open-source di autenticazione e autorizzazione per TypeScript che punta a rendere l'autenticazione self-hosted pratica, completa e moderna. Con supporto per email/password, OAuth, passkey, 2FA, organizzazioni e molto altro, si rivolge a team che vogliono sovranità sui dati degli utenti e flessibilità sui flussi di accesso. Richiede una maggiore responsabilità operativa rispetto ai servizi gestiti, ma offre in cambio controllo, trasparenza e una developer experience fortemente orientata a TypeScript.

Risorse

Hai letto fino a qui

🤔 Hai domande su questo argomento?

Posso aiutarti a capire come applicarlo al tuo business. Scegli come vuoi parlarmi.

— oppure —

💬 Chat: risposta immediata · 📧 Email: risposta personale entro 24h · 🔒 Niente spam

Continua a leggere