Esegui la migrazione da Google Identity Toolkit a Firebase Authentication

L'ultima versione di Google Identity Toolkit è stata rilasciata Autenticazione Firebase. In futuro, le funzionalità di Identity Toolkit saranno bloccate e completamente nuove lo sviluppo delle funzionalità verrà effettuato su Firebase Authentication. Incoraggiamo Agli sviluppatori di Identity Toolkit il passaggio a Firebase Authentication non appena possibile pratici per le loro applicazioni; ma Identity Toolkit continua a funzionare e non verranno ritirate senza un ulteriore annuncio.

Nuove funzionalità

Firebase Authentication presenta già alcuni miglioramenti significativi delle funzionalità rispetto Google Identity Toolkit:

  • Accesso a tutte le funzionalità di Firebase

    Firebase è una piattaforma mobile che consente di sviluppare rapidamente contenuti di alta qualità app, far crescere la base utenti e guadagnare di più. Firebase è composto da funzioni complementari che puoi mescolare per soddisfare le tue esigenze e include l'infrastruttura per: analisi per dispositivi mobili, messaggistica cloud, Realtime Database, archiviazione di file, hosting statico, configurazione remota, report sugli arresti anomali e Test di Android.

  • UI aggiornati

    Abbiamo completamente ricostruito i flussi della UI in base all'esperienza utente più recente di Google ricerca. Sono inclusi il recupero della password, il collegamento di account, contenuti nuovi/esistenti flussi di disambiguazione dell'account che spesso richiedono molto tempo eseguire il debug. Integra Smart Lock per password su Android, con un miglioramento significativo nella conversione delle registrazioni per le app partecipanti. Supporta anche semplici modifiche del tema per adattarlo alla tua applicazione e, ad esempio, la massima personalizzazione, l'app Android e iOS sono state open source.

  • Configurazione del server semplificata

    Abbiamo semplificato l'utilizzo di Firebase Authentication per gli sviluppatori. Con Identity Toolkit, abbiamo notato che molti sviluppatori hanno scelto di non implementare un flusso di recupero dell'email che rendeva impossibile il ripristino per gli utenti i loro account se hanno dimenticato la password. Firebase Authentication può invia messaggi di verifica email, di reimpostazione della password e di modifica della password a l'utente e il testo possono essere facilmente personalizzati per i tuoi utenti. Inoltre, non devi più ospitare Widget UI per l'hosting di reindirizzamenti e completare le operazioni di modifica della password.

  • Nuova Console di amministrazione

    Firebase ha una nuova console sviluppatori e la sezione Autenticazione ti consente di visualizzare, modificare ed eliminare utenti. Questo può essere di grande aiuto per eseguire il debug dei flussi di accesso e registrazione. La console consente anche di configurare metodi di autenticazione e personalizzare modelli email.

  • Nuovi SDK

    Tutte le API server di Identity Toolkit sono ora disponibili in modo nativo con delle nostre librerie client (Android, iOS, web). Gli sviluppatori potranno accedere e iscrivere utenti vecchi e nuovi, accedere alle proprietà utente, collegare, aggiornare e eliminare account, reimpostare le password e altro ancora senza la limitazione di una UI fissa. Se preferisci, puoi creare manualmente l'intero flusso di accesso e oltre a questa API.

  • Gestione delle sessioni per le app mobile

    Con Identity Toolkit, le app hanno creato il proprio stato della sessione in base evento di autenticazione iniziale da Identity Toolkit. Firebase Auth utilizza un protocollo che prende un token di aggiornamento, creato dall'account di dell'evento e lo scambia con token di accesso della durata di un'ora per Android, iOS e JavaScript. Quando un utente cambia la password, i token di aggiornamento non generare nuovi token di accesso, disattivando in tal modo l'accesso fino a l'utente eseguirà nuovamente l'autenticazione su quel dispositivo.

  • Autenticazione anonima e GitHub

    Firebase Authentication supporta due nuovi tipi di autenticazione: GitHub e anonimo. È possibile utilizzare l'accesso anonimo per creare un ID utente univoco senza richiedere all'utente di eseguire qualsiasi procedura di accesso o di registrazione. Con un utente anonimo, ora puoi effettuare chiamate API autenticate come con un utente normale. Quando un utente decide di creare un account, viene conservata con lo stesso ID utente. È ideale per situazioni come un carrello degli acquisti lato server o qualsiasi applicazione con cui desideri prima di inviarli tramite un flusso di registrazione.

Differenze tra le funzionalità

Alcune funzionalità di Identity Toolkit non sono attualmente disponibili in Firebase Authentication, mentre altre funzionalità sono state riprogettate e funzionano in modo diverso. Puoi scegliere di non eseguire la migrazione immediatamente se queste funzionalità sono importanti la tua app. In molti casi queste funzionalità potrebbero non essere importanti per la tua app o potrebbero esserci dei semplici fallback che ti consentiranno di procedere con la migrazione.

Differenze lato server

Il servizio principale Identity Toolkit con le API REST sottostanti, la logica di convalida e il database utente principale hanno subito solo aggiornamenti di minore entità. Alcune funzionalità e il modo in cui integri Firebase Authentication nel tuo servizio sono cambiate.

  • Provider di identità

    PayPal e AOL non sono supportati. Utenti con di questi IdP possono comunque accedere alla tua applicazione con la procedura di recupero della password e configurare una password per il proprio account.

  • Librerie server

    Attualmente, sono disponibili SDK amministrativi di Firebase disponibile per Java, Node.js, Python, Go e C#.

  • Email per la gestione degli account

    I messaggi di reimpostazione password, verifica email e modifica dell'email possono essere eseguite da Firebase o dall'account il tuo server di posta. Al momento, i modelli di email Firebase offrono solo un numero limitato personalizzazione.

  • Conferma della modifica dell'indirizzo email

    In Identity Toolkit, quando un utente decide di cambiare il proprio indirizzo email, invia un'email al nuovo indirizzo che ha un link per continuare l'email flusso di cambio di indirizzo.

    Firebase conferma la modifica dell'indirizzo email inviando un'email di revoca a il vecchio indirizzo email con un link per annullare la modifica.

  • Implementazione IdP

    Identity Toolkit ha potuto aggiungere provider di identità all'accesso di sistema in modo che tu possa sperimentare l'impatto sul tuo 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 da Identity Toolkit L'API REST è stata pacchettizzata in SDK client disponibili per Android, iOS e JavaScript. Puoi utilizzare l'SDK per eseguire l'accesso e iscrivere gli utenti. accesso utente informazioni del profilo; collegare, aggiornare ed eliminare account; e reimpostare le password utilizzando l'SDK del client invece di comunicare con il servizio di backend tramite Chiamate REST.

  • Autorizzazione FirebaseUI

    tutti i flussi dell'interfaccia utente che gestiscono accesso, registrazione, recupero della password il collegamento tra account è stato ricreato utilizzando gli SDK Frebase Authentication. Sono disponibili come SDK open source per iOS e Android per consentirti personalizzare completamente i flussi in modi impossibili con Identity Toolkit.

Altre differenze includono:

  • Sessioni e migrazione

    Perché le sessioni vengono gestite in modo diverso in Identity Toolkit e in Firebase l'autenticazione, la password le sessioni esistenti verranno terminate il eseguire l'upgrade dell'SDK e gli utenti dovranno eseguire di nuovo l'accesso.

Prima di iniziare

Prima di eseguire la migrazione da Identity Toolkit a Firebase Authentication, deve

  1. Apri la console Firebase, fai clic su Importa il progetto Google e seleziona il tuo progetto Identity Toolkit.

  2. Fai clic su > Autorizzazioni per aprire IAM e pagina Amministrazione.

  3. Apri la Account di servizio. Qui puoi vedere l'account di servizio configurato in precedenza per Identity Toolkit.

  4. Accanto all'account di servizio, fai clic su > Crea chiave. Quindi, nel Crea chiave privata, imposta il tipo di chiave su JSON e fai clic Crea. Un file JSON contenente le credenziali dell'account di servizio scaricati per te. Ti servirà per inizializzare l'SDK nel passaggio successivo.

  5. Torna alla Console Firebase. Nella sezione Autorizzazione, apri la pagina Modelli email. In questa pagina, personalizzare i modelli email della tua app.

    In Identity Toolkit, quando gli utenti reimpostano le password, modificano gli indirizzi email e verificato i loro indirizzi email, dovevi ricevere un codice OOB nel server Identity Toolkit, quindi invia il codice agli utenti via email. Firebase invia le email in base ai modelli configurati senza sono necessarie ulteriori azioni.

  6. Facoltativo: se devi accedere ai servizi Firebase sul tuo server, installare l'SDK Firebase.

    1. Puoi installare il modulo Firebase Node.js con npm:

      $ npm init
      $ npm install --save firebase-admin
      
    2. Nel codice, puoi accedere a Firebase utilizzando:

      var admin = require('firebase-admin');
      var app = admin.initializeApp({
        credential: admin.credential.cert('path/to/serviceAccountCredentials.json')
      });
      

A questo punto, completa i passaggi di migrazione per la piattaforma della tua app: Android, iOS, web.

Server e JavaScript

Modifiche rilevanti

Esistono una serie di ulteriori differenze nell'implementazione web dei Firebase da Identity Toolkit.

  • Gestione delle sessioni web

    In precedenza, quando un utente si autenticava mediante il widget Identity Toolkit, è stato impostato un cookie per l'utente, che è stato utilizzato per eseguire il bootstrap della sessione. Questo cookie aveva una durata di due settimane ed è stato usato per consentire all'utente di utilizzarlo il widget di gestione dell'account per cambiare password e indirizzo email. Alcune i siti hanno usato questo cookie per autenticare tutte le altre richieste di pagine sul sito. Altri siti hanno utilizzato il cookie per creare i propri cookie tramite di gestione dei cookie.

    Gli SDK del client Firebase ora gestiscono i token ID Firebase e lavorare con il backend di Firebase Authentication per mantenere aggiornata la sessione. Il backend fa scadere le sessioni quando l'account cambia importanti (ad esempio, modifiche alla password). I token ID Firebase non vengono automaticamente impostati come cookie sul client web e hanno una durata di un'ora. A meno che tu non sessioni di una sola ora, i token ID Firebase non sono appropriati utilizzati come cookie per convalidare tutte le richieste di pagine. Dovrai invece configurare un listener quando l'utente accede, recupera il token ID Firebase, convalidare il token e creare proprio cookie tramite il sistema di gestione dei cookie del tuo framework.

    Sarà necessario impostare la durata della sessione del cookie in base al le esigenze di sicurezza della tua applicazione.

  • Flusso di accesso sul web

    In precedenza, gli utenti venivano reindirizzati a accountchooser.com al momento dell'accesso per apprendere quale identificatore l'utente voleva utilizzare. Autorizzazione Firebase Il flusso della UI inizia ora con un elenco di metodi di accesso, tra cui un indirizzo email che rimanda a accountchooser.com per il web e utilizza l'opzione API hintRequest attiva Android. Inoltre, gli indirizzi email non sono più necessari in Firebase nell'interfaccia utente. In questo modo sarà più facile supportare utenti anonimi, utenti di autenticazione personalizzati o utenti di provider per i quali gli indirizzi email non sono richiesti.

  • Widget di gestione dell'account

    Questo widget fornisce agli utenti un'interfaccia utente per cambiare indirizzo e-mail, o scollegano i loro account dai provider di identità. Attualmente in fase di sviluppo.

  • Widget/pulsante di accesso

    Widget come il pulsante di accesso e la scheda utente non sono più disponibili. Loro possono essere create molto facilmente utilizzando l'API Firebase Authentication.

  • Nessun URL di SignOut

    Dovrai chiamare il numero firebase.auth.signOut() e gestire la richiamata.

  • Nessun oobActionUrl

    L'invio di email è ora gestito da Firebase ed è configurato in Firebase Google Cloud.

  • Personalizzazione CSS

    FirebaseUI utilizza lo stile Material Design Lite, che aggiunge dinamicamente animazioni Material Design.

Passaggio 1: modifica il codice del server

  1. Se il tuo server si basa sul token Identity Toolkit (valido per due settimane) gestire le sessioni utente web, devi convertire il server in modo che utilizzi le sue cookie di sessione.

    1. Implementare un endpoint per la convalida del token ID Firebase. e l'impostazione del cookie di sessione per l'utente. L'app client invia ID Firebase a questo endpoint.
    2. Se la richiesta in entrata contiene il tuo cookie di sessione, puoi consideriamo l'utente autenticato. In caso contrario, tratta la richiesta come non autenticati.
    3. Se non vuoi che nessuno dei tuoi utenti perda i dati di accesso esistenti devi attendere due settimane per tutti i token di Identity Toolkit scadono o eseguire la convalida del doppio token per la tua applicazione web come descritto di seguito nel passaggio 3.
  2. Inoltre, poiché i token Firebase sono diversi da Identity Toolkit devi aggiornare la logica di convalida dei token. Installare l'SDK Firebase Server sul tuo server. o, se utilizzi un linguaggio non supportato dall'SDK Firebase Server, scarica una libreria per la convalida dei token JWT per il tuo ambiente e convalida il token in modo adeguato.

  3. Quando effettui gli aggiornamenti precedenti per la prima volta, potresti comunque avere percorsi di codice si basano sui token di Identity Toolkit. Se hai app iOS o Android, gli utenti dovranno eseguire l'upgrade alla nuova versione dell'app per poter funzionano i nuovi percorsi del codice. Se non vuoi obbligare gli utenti a eseguire l'aggiornamento dell'app, puoi aggiungere un'ulteriore logica di convalida del server che esamini token e determina se deve utilizzare l'SDK Firebase o SDK Identity Toolkit per convalidare il token. Se disponi solo di un servizio tutte le nuove richieste di autenticazione verranno trasferite Firebase, perciò, dovrai usare solo il token Firebase metodi di verifica.

Consulta la documentazione di riferimento dell'API Firebase Web.

Passaggio 2: aggiorna il codice HTML

  1. Aggiungi il codice di inizializzazione di Firebase alla tua app:

    1. Apri il progetto nella console Firebase.
    2. Nella pagina Panoramica, fai clic su Aggiungi app e poi su Aggiungi Firebase al tuo account. app web. Viene visualizzato uno snippet di codice che inizializza Firebase.
    3. Copia e incolla lo snippet di inizializzazione nella pagina web.
  2. Aggiungi autenticazione FirebaseUI 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>
    
  3. Rimuovi l'SDK Identity Toolkit dalla tua app.

  4. Se hai fatto affidamento sul token ID Identity Toolkit per la gestione delle sessioni, devi apportare le seguenti modifiche sul lato client:

    1. Dopo aver eseguito l'accesso a Firebase, ottieni un token ID Firebase entro il giorno chiamata firebase.auth().currentUser.getToken().

    2. Invia il token ID Firebase al server di backend, convalidalo e genera il problema il tuo cookie di sessione.

      Non fare affidamento esclusivamente sul cookie di sessione quando esegui dati sensibili operazioni o l'invio di richieste di modifica autenticate al tuo server. Tu dovrà fornire una richiesta di falsificazione cross-site (CSRF) aggiuntiva protezione dei dati.

      Se il vostro framework non fornisce protezione CSRF, un modo per evitare un attacco consiste nel ricevere un token ID Firebase per l'utente che ha effettuato l'accesso con getToken() e includi il token con ogni richiesta (la sessione per impostazione predefinita vengono inviati anche i cookie). Devi quindi convalidare il token utilizzando l'SDK del server Firebase oltre al controllo dei cookie di sessione, completato dal framework di backend. Questo renderà più difficile Attacchi CSRF devono avere successo, poiché il token ID Firebase viene archiviato solo utilizzando archiviazione web e mai in un cookie.

    3. I token di Identity Toolkit sono validi per due settimane. Potresti voler a emettere token delle ultime due settimane o più o meno a lungo, in base ai requisiti di sicurezza della tua app. Quando un utente si disconnette, cancella il cookie di sessione.

Passaggio 3: aggiorna gli URL di reindirizzamento IdP

  1. Nella console Firebase, apri la sezione Autenticazione e fai clic sul pulsante Scheda Metodo di accesso.

  2. Per ogni provider di accesso federato che supporti, segui questi passaggi:

    1. Fai clic sul nome del provider di accesso.
    2. Copia l'URI di reindirizzamento OAuth.
    3. Nella console per gli sviluppatori del provider di accesso, aggiorna il reindirizzamento OAuth URI.

Android

Passaggio 1: aggiungi Firebase alla tua app

  1. Apri la console Firebase e seleziona il progetto Identity Toolkit che hai già importato.

  2. Nella pagina Panoramica, fai clic su Aggiungi app, quindi su Aggiungi Firebase a. un'app per Android. Nella finestra di dialogo Aggiungi Firebase, indica il pacchetto della tua app nome e impronta digitale del certificato di firma e fai clic su Aggiungi app. La Il file di configurazione google-services.json viene quindi scaricato nel tuo computer.

  3. Copia il file di configurazione nella directory principale del modulo dell'app Android. Questo di configurazione del deployment contiene le informazioni sul progetto e sul client OAuth di Google.

  4. Nel file build.gradle a livello di progetto (<var>your-project</var>/build.gradle), specifica il nome del pacchetto dell'app in sezione defaultConfig:

    defaultConfig {
       …..
      applicationId "com.your-app"
    }
    
  5. Sempre nel file build.gradle a livello di progetto, aggiungi una dipendenza da includere il plug-in google-services:

    buildscript {
     dependencies {
       // Add this line
       classpath 'com.google.gms:google-services:3.0.0'
     }
    }
    
  6. Nel file build.gradle a livello di app dell'app (<var>my-project</var>/<var>app-module</var>/build.gradle), aggiungi riga seguente fino in fondo per abilitare 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.json per configurare la tua applicazione per utilizzare Firebase.

  7. Sempre nel file build.gradle a livello di app, aggiungi Firebase Authentication :

    compile 'com.google.firebase:firebase-auth:23.0.0'
    compile 'com.google.android.gms:play-services-auth:21.2.0'
    

Passaggio 2: rimuovi l'SDK Identity Toolkit

  1. Rimuovi la configurazione di Identity Toolkit da AndroidManifest.xml . Queste informazioni sono incluse nel file google-service.json e caricati dal plug-in google-services.
  2. Rimuovi l'SDK Identity Toolkit dalla tua app.

Passaggio 3: aggiungi FirebaseUI alla tua app

  1. Aggiungi autenticazione FirebaseUI alla tua app.

  2. Nella tua app, sostituisci le chiamate all'SDK Identity Toolkit con chiamate a UI di Firebase.

iOS

Passaggio 1: aggiungi Firebase alla tua app

  1. Aggiungi l'SDK Firebase alla tua app eseguendo questi comandi:

    $ cd your-project directory
    $ pod init
    $ pod 'Firebase'
    
  2. Apri la console Firebase e seleziona il progetto Identity Toolkit che hai già importato.

  3. Nella pagina Panoramica, fai clic su Aggiungi app, quindi su Aggiungi Firebase a. dell'app per iOS. Nella finestra di dialogo Aggiungi Firebase, fornisci l'ID pacchetto dell'app e ID App Store, quindi fai clic su Aggiungi app. La Il file di configurazione GoogleService-Info.plist viene quindi scaricato nel tuo computer. Se nel progetto sono presenti più ID pacchetto, ogni ID pacchetto deve essere connesso nella console Firebase in modo che possa avere GoogleService-Info.plist.

  4. Copia il file di configurazione nella directory principale del tuo progetto Xcode e aggiungilo a per tutti i target.

Passaggio 2: rimuovi l'SDK Identity Toolkit

  1. Rimuovi GoogleIdentityToolkit dal pod dell'app.
  2. Esegui il comando pod install.

Passaggio 3: aggiungi FirebaseUI alla tua app

  1. Aggiungi autenticazione FirebaseUI alla tua app.

  2. Nella tua app, sostituisci le chiamate all'SDK Identity Toolkit con chiamate a UI di Firebase.