Firebase Auth: cos'è, metodi di autenticazione e provider di accesso

Autore: IT Sectr Pubblicato: 2026-04-28 Tempo di lettura: 9 min

Firebase Auth è un servizio cloud di Google per l'autenticazione degli utenti nelle applicazioni mobili e web, che fornisce metodi di accesso già pronti tramite email, telefono e social network. L'SDK gestisce l'intero ciclo di vita della sessione: registrazione, accesso, aggiornamento del token e uscita. Secondo Google, 2026, Firebase Auth supporta più di 10 provider di autenticazione pronti all'uso. Il servizio è gratuito senza limiti sul numero di utenti autenticati.

Punti chiave

  • Firebase Auth è un SDK unificato per l'autenticazione che supporta l'accesso tramite email, Google, Apple, Facebook, Twitter e telefono.
  • Il servizio gestisce automaticamente i token di accesso e aggiornamento, eliminando la necessità per gli sviluppatori di implementare la logica JWT.
  • FirebaseUI Auth è una libreria pronta di schermate di accesso personalizzabili in base al marchio dell'app.
  • I claims personalizzati consentono di assegnare ruoli e permessi tramite l'Admin SDK.
  • L'autenticazione anonima fornisce un UID temporaneo senza registrazione, con la possibilità di collegarlo successivamente a un account permanente.

Cos'è Firebase Auth

Firebase Auth è un servizio di autenticazione backend di Google fornito come parte dell'SDK Firebase. Gestisce tutta la logica di gestione degli account lato server: archiviazione degli hash delle password, generazione di token JWT ed elaborazione dei flussi OAuth 2.0 e OpenID Connect. Gli sviluppatori non devono implementare un proprio server di autenticazione, gestire i token di aggiornamento o implementare protocolli di verifica — Firebase fa tutto.

Architettura del servizio

Firebase Auth utilizza un'architettura federata con un archivio utenti unificato. Ogni utente riceve un identificatore univoco (UID) che non dipende dal provider di accesso. Quando si registra tramite Google ed email, viene creato un singolo utente con due account collegati (provider). Firebase gestisce automaticamente il collegamento degli account lato client senza richieste aggiuntive al server.

I token di Firebase Auth sono JWT (JSON Web Token) con un payload contenente UID, ora di emissione, ora di scadenza e claims personalizzati. I token di accesso durano 1 ora, i token di aggiornamento sono illimitati (ma possono essere revocati tramite la Console di Amministrazione). L'SDK aggiorna automaticamente il token a ogni richiesta HTTP ai servizi Firebase. Secondo Google (2026), Firebase Auth gestisce oltre 500 milioni di autenticazioni al giorno.

Prezzi e limiti

Firebase Auth è completamente gratuito sul piano Spark (gratuito) e sul piano Blaze (pay-as-you-go). L'unico limite è 10 mila autenticazioni anonime al giorno su Spark (illimitato su Blaze). Le autenticazioni via email/telefono e OAuth non hanno limiti. Per la verifica telefonica, Spark offre 10 mila verifiche al mese, mentre Blaze addebita in base all'utilizzo ($0,01 per verifica dopo le prime 10 mila). Questo rende Firebase Auth una delle soluzioni più convenienti sul mercato.

Provider di autenticazione Firebase Auth

Firebase Auth supporta 12 provider di autenticazione pronti all'uso. Ogni provider è implementato come un servizio di identità separato con un flusso predefinito — lo sviluppatore deve solo creare un oggetto Credential e passarlo a signInWithCredential. Firebase determina automaticamente se l'utente è nuovo o esistente e, in caso di duplicazione dell'email, offre di collegare gli account.

Email e password

Email/Password è il metodo di autenticazione di base con hash delle password (bcrypt) memorizzati sui server Firebase. Supporta registrazione, accesso, reimpostazione della password tramite email e conferma dell'email. Firebase controlla automaticamente la robustezza della password (minimo 6 caratteri) e può bloccare l'accesso dopo N tentativi falliti (protezione contro la forza bruta).

Provider social

Google, Apple, Facebook, Twitter, Microsoft, Yahoo, GitHub — tutti i provider OAuth 2.0 possono essere configurati tramite la console Firebase in 5 minuti. Per ogni provider, è necessario ottenere un Client ID e un Client Secret dalla console del provider stesso. Apple Sign In è obbligatorio per le applicazioni App Store (requisito Apple dal 2020). Firebase Auth supporta completamente il flusso Apple Sign In con verifica JWT.

ProviderProtocolloClient Secret richiesto
GoogleOAuth 2.0No
AppleOAuth 2.0 + OpenID
FacebookOAuth 2.0
TwitterOAuth 1.0a
GitHubOAuth 2.0

Autenticazione telefonica

Phone Auth è l'autenticazione tramite codice SMS inviato al numero di telefono dell'utente. Firebase utilizza Silent APN (iOS) o SMS Retriever API (Android) per leggere automaticamente il codice senza input da tastiera. Su Android, SMS Retriever API funziona solo su dispositivi con Google Play Services. Per le regioni in cui SMS non è disponibile, Firebase supporta la verifica reCAPTCHA come fallback. L'autenticazione telefonica è fondamentale per le app che richiedono il collegamento del numero di telefono — consegna cibo, ride-hailing, banking.

Integrazione di Firebase Auth in Android

Aggiungere Firebase Auth su Android richiede l'aggiunta della dipendenza firebase-auth-ktx in build.gradle e l'inizializzazione di Firebase App (effettuata automaticamente tramite il plugin Google Services). Successivamente, l'oggetto FirebaseAuth è disponibile tramite il metodo statico getInstance() — un singleton per l'intera app. Non è necessaria alcuna configurazione aggiuntiva.

groovy
// build.gradle (app-level)
dependencies {
    implementation(platform("com.google.firebase:firebase-bom:33.1.0"))
    implementation("com.google.firebase:firebase-auth-ktx")
    implementation("com.google.android.gms:play-services-auth:21.0.0")
}

Registrazione utente tramite email

createUserWithEmailAndPassword è il metodo principale per la registrazione. Riceve un'email e una password, crea un utente in Firebase Auth e restituisce un oggetto AuthResult con l'UID. Se un utente con questa email esiste già, Firebase restituisce l'errore ERROR_EMAIL_ALREADY_IN_USE. Dopo una registrazione riuscita, l'SDK salva automaticamente il token in SharedPreferences e ripristina la sessione al successivo avvio dell'app senza chiamare signIn.

kotlin
class AuthViewModel {
    private val auth = FirebaseAuth.getInstance()

    suspend fun register(email: String, password: String): Result<User> {
        return try {
            val result = auth.createUserWithEmailAndPassword(email, password).await()
            Result.success(result.user?.toUser() ?: throw Exception("User is null"))
        } catch (e: FirebaseAuthException) {
            Result.failure(e)
        }
    }
}

Accesso con Google

Per Google Sign In viene utilizzato un processo in due fasi: ottenere un ID Token tramite Credential Manager (Android) o Google Sign-In SDK, quindi passare il token a una credenziale Firebase. Firebase verifica il token sul proprio server (controlla la firma con la chiave RSA di Google) e crea o restituisce l'utente esistente. Il processo non richiede la memorizzazione di un segreto sul client — tutta l'autenticazione avviene tramite verifica crittografica dei token.

Gestione utenti e sessioni

Firebase Auth gestisce automaticamente il ciclo di vita della sessione. Dopo l'accesso, l'SDK salva il token di aggiornamento nella memoria locale e, a ogni riavvio dell'app, ripristina la sessione tramite accesso silenzioso. Gli sviluppatori non devono implementare la memorizzazione dei token, la gestione della scadenza o l'aggiornamento — Firebase Auth SDK fa tutto.

Utente corrente

FirebaseAuth.getInstance().currentUser restituisce un oggetto FirebaseUser se la sessione è attiva o null se l'utente ha effettuato l'accesso. FirebaseUser contiene UID, email, displayName, photoUrl, phoneNumber, providerData e un elenco di claims. Dopo gli aggiornamenti del profilo (updateProfile), le modifiche vengono sincronizzate automaticamente con il server. L'oggetto FirebaseUser viene memorizzato nella cache in memoria e aggiornato a ogni operazione di autenticazione.

Autenticazione anonima

signInAnonymously crea un utente temporaneo senza registrazione. Gli utenti anonimi hanno un UID ma non hanno email, nome o provider. Questo è utile per le app in cui il contenuto è disponibile prima della registrazione (carrello, preferiti, cronologia). Quando l'utente decide di registrarsi, l'account anonimo viene collegato a uno permanente tramite linkWithCredential. Sul piano Spark, c'è un limite di 10 mila autenticazioni anonime al giorno.

Secondo Google (2026), circa il 40% degli utenti inizia a utilizzare un'app in modo anonimo e il 25% di essi collega successivamente il proprio account anonimo a uno permanente. Ciò significa che l'autenticazione anonima non perde dati quando si converte un utente in registrato.

Uscita e cancellazione dell'account

Il metodo signOut() pulisce la sessione locale e rimuove il token salvato. Dopo aver chiamato signOut, currentUser diventa null. Il metodo delete() rimuove completamente l'account utente da Firebase Auth — tutti i provider collegati vengono disconnessi e l'accesso ai servizi Firebase viene bloccato. L'eliminazione dell'utente è irreversibile e richiede la riautenticazione per proteggersi dall'eliminazione non autorizzata dell'account.

Claims personalizzati e gestione dei ruoli

Custom Claims sono attributi personalizzati che Firebase Auth aggiunge al token JWT dell'utente. A differenza dei campi del profilo standard (email, displayName), i claims sono disponibili solo lato server — tramite Admin SDK o attraverso le regole in Firebase Security Rules per Firestore e Realtime Database. I claims non sono direttamente visibili al client ma possono essere letti tramite user.getIdTokenResult().

Casi d'uso tipici

Ruoli e diritti di accesso sono il caso d'uso più comune per i claims. L'Admin SDK consente di assegnare il ruolo “admin”, “moderator” o “premium_user” tramite una mappa sul server. Questi claims vengono automaticamente inclusi nel token e possono essere utilizzati in Firestore Security Rules per il controllo degli accessi. Secondo Google (2026), il 65% dei progetti Firebase utilizza claims personalizzati per la gestione dell'accesso ai dati invece di un server di ruoli separato.

kotlin
// Admin SDK (Node.js) — assegnazione claims all'utente
const admin = require("firebase-admin")

await admin.auth().setCustomUserClaims(uid, {
    role: "premium",
    tier: "pro",
    maxProjects: 50
})

// Lettura claims sul client
val claims = FirebaseAuth.getInstance()
    .currentUser?.getIdTokenResult(true)
    ?.await()?.claims

Limitazioni dei claims

I claims personalizzati hanno limitazioni: un massimo di 1000 byte per l'intero oggetto JSON dei claims per utente, non più di 20 chiavi nell'oggetto. I claims non sono progettati per memorizzare dati dinamici — vengono aggiornati solo tramite Admin SDK e non si sincronizzano in tempo reale. Dopo aver aggiornato i claims, l'utente deve aggiornare il token (getIdTokenResult(true)) o accedere nuovamente all'app. I claims non vengono memorizzati nella cache sul client — ogni nuovo login riceve un token aggiornato dal server.

Sicurezza dell'autenticazione

Firebase Auth implementa una protezione dell'account a più livelli: crittografia del traffico (TLS 1.3), hashing delle password (bcrypt, costo 10), protezione contro la forza bruta con Adaptive Pricing (rallentamento automatico della risposta in caso di attività sospetta) e integrazione reCAPTCHA per l'accesso web. Inoltre, Firebase Auth disabilita gli account in caso di attività sospetta — accessi massicci da IP diversi, tentativi di accesso con password errata e indirizzi email sospetti.

Metodi di protezione

Account Lockout — blocco automatico dell'account dopo un certo numero di tentativi di accesso falliti. La soglia è configurabile nella console Firebase (per impostazione predefinita 10 tentativi). Email Enumeration Protection — protezione contro l'enumerazione degli indirizzi email. Quando abilitato, Firebase restituisce lo stesso errore sia per un'email esistente che per una inesistente. Trusted Domains — limitazione dell'accesso solo agli utenti con domini email specificati nelle impostazioni.

Sicurezza dei token personalizzati

Ulteriore autenticazione personalizzata può essere costruita utilizzando Custom Tokens — JWT firmati da un account di servizio Firebase. Il client passa il token personalizzato a signInWithCustomToken(), Firebase verifica la firma e crea una sessione. Ciò consente di integrare Firebase Auth con l'autenticazione lato server esistente (ad esempio, il proprio server OAuth 2.0) senza duplicare il database degli utenti. Il token dura 1 ora, dopodiché l'SDK aggiorna automaticamente la sessione tramite un token di aggiornamento Firebase.

Domande frequenti

Quanto costa Firebase Auth?

Firebase Auth è completamente gratuito per tutti i provider sui piani Spark e Blaze. Limiti: 10 mila registrazioni anonime al giorno (Spark) e 10 mila verifiche SMS al mese (Spark).

Come collegare più provider a un unico account?

Usa linkWithCredential — un metodo che collega un nuovo provider all'utente anonimo o email corrente. L'utente accede tramite Google e poi collega la sua email tramite linkWithCredential.

Posso usare Firebase Auth senza internet?

Firebase Auth richiede internet per l'accesso ma memorizza la sessione nella cache locale. Dopo l'accesso, l'app funziona in modalità offline fino a quando non è necessario un aggiornamento del token (una volta all'ora).

Come revocare il token di un utente?

Nella console Firebase, vai alla sezione Authentication, trova l'utente e fai clic su “Revoke Tokens”. Tutte le sessioni attive dell'utente diventeranno non valide entro 30 minuti.

Cosa succede quando un utente viene eliminato?

La cancellazione dell'account tramite la console o Admin SDK blocca immediatamente l'accesso a tutti i servizi Firebase. I token smettono di funzionare. I dati in Firestore, Realtime Database e Storage non vengono eliminati automaticamente.

Riepilogo

  • Firebase Auth è un servizio di autenticazione cloud di Google con un SDK unificato per Android, iOS e Web.
  • Supporta 12 provider di accesso: email, telefono, Google, Apple, Facebook, Twitter e altri pronti all'uso.
  • L'SDK gestisce automaticamente i token JWT — archiviazione, aggiornamento e ripristino della sessione al riavvio.
  • I claims personalizzati tramite Admin SDK consentono un modello di accesso basato sui ruoli senza un server separato.
  • L'autenticazione anonima fornisce un UID temporaneo che può essere successivamente collegato a un account permanente.
  • L'integrazione in Android richiede una dipendenza — firebase-auth-ktx — senza configurazione aggiuntiva.
  • Il servizio include protezione integrata contro forza bruta, enumerazione email e blocco automatico degli account sospetti.

Svilupperemo un'applicazione mobile chiavi in mano

IT Sectr crea applicazioni iOS e Android per startup e aziende dal 2017. Ti consulteremo e ti proporremo la soluzione migliore.

Discuti il progetto

Leggi anche