La versione più recente di Google Identity Toolkit è stata rilasciata come Identity Platform e Firebase Authentication. In futuro, il lavoro sulle funzionalità di Identity Toolkit verrà bloccato; tutte le nuove funzionalità verranno sviluppate su Identity Platform e Firebase Authentication. Invitiamo gli sviluppatori di Identity Toolkit a passare a queste piattaforme non appena sarà pratico per le loro applicazioni.
Nuove funzionalità
Identity Platform offre già miglioramenti significativi delle funzionalità rispetto a Google Identity Toolkit:
Nuova console di amministrazione
Identity Platform ha una nuova console per sviluppatori che ti consente di visualizzare, modificare ed eliminare i tuoi utenti. Questa funzionalità può essere utile per il debug dei flussi di accesso e registrazione. La console ti consente anche di configurare i metodi di autenticazione e personalizzare i modelli di email.
Nuovi metodi di autenticazione
Identity Platform supporta gli standard di federazione aziendale, come SAML e OIDC, consentendoti di scalare app e servizi SaaS. Identity Platform offre anche supporto per provider come GitHub, Microsoft, Yahoo e altri. Puoi utilizzare l'accesso anonimo per creare un User-ID univoco senza richiedere all'utente di eseguire una procedura di accesso o registrazione. In questo modo, puoi effettuare chiamate API autenticate come faresti con un utente normale. Quando l'utente decide di registrarsi per un account, tutte le attività vengono conservate con lo stesso User-ID. Questa funzionalità è utile per scenari come i carrelli degli acquisti lato server o altre applicazioni in cui vuoi coinvolgere l'utente prima di inviarlo a un flusso di registrazione.
Scala con sicurezza grazie agli accordi sul livello del servizio e all'assistenza Cloud
Identity Platform si basa sull'infrastruttura Google affidabile e fornisce accordi sul livello del servizio e assistenza da Google Cloud. Ciò significa che puoi scalare il tuo servizio con sicurezza e fare affidamento su Google per la resilienza, la disponibilità e la scalabilità di cui hai bisogno.
Accesso a tutti i servizi Firebase
Firebase è una piattaforma mobile che consente di sviluppare rapidamente app di alta qualità, far crescere la tua base di utenti e guadagnare di più. Firebase è composto da funzionalità complementari che puoi combinare in base alle tue esigenze e include l'infrastruttura per: dati e analisi mobile , Cloud Messaging, database in tempo reale, archiviazione file, hosting statico, configurazione remota, report sugli arresti anomali mobile e test Android .
UI aggiornate
Abbiamo ricostruito completamente i flussi dell'interfaccia utente in base alle ultime ricerche UX di Google. Sono inclusi il recupero della password, il collegamento dell'account e i flussi di disambiguazione di account nuovi/esistenti che spesso richiedono molto tempo per la codifica 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 modifiche semplici dei temi per adattarsi alla tua applicazione e, per la massima personalizzazione, le Android e iOS sono state rilasciate come open source.
Configurazione del server semplificata
Con Identity Toolkit, abbiamo notato che molti sviluppatori hanno scelto di non implementare il flusso di recupero dell'email, il che ha reso impossibile ai loro utenti recuperare i propri account se dimenticavano la password. Identity Platform può inviare all'utente messaggi di verifica email, reimpostazione password e modifica della password e il testo può essere facilmente personalizzato per i tuoi utenti. Inoltre, non devi più ospitare i widget dell'interfaccia utente per ospitare i reindirizzamenti e completare le operazioni di modifica della password.
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 accedere e registrare utenti vecchi e nuovi, accedere alle proprietà utente, collegare, aggiornare ed eliminare account, reimpostare le password e altro ancora senza essere vincolati a un'interfaccia utente fissa. Se preferisci, puoi creare manualmente l'intero flusso e l'esperienza di accesso su questa API.
Gestione delle sessioni per le app mobile
Con Identity Toolkit, le app hanno creato il proprio stato della sessione in base all'evento di autenticazione iniziale di Identity Toolkit. Identity Platform utilizza un servizio di backend che accetta 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 password, i token di aggiornamento non saranno più in grado di generare nuovi token di accesso, disabilitando così l'accesso finché l'utente non esegue di nuovo l'autenticazione sul dispositivo.
Differenze di funzionalità
Alcune funzionalità di Identity Toolkit non sono attualmente disponibili in Identity Platform, mentre altre sono state riprogettate e funzionano in modo diverso. Potresti scegliere di non eseguire la migrazione immediatamente se queste funzionalità sono importanti per la tua app. In molti casi, queste funzionalità potrebbero non essere importanti per la tua app o potrebbero esistere fallback semplici che ti consentiranno di procedere con la migrazione.
Differenze lato server
Il servizio principale di Identity Toolkit con le relative API REST sottostanti, la logica di convalida dell'account e il database utente principale hanno subito solo aggiornamenti minori. Tuttavia, alcune funzionalità e la modalità di integrazione di Identity Platform nel tuo servizio sono cambiate.
Provider di identità
PayPal e AOL non sono supportati. Gli utenti con account di questi provider di identità possono comunque accedere alla tua applicazione con il flusso di recupero della password e impostare una password per il proprio account.
Librerie server
Al momento sono disponibili SDK Admin per Java, Node.js, Python, Go e C#.
Email di gestione dell'account
I messaggi di reimpostazione della password, verifica dell'indirizzo email e modifica dell'indirizzo email possono essere eseguiti da Firebase o dal server di posta dello sviluppatore. Al momento, i modelli di email offrono solo una personalizzazione limitata dall'interfaccia utente, ma possono essere ulteriormente personalizzati con gli SDK Admin
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 sistema di accesso, in modo da poter sperimentare l'impatto sulle richieste di assistenza. Questa funzionalità è stata rimossa in Firebase Authentication.
Differenze lato client
In Identity Platform, le funzionalità fornite da Google Identity Toolkit sono suddivise in due componenti:
SDK client e server
In Identity Platform, la funzionalità fornita dall'API REST di Identity Toolkit è stata inclusa negli SDK client disponibili per Android, iOS e JavaScript. Puoi utilizzare l'SDK per 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.
Widget dell'interfaccia utente
Tutti i flussi dell'interfaccia utente che gestiscono l'accesso, la registrazione, il recupero della password e il collegamento dell'account sono stati ricostruiti utilizzando gli SDK client e inclusi in un widget di accesso. Sono disponibili come SDK open source per iOS, Android e web e ti consentono 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 Identity Platform, 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 Identity Platform, devi:
Apri la console Cloud e seleziona il tuo progetto Identity Toolkit.
Da Marketplace, vai a Identity Platform e seleziona "Abilita Identity Platform".
Apri la pagina 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. Quindi, 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 Cloud. Nella sezione Provider, all'interno del metodo di accesso "Email/password", apri la pagina Modelli di email. A questo punto puoi personalizzare i modelli della tua app.
In Identity Toolkit, quando gli utenti reimpostavano le password, modificavano gli indirizzi email o verificavano i propri indirizzi email, dovevi ottenere un codice OOB dal server Identity Toolkit e poi inviarlo agli utenti via email. Identity Platform invia email in base ai modelli che configuri senza richiedere ulteriori azioni.
Facoltativo: se devi accedere ai servizi Identity Platform sul server, installa l'SDK Firebase.
Puoi installare l'SDK Admin Node.js 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 importanti
Esistono diverse differenze aggiuntive nell'implementazione web di Identity Platform 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 avviare la 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 pagina sul sito. Altri siti utilizzavano il cookie per creare i propri cookie tramite il sistema di gestione dei cookie del framework.
Gli SDK client di Identity Platform ora gestiscono i token ID e funzionano con il backend di Identity Platform per mantenere aggiornata la sessione. Il backend fa scadere le sessioni quando si sono verificate modifiche importanti dell'account (ad esempio modifiche della password utente). I token ID 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 non sono adatti per essere utilizzati come cookie per convalidare tutte le richieste di pagina. Dovrai invece configurare un listener per quando l'utente esegue l'accesso, recuperare il token ID, convalidarlo e creare il tuo cookie tramite il sistema di gestione dei cookie del 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 scoprire quale identificatore l'utente voleva utilizzare. Il flusso dell'interfaccia utente di Identity Platform ora inizia con un elenco di metodi di accesso, inclusa un'opzione email che va aaccountchooser.comper il web e utilizza l' API hintRequest su Android. Inoltre, gli indirizzi email non sono più obbligatori nell'interfaccia utente. In questo modo sarà più facile supportare utenti anonimi, utenti di autenticazione personalizzata o utenti di provider in cui gli indirizzi email non sono obbligatori.Widget di gestione dell'account
Questo widget fornisce un'interfaccia utente per consentire agli utenti di modificare gli indirizzi email, modificare le 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ù forniti. Possono essere creati molto facilmente utilizzando l'API Firebase Authentication.
Nessun signOutUrl
Dovrai chiamare
firebase.auth.signOut()e gestire il callback.Nessun oobActionUrl
L'invio di email è ora gestito da Identity Platform ed è configurato nella console Firebase.
Personalizzazione CSS
Il widget dell'interfaccia utente utilizza lo stile Material Design Lite, che aggiunge dinamicamente le animazioni di Material Design.
Passaggio 1: modifica il codice del server
Se il server si basa sul token Identity Toolkit (valido per due settimane) per gestire le sessioni utente web, devi convertire il server in modo che utilizzi il proprio cookie di sessione.
- Implementa un endpoint per convalidare il token ID e impostare il cookie di sessione per l'utente. L'app client invia il token ID Firebase a questo endpoint.
- Se la richiesta in entrata contiene il tuo cookie di sessione, puoi considerare l'utente autenticato. In caso contrario, tratta la richiesta come non autenticata.
- Se non vuoi che nessuno dei tuoi utenti perda le sessioni esistenti, devi attendere due settimane affinché tutti i token Identity Toolkit scadano oppure eseguire anche la convalida del doppio token per la tua applicazione web come descritto di seguito nel passaggio 3.
Poi, poiché i token ID sono diversi dai token Identity Toolkit, devi aggiornare la logica di convalida dei token. Installa l' SDK Admin sul server oppure, se utilizzi un linguaggio non supportato dall'SDK Admin, scarica una libreria di convalida dei token JWT per il tuo ambiente e convalida correttamente il token.
Quando esegui per la prima volta gli aggiornamenti sopra indicati, potresti avere ancora percorsi di codice che si basano sui token Identity Toolkit. Se hai applicazioni iOS o Android, gli utenti dovranno eseguire l'upgrade alla nuova versione dell'app per far funzionare i nuovi percorsi di codice. Se non vuoi forzare gli utenti ad aggiornare l'app, puoi aggiungere una logica di convalida del server aggiuntiva 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 spostate su Identity Platform e, pertanto, devi utilizzare solo i metodi di verifica dei token ID.
Consulta il riferimento API web.
Passaggio 2: aggiorna l'HTML
Aggiungi il codice di inizializzazione alla tua app:
- Apri il progetto nella console Cloud.
- Nella pagina dei provider, fai clic su Dettagli di configurazione dell'applicazione. Viene visualizzato uno snippet di codice che inizializza Identity Platform.
- Copia e incolla lo snippet di inizializzazione nella tua pagina web.
Aggiungi il widget di autenticazione 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 ti affidi al token ID Identity Toolkit per la gestione delle sessioni, devi apportare le seguenti modifiche lato client:
Dopo aver eseguito l'accesso correttamente con Identity Platform, recupera un token ID chiamando
firebase.auth().currentUser.getToken().Invia il token ID al server di backend, convalidalo 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 server. Dovrai fornire una protezione aggiuntiva dalla falsificazione di richieste cross-site (CSRF).
Se il tuo framework non fornisce la protezione CSRF, un modo per prevenire un attacco è recuperare un token ID per l'utente che ha eseguito l'accesso con
getToken()e includere il token in ogni richiesta (il cookie di sessione verrà inviato anche per impostazione predefinita). Dovrai quindi convalidare il token utilizzando l'SDK Admin oltre al controllo del cookie di sessione, che è stato completato dal framework di backend. In questo modo, sarà più difficile che gli attacchi CSRF vadano a buon fine, poiché il token ID viene archiviato solo utilizzando l'archiviazione web e mai in un cookie.I token Identity Toolkit sono validi per due settimane. Potresti voler continuare a emettere token che durano due settimane oppure potresti volerli rendere più lunghi o più brevi in base ai requisiti di sicurezza della tua app. Quando un utente esegue la disconnessione, cancella il cookie di sessione.
Passaggio 3: aggiorna gli URL di reindirizzamento del provider di identità
Nella console Cloud, apri la sezione Provider.
Per ogni provider di accesso federato che supporti, svolgi quanto segue:
- 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 Identity Platform alla tua app con Firebase
Apri la console Cloud e seleziona il progetto Identity Toolkit.
Nella pagina Provider, fai clic su Dettagli di configurazione dell'applicazione, seleziona la scheda Android e poi fai clic su Inizia a utilizzare Firebase. Nella finestra di dialogo Aggiungi Firebase, fornisci il nome del pacchetto e l'impronta digitale del certificato di firma dell'app e fai clic su Aggiungi app. Il file di configurazione
google-services.jsonviene quindi scaricato sul computer.Copia il file di configurazione nella directory principale del modulo dell'app per Android. Questo file di configurazione contiene le informazioni del progetto e del client OAuth di Google.
Nel file
build.gradlea livello di progetto (<var>your-project</var>/build.gradle), specifica il nome del pacchetto dell'app in thedefaultConfigsezione: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 a livello di app
build.gradledella tua app (<var>my-project</var>/<var>app-module</var>/build.gradle), aggiungi la seguente riga dopo il plug-in Android per Gradle per abilitare il plug-in google-services:apply plugin: 'com.android.application' // Add this line 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 Firebase Authentication:compile 'com.google.firebase:firebase-auth:24.2.0' compile 'com.google.android.gms:play-services-auth:21.6.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 client alla tua app eseguendo i seguenti comandi:
$ cd your-project directory $ pod init $ pod 'Firebase'Apri la console Cloud e seleziona il progetto Identity Toolkit.
Nella pagina Provider, fai clic su Dettagli di configurazione dell'applicazione, seleziona la scheda iOS e poi fai clic su Inizia a utilizzare Firebase. Nella finestra di dialogo Aggiungi Firebase, fornisci il nome del pacchetto e l'impronta digitale del certificato di firma dell'app e fai clic su Aggiungi app. Il file di configurazione
google-services.jsonviene quindi scaricato sul computer. Nella finestra di dialogo Aggiungi Firebase, fornisci l'ID pacchetto e l'ID App Store dell'app, quindi fai clic su Aggiungi app. Il file di configurazioneGoogleService-Info.plistviene quindi scaricato sul computer. Se nel progetto sono presenti più ID pacchetto, ogni ID pacchetto deve essere connesso nella console Firebase in modo che possa avere il proprio fileGoogleService-Info.plist.Copia il file di configurazione nella root del progetto Xcode e aggiungilo a tutti i target.
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.