La versione più recente di Google Identity Toolkit è stata rilasciata come Firebase Authentication. In futuro, il lavoro sulle funzionalità di Identity Toolkit verrà bloccato e lo sviluppo di tutte le nuove funzionalità verrà eseguito su Firebase Authentication. Invitiamo gli sviluppatori di Identity Toolkit a passare a Firebase Authentication non appena possibile per le loro applicazioni. Tuttavia, Identity Toolkit continua a funzionare e non verrà ritirato senza un ulteriore annuncio.
Nuove funzionalità
Firebase Authentication presenta già alcuni miglioramenti significativi delle funzionalità rispetto a Google Identity Toolkit:
Accesso a tutto Firebase
Firebase è una piattaforma mobile che ti aiuta a sviluppare rapidamente app di alta qualità, far crescere la tua base utenti e guadagnare di più. Firebase è composto da funzionalità complementari che puoi combinare in base alle tue esigenze e include un'infrastruttura per: Analytics mobile, Cloud Messaging, Realtime Database, archiviazione di file, Hosting statico, Remote Config, Crash Reporting mobile e test Android.
UI aggiornate
Abbiamo completamente ricostruito i flussi della UI in base alle ultime ricerche UX di Google. Sono inclusi il recupero della password, il collegamento dell'account e i flussi di disambiguazione degli account nuovi/esistenti, che spesso richiedono molto tempo per la programmazione e il debug. Integra Smart Lock per password su Android, che ha migliorato notevolmente la conversione di accesso e registrazione per le app partecipanti. Supporta anche semplici modifiche ai temi per adattarli alla tua applicazione e, per la massima personalizzabilità, le versioni per Android e iOS sono state rese open source.
Configurazione semplificata del server
Abbiamo semplificato l'utilizzo di Firebase Authentication per gli sviluppatori. Con Identity Toolkit, abbiamo notato che molti sviluppatori hanno scelto di non implementare il flusso di recupero dell'email, rendendo impossibile per gli utenti recuperare i propri account se dimenticavano la password. Firebase Authentication può inviare messaggi di verifica email, reimpostazione password e modifica password all'utente e il testo può essere facilmente personalizzato per i tuoi utenti. Inoltre, non è più necessario ospitare i widget UI per ospitare i reindirizzamenti e completare le operazioni di modifica della password.
Nuova Console di amministrazione
Firebase ha una nuova Console per sviluppatori e la sezione Autenticazione ti consente di visualizzare, modificare ed eliminare i tuoi utenti. Questo può essere di grande aiuto per il debug dei flussi di accesso e registrazione. La console consente inoltre di configurare i metodi di autenticazione e personalizzare i modelli di email.
Nuovi SDK
Tutte le API server di Identity Toolkit sono ora disponibili in modo nativo con ciascuna delle nostre librerie client (Android, iOS, web). Gli sviluppatori potranno far accedere e registrare utenti vecchi e nuovi, accedere alle proprietà degli utenti, collegare, aggiornare ed eliminare account, reimpostare le password e altro ancora senza essere vincolati a una UI fissa. Se preferisci, puoi creare manualmente l'intero flusso e l'esperienza di accesso in base a questa API.
Gestione delle sessioni per le app mobile
Con Identity Toolkit, le app creavano il proprio stato della sessione in base all'evento di autenticazione iniziale di Identity Toolkit. Firebase Auth utilizza un servizio di backend che prende un token di aggiornamento, generato dall'evento di autenticazione, e lo scambia con token di accesso di un'ora per Android, iOS e JavaScript. Quando un utente modifica la propria password, i token di aggiornamento non saranno più in grado di generare nuovi token di accesso, disattivando così l'accesso finché l'utente non si autentica nuovamente su quel dispositivo.
Autenticazione anonima e GitHub
Firebase Authentication supporta due nuovi tipi di autenticazione: GitHub e anonima. L'accesso anonimo può essere utilizzato per creare un ID utente univoco senza richiedere all'utente di eseguire alcuna procedura di accesso o registrazione. Con un utente anonimo, ora puoi effettuare chiamate API autenticate, come faresti con un utente normale. Quando l'utente decide di registrare un account, tutte le attività vengono conservate con lo stesso ID utente. Questa opzione è ideale per situazioni come un carrello degli acquisti lato server o qualsiasi applicazione in cui vuoi coinvolgere l'utente prima di inviarlo a un flusso di registrazione.
Differenze tra le funzionalità
Alcune funzionalità di Identity Toolkit non sono attualmente disponibili in Firebase Authentication, mentre altre sono state riprogettate e funzionano in modo diverso. Se queste funzionalità sono importanti per la tua app, potresti scegliere di non eseguire la migrazione immediatamente. In molti casi, queste funzionalità potrebbero non essere importanti per la tua app o potrebbero essere disponibili semplici alternative che ti consentiranno di procedere con la migrazione.
Differenze lato server
Il servizio Identity Toolkit di base con le API REST sottostanti, la logica di convalida dell'account e il database degli utenti principali hanno subito solo aggiornamenti minori. Tuttavia, alcune funzionalità e il modo in cui integri Firebase Authentication nel tuo servizio sono cambiati.
Provider di identità
PayPal e AOL non sono supportati. Gli utenti con account di questi IdP possono comunque accedere alla tua applicazione con il flusso di recupero della password e configurare una password per il proprio account.
Librerie server
Attualmente, gli SDK Firebase Admin sono disponibili per Java, Node.js, Python, Go e C#.
Email di gestione dell'account
I messaggi di reimpostazione password, verifica email e modifica email possono essere inviati da Firebase o dal server di posta dello sviluppatore. Al momento, i modelli di email di Firebase offrono solo una personalizzazione limitata.
Conferma della modifica dell'indirizzo email
In Identity Toolkit, quando un utente decide di modificare il proprio indirizzo email, viene inviata un'email al nuovo indirizzo con un link per continuare il flusso di modifica dell'indirizzo email.
Firebase conferma la modifica dell'indirizzo email inviando un'email di revoca al vecchio indirizzo email con un link per annullare la modifica.
Implementazione del provider di identità
Identity Toolkit aveva la possibilità di aggiungere gradualmente i provider di identità al tuo sistema di accesso, in modo da poter sperimentare l'impatto sulle tue richieste di assistenza. Questa funzionalità è stata rimossa in Firebase Authentication.
Differenze lato client
In Firebase, le funzionalità fornite da Google Identity Toolkit sono suddivise in due componenti:
SDK Firebase Authentication
In Firebase Authentication, la funzionalità fornita dall'API REST di Identity Toolkit è stata pacchettizzata in SDK client disponibili per Android, iOS e JavaScript. Puoi utilizzare l'SDK per far accedere e registrare gli utenti, accedere alle informazioni del profilo utente, collegare, aggiornare ed eliminare account e reimpostare le password utilizzando l'SDK client anziché comunicare con il servizio di backend tramite chiamate REST.
FirebaseUI Auth
Tutti i flussi della UI che gestiscono l'accesso, la registrazione, il recupero della password e il collegamento degli account sono stati ricostruiti utilizzando gli SDK Firebase Authentication. Sono disponibili come SDK open source per iOS e Android per consentirti di personalizzare completamente i flussi in modi non possibili con Identity Toolkit.
Altre differenze includono:
Sessioni e migrazione
Poiché le sessioni vengono gestite in modo diverso in Identity Toolkit e Firebase Authentication, le sessioni esistenti degli utenti verranno terminate dopo l'upgrade dell'SDK e gli utenti dovranno accedere di nuovo.
Prima di iniziare
Prima di poter eseguire la migrazione da Identity Toolkit a Firebase Authentication, devi
Apri la console Firebase, fai clic su Importa progetto Google e seleziona il progetto Identity Toolkit.
Fai clic su settings > Autorizzazioni per aprire la pagina IAM e amministrazione.
Apri la Account di servizio. Qui puoi vedere il service account che hai configurato in precedenza per Identity Toolkit.
Accanto al service account, fai clic su more_vert > Crea chiave. Poi, nella finestra di dialogo Crea chiave privata, imposta il tipo di chiave su JSON e fai clic su Crea. Viene scaricato un file JSON contenente le credenziali del service account. Ti servirà per inizializzare l'SDK nel passaggio successivo.
Torna alla console Firebase. Nella sezione Autenticazione, apri la pagina Modelli email. In questa pagina, personalizza i modelli di email della tua app.
In Identity Toolkit, quando gli utenti reimpostavano le password, modificavano gli indirizzi email e verificavano i propri indirizzi email, dovevi ottenere un codice OOB dal server Identity Toolkit e poi inviarlo agli utenti via email. Firebase invia email in base ai modelli configurati senza richiedere ulteriori azioni.
(Facoltativo) Se devi accedere ai servizi Firebase sul tuo server, installa l'SDK Firebase.
Puoi installare il modulo Node.js di Firebase con
npm:$ npm init $ npm install --save firebase-adminNel codice, puoi accedere a Firebase utilizzando:
var admin = require('firebase-admin'); var app = admin.initializeApp({ credential: admin.credential.cert('path/to/serviceAccountCredentials.json') });
Poi, completa i passaggi di migrazione per la piattaforma della tua app: Android, iOS, web.
Server e JavaScript
Modifiche principali
Esistono altre differenze nell'implementazione web di Firebase rispetto a Identity Toolkit.
Gestione delle sessioni web
In precedenza, quando un utente eseguiva l'autenticazione utilizzando il widget Identity Toolkit, veniva impostato un cookie per l'utente che veniva utilizzato per eseguire il bootstrap della sessione. Questo cookie aveva una durata di due settimane e veniva utilizzato per consentire all'utente di utilizzare il widget di gestione dell'account per modificare la password e l'indirizzo email. Alcuni siti utilizzavano questo cookie per autenticare tutte le altre richieste di pagine sul sito. Altri siti hanno utilizzato il cookie per creare i propri cookie tramite il sistema di gestione dei cookie del loro framework.
Gli SDK client di Firebase ora gestiscono i token ID Firebase e interagiscono con il backend di Firebase Authentication per mantenere aggiornata la sessione. Il backend fa scadere le sessioni quando si verificano modifiche importanti all'account (ad esempio modifiche alla password dell'utente). I token ID Firebase non vengono impostati automaticamente come cookie sul client web e hanno una durata di un'ora. A meno che tu non voglia sessioni di un'ora, i token ID Firebase non sono adatti per essere utilizzati come cookie per convalidare tutte le richieste di pagina. Dovrai invece configurare un listener per quando l'utente è connesso, ottenere il token ID Firebase, convalidare il token e creare il tuo cookie tramite il sistema di gestione dei cookie del tuo framework.
Dovrai impostare la durata della sessione del cookie in base alle esigenze di sicurezza della tua applicazione.
Flusso di accesso web
In precedenza, gli utenti venivano reindirizzati a
accountchooser.comquando veniva avviato l'accesso per sapere quale identificatore volevano utilizzare. Il flusso dell'interfaccia utente di Firebase Auth ora inizia con un elenco di metodi di accesso, tra cui un'opzione email che rimanda aaccountchooser.comper il web e utilizza l'API hintRequest su Android. Inoltre, gli indirizzi email non sono più obbligatori nella UI di Firebase. In questo modo sarà più facile supportare gli utenti anonimi, gli utenti con autenticazione personalizzata o gli utenti di provider per i quali gli indirizzi email non sono obbligatori.Widget di gestione dell'account
Questo widget fornisce un'interfaccia utente che consente agli utenti di modificare gli indirizzi email, cambiare la password o scollegare i propri account dai provider di identità. È attualmente in fase di sviluppo.
Pulsante/widget di accesso
I widget come il pulsante di accesso e la scheda utente non sono più disponibili. Possono essere create molto facilmente utilizzando l'API Firebase Authentication.
Nessun signOutUrl
Dovrai chiamare
firebase.auth.signOut()e gestire il callback.Nessun oobActionUrl
L'invio delle email è ora gestito da Firebase e viene configurato nella console Firebase.
Personalizzazione CSS
FirebaseUI utilizza lo stile Material Design Lite, che aggiunge dinamicamente le animazioni di Material Design.
Passaggio 1: modifica il codice del server
Se il tuo server si basa sul token di Identity Toolkit (valido per due settimane) per gestire le sessioni degli utenti web, devi convertire il server in modo che utilizzi il proprio cookie di sessione.
- Implementa un endpoint per convalidare il token ID Firebase e impostare il cookie di sessione per l'utente. L'app client invia il token ID Firebase a questo endpoint.
- Se la richiesta in arrivo contiene il tuo cookie di sessione, puoi considerare l'utente autenticato. In caso contrario, considera la richiesta come non autenticata.
- Se non vuoi che i tuoi utenti perdano le sessioni di accesso esistenti, devi attendere due settimane per la scadenza di tutti i token Identity Toolkit o eseguire anche la convalida dei token doppi per la tua applicazione web, come descritto di seguito nel passaggio 3.
Successivamente, poiché i token Firebase sono diversi dai token Identity Toolkit, devi aggiornare la logica di convalida dei token. Installa l'SDK Firebase Server sul tuo server oppure, se utilizzi un linguaggio non supportato dall'SDK Firebase Server, scarica una libreria di convalida dei token JWT per il tuo ambiente e convalida correttamente il token.
Quando apporti per la prima volta gli aggiornamenti di cui sopra, potresti avere ancora percorsi del codice che si basano sui token di Identity Toolkit. Se hai applicazioni per iOS o app per Android, gli utenti dovranno eseguire l'upgrade alla nuova versione dell'app per far funzionare i nuovi percorsi del codice. Se non vuoi forzare gli utenti ad aggiornare la tua app, puoi aggiungere un'ulteriore logica di convalida del server che esamina il token e determina se deve utilizzare l'SDK Firebase o l'SDK Identity Toolkit per convalidare il token. Se hai solo un'applicazione web, tutte le nuove richieste di autenticazione verranno trasferite a Firebase e, pertanto, dovrai utilizzare solo i metodi di verifica dei token di Firebase.
Consulta il Riferimento API web di Firebase.
Passaggio 2: aggiorna il codice HTML
Aggiungi il codice di inizializzazione di Firebase alla tua app:
- Apri il progetto nella console Firebase.
- Nella pagina Panoramica, fai clic su Aggiungi app, poi su Aggiungi Firebase alla tua app web. Viene visualizzato uno snippet di codice che inizializza Firebase.
- Copia e incolla lo snippet di inizializzazione nella tua pagina web.
Aggiungi FirebaseUI Auth alla tua app:
<script src="https://www.gstatic.com/firebasejs/ui/live/0.4/firebase-ui-auth.js"></script> <link type="text/css" rel="stylesheet" href="https://www.gstatic.com/firebasejs/ui/live/0.4/firebase-ui-auth.css" /> <!-- ******************************************************************************************* * TODO(DEVELOPER): Paste the initialization snippet from: * Firebase Console > Overview > Add Firebase to your web app. * ***************************************************************************************** --> <script type="text/javascript"> // FirebaseUI config. var uiConfig = { 'signInSuccessUrl': '<url-to-redirect-to-on-success>', 'signInOptions': [ // Leave the lines as is for the providers you want to offer your users. firebase.auth.GoogleAuthProvider.PROVIDER_ID, firebase.auth.FacebookAuthProvider.PROVIDER_ID, firebase.auth.TwitterAuthProvider.PROVIDER_ID, firebase.auth.GithubAuthProvider.PROVIDER_ID, firebase.auth.EmailAuthProvider.PROVIDER_ID ], // Terms of service url. 'tosUrl': '<your-tos-url>', }; // Initialize the FirebaseUI Widget using Firebase. var ui = new firebaseui.auth.AuthUI(firebase.auth()); // The start method will wait until the DOM is loaded. ui.start('#firebaseui-auth-container', uiConfig); </script>Rimuovi l'SDK Identity Toolkit dalla tua app.
Se hai utilizzato il token ID di Identity Toolkit per la gestione delle sessioni, devi apportare le seguenti modifiche sul lato client:
Dopo aver eseguito l'accesso con Firebase, ottieni un token ID Firebase chiamando
firebase.auth().currentUser.getToken().Invia il token ID Firebase al server di backend, convalida il token ed emetti il tuo cookie di sessione.
Non fare affidamento esclusivamente sul cookie di sessione quando esegui operazioni sensibili o invii richieste di modifica autenticate al tuo server. Dovrai fornire una protezione aggiuntiva contro la falsificazione di richiesta cross-site (CSRF).
Se il tuo framework non fornisce la protezione CSRF, un modo per impedire un attacco è ottenere un token ID Firebase per l'utente che ha eseguito l'accesso con
getToken()e includere il token in ogni richiesta (per impostazione predefinita verrà inviato anche il cookie di sessione). Dovrai quindi convalidare il token utilizzando l'SDK Firebase Server, oltre al controllo dei cookie di sessione, completato dal framework di backend. In questo modo, sarà più difficile per gli attacchi CSRF avere successo, poiché il token ID Firebase viene archiviato solo utilizzando l'archiviazione web e mai in un cookie.I token di Identity Toolkit sono validi per due settimane. Potresti voler continuare a emettere token che durano due settimane o potresti volerli rendere più lunghi o più brevi in base ai requisiti di sicurezza della tua app. Quando un utente esce, cancella il cookie di sessione.
Passaggio 3: aggiorna gli URL di reindirizzamento dell'IDP
Nella console Firebase, apri la sezione Authentication e fai clic sulla scheda Metodo di accesso.
Per ogni provider di accesso federato supportato, segui questi passaggi:
- Fai clic sul nome del provider di accesso.
- Copia l'URI di reindirizzamento OAuth.
- Nella console per sviluppatori del provider di accesso, aggiorna l'URI di reindirizzamento OAuth.
Android
Passaggio 1: aggiungi Firebase alla tua app
Apri la console Firebase e seleziona il progetto Identity Toolkit che hai già importato.
Nella pagina Panoramica, fai clic su Aggiungi app, quindi su Aggiungi Firebase alla tua app per Android. Nella finestra di dialogo Aggiungi Firebase, fornisci il nome del pacchetto e il fingerprint del certificato di firma della tua app e fai clic su Aggiungi app. Il file di configurazione
google-services.jsonviene quindi scaricato sul tuo computer.Copia il file di configurazione nella directory root del modulo dell'app per Android. Questo file di configurazione contiene informazioni sul progetto e sul client OAuth di Google.
Nel file
build.gradlea livello di progetto (<var>your-project</var>/build.gradle), specifica il nome del pacchetto della tua app nella sezionedefaultConfig:defaultConfig { ….. applicationId "com.your-app" }Sempre nel file
build.gradlea livello di progetto, aggiungi una dipendenza per includere il plug-in google-services:buildscript { dependencies { // Add this line classpath 'com.google.gms:google-services:3.0.0' } }Nel file
build.gradlea livello di app (<var>my-project</var>/<var>app-module</var>/build.gradle), aggiungi la riga seguente in basso per attivare il plug-in google-services:// Add to the bottom of the file apply plugin: 'com.google.gms.google-services'Il plug-in google-services utilizza il file
google-services.jsonper configurare l'applicazione in modo che utilizzi Firebase.Sempre nel file
build.gradlea livello di app, aggiungi la dipendenza di Firebase Authentication:compile 'com.google.firebase:firebase-auth:25.0.0' compile 'com.google.android.gms:play-services-auth:22.0.0'
Passaggio 2: rimuovi l'SDK Identity Toolkit
- Rimuovi la configurazione di Identity Toolkit dal file
AndroidManifest.xml. Queste informazioni sono incluse nel filegoogle-service.jsone caricate dal plug-in google-services. - Rimuovi l'SDK Identity Toolkit dalla tua app.
Passaggio 3: aggiungi FirebaseUI alla tua app
Aggiungi FirebaseUI Auth alla tua app.
Nella tua app, sostituisci le chiamate all'SDK Identity Toolkit con chiamate a FirebaseUI.
iOS
Passaggio 1: aggiungi Firebase alla tua app
Aggiungi l'SDK Firebase alla tua app eseguendo i seguenti comandi:
$ cd your-project directory $ pod init $ pod 'Firebase'Apri la console Firebase e seleziona il progetto Identity Toolkit che hai già importato.
Nella pagina Panoramica, fai clic su Aggiungi app, poi su Aggiungi Firebase alla tua app per iOS. Nella finestra di dialogo Aggiungi Firebase, fornisci l'ID pacchetto e l'ID App Store della tua app, poi fai clic su Aggiungi app. Il file di configurazione
GoogleService-Info.plistviene quindi scaricato sul tuo computer. Se nel tuo progetto sono presenti più ID pacchetto, ognuno deve essere collegato nella console Firebase in modo che possa avere il proprio fileGoogleService-Info.plist.Copia il file di configurazione nella directory root del progetto Xcode e aggiungilo a tutte le destinazioni.
Passaggio 2: rimuovi l'SDK Identity Toolkit
- Rimuovi
GoogleIdentityToolkitdal Podfile della tua app. - Esegui il comando
pod install.
Passaggio 3: aggiungi FirebaseUI alla tua app
Aggiungi FirebaseUI Auth alla tua app.
Nella tua app, sostituisci le chiamate all'SDK Identity Toolkit con chiamate a FirebaseUI.