Effectuer une migration de Google Identity Toolkit vers Firebase Authentication

La dernière version de Google Identity Toolkit est disponible sous le nom Firebase Authentication. À l'avenir, le travail sur les fonctionnalités d'Identity Toolkit sera bloqué et le développement de cette fonctionnalité sera effectué sur Firebase Authentication. Nous vous conseillons Les développeurs Identity Toolkit doivent passer à Firebase Authentication dès que possible pratiques pour leurs applications ; mais Identity Toolkit continue de fonctionner et ne seront pas abandonnées sans autre annonce.

Nouvelles fonctionnalités

Firebase Authentication offre déjà d'importantes améliorations Google Identity Toolkit:

  • Accès à l'ensemble de Firebase

    Firebase est une plate-forme mobile qui permet de développer rapidement applications, développer votre base d'utilisateurs et gagner plus d'argent. Firebase se compose des fonctionnalités complémentaires que vous pouvez assortir en fonction de vos besoins et comprend une infrastructure pour: données analytiques sur les mobiles messagerie via le cloud, en temps réel, stockage de fichiers hébergement statique, configuration à distance, les rapports d'erreur sur mobile et Tests Android.

  • Interfaces utilisateur mises à jour

    Nous avons entièrement remanié les flux de l'UI en nous basant sur les dernières la recherche. Cela inclut la récupération de mots de passe, l'association de comptes, les nouveaux/existants des flux de sélection d'application, qui prennent souvent beaucoup de temps pour coder déboguer. Il intègre Smart Lock pour les mots de passe. sur Android, ce qui a permis d'améliorer considérablement le taux de conversion des connexions et des inscriptions pour les applications participantes. Il permet également de modifier facilement le thème afin de l'adapter à votre application et, pour et à une personnalisation maximale, la version d'Android et iOS ont été mises à disposition en Open Source.

  • Configuration de serveur simplifiée

    Nous avons simplifié l'utilisation de Firebase Authentication pour les développeurs. Avec Identity Toolkit, nous avons constaté que de nombreux développeurs avaient choisi de ne pas implémenter processus de récupération des e-mails, ce qui empêchait les utilisateurs de récupérer leurs comptes en cas d’oubli de leur mot de passe. Firebase Authentication permet envoyer des messages de vérification des e-mails, de réinitialisation de mot de passe et de modification des mots de passe à L'utilisateur et le texte peuvent être facilement personnalisés pour vos utilisateurs. De plus, vous n'avez plus besoin d'héberger Widgets d'interface utilisateur pour héberger des redirections et effectuer des opérations de changement de mot de passe.

  • Nouvelle console d'administration

    Firebase dispose d'une nouvelle console pour les développeurs et la section "Authentification" vous permet d'afficher, de modifier et de supprimer utilisateurs. Cela peut être d'une aide précieuse pour déboguer vos processus de connexion et d'inscription. La console vous permet également de configurer des méthodes d'authentification et personnaliser les modèles d'e-mail.

  • Nouveaux SDK

    Toutes les API de serveur d'Identity Toolkit sont désormais disponibles en mode natif avec chaque de nos bibliothèques clientes (Android, iOS, Web). Les développeurs pourront signer créer et inscrire des utilisateurs, anciens et nouveaux, accéder aux propriétés utilisateur, associer, mettre à jour et supprimer des comptes, réinitialiser les mots de passe et plus encore sans être lié à une UI fixe. Si vous le souhaitez, vous pouvez créer manuellement votre propre processus de connexion en plus de cette API.

  • Gestion des sessions pour les applications mobiles

    Avec Identity Toolkit, les applications ont créé leur propre état de session en fonction l'événement d'authentification initial d'Identity Toolkit. Firebase Auth utilise un de backend qui utilise un jeton d'actualisation, issu de l'authentification et l'échange contre des jetons d'accès d'une heure pour Android, iOS et JavaScript. Lorsqu'un utilisateur modifie son mot de passe, les jetons d'actualisation générer de nouveaux jetons d'accès et désactiver l'accès l'utilisateur s'authentifie à nouveau sur cet appareil.

  • Authentification anonyme et GitHub

    Firebase Authentication accepte deux nouveaux types d'authentification: GitHub et et anonyme. La connexion anonyme peut être utilisée pour créer un identifiant d'utilisateur unique sans obliger l'utilisateur à suivre un processus de connexion ou d'inscription. Avec un utilisateur anonyme, vous pouvez désormais effectuer des appels d'API authentifiés, comme vous le feriez avec un utilisateur standard. Lorsque l'utilisateur décide de créer un compte, est conservée avec le même identifiant utilisateur. C'est idéal pour les situations comme un panier d'achat côté serveur ou toute application dans laquelle vous souhaitez interagir l'utilisateur avant de le rediriger vers un processus d'inscription.

Différences de fonctionnalités

Certaines fonctionnalités Identity Toolkit ne sont actuellement pas disponibles dans Firebase Authentification. D'autres fonctionnalités ont été repensées et fonctionnent différemment. Vous pouvez choisir de ne pas migrer immédiatement si ces fonctionnalités sont importantes votre application. Dans de nombreux cas, ces fonctionnalités ne sont pas importantes pour votre application ou il peut y avoir des solutions de remplacement faciles qui vous permettront de procéder à la migration.

Différences côté serveur

Le service Identity Toolkit principal avec ses API REST sous-jacentes, le compte la logique de validation et la base de données d'utilisateurs principale n'ont fait l'objet que de mises à jour mineures. Cependant, certaines fonctionnalités et la manière dont vous intégrez Firebase Authentication à votre service a changé.

  • Fournisseurs d'identité

    PayPal et AOL ne sont pas acceptés. Utilisateurs avec de ces fournisseurs d'identité peuvent toujours se connecter à votre application flux de récupération de mot de passe et de définir un mot de passe pour son compte.

  • Bibliothèques serveur

    Il existe actuellement des SDK administrateur Firebase. disponible pour Java, Node.js, Python, Go et C#.

  • E-mails de gestion du compte

    Il est possible de réinitialiser le mot de passe, de valider l'adresse e-mail et de modifier l'adresse e-mail. par Firebase ou par le développeur de votre propre serveur de messagerie. Actuellement, les modèles d'e-mail Firebase n'offrent que la personnalisation.

  • Confirmation du changement d'adresse e-mail

    Dans Identity Toolkit, lorsqu'un utilisateur décide de modifier son adresse e-mail, envoie un e-mail à la nouvelle adresse contenant un lien permettant de poursuivre l'envoi. de changement d'adresse.

    Firebase confirme le changement d'adresse e-mail en envoyant un e-mail de révocation à l'ancienne adresse e-mail avec un lien pour annuler la modification.

  • Déploiement du fournisseur d'identité

    Identity Toolkit permettait d'ajouter des fournisseurs d'identité à votre connexion de manière progressive, afin que vous puissiez tester l'impact les demandes d'assistance. Cette fonctionnalité a été supprimée de Firebase Authentication.

Différences côté client

Dans Firebase, les fonctionnalités fournies par Google Identity Toolkit sont divisées en deux composants:

  • SDK Firebase Authentication

    Dans Firebase Authentication, la fonctionnalité L'API REST a été intégrée dans des SDK clients disponibles pour Android, iOS et JavaScript. Le SDK vous permet de connecter et d'inscrire des utilisateurs. accéder à l'utilisateur les informations de profil ; Associer, mettre à jour et supprimer des comptes et réinitialiser les mots de passe en utilisant le SDK client au lieu de communiquer avec le service backend via Appels REST.

  • Authentification FirebaseUI

    Tous les flux d'interface utilisateur qui gèrent la connexion, l'inscription, la récupération de mot de passe et l'association de comptes a été recréée à l'aide des SDK d'authentification Frebase. Elles sont disponibles sous forme de SDK Open Source pour iOS et Android afin de vous permettre : personnaliser complètement les flux comme impossible avec Identity Toolkit.

Autres différences:

  • Sessions et migration

    Les sessions sont gérées différemment dans Identity Toolkit et Firebase de l'authentification, l'authentification les sessions existantes seront interrompues la mise à niveau du SDK. Vos utilisateurs devront alors se reconnecter.

Avant de commencer

Avant de pouvoir migrer d'Identity Toolkit vers Firebase Authentication : doit

  1. Ouvrez la console Firebase, puis cliquez sur Importer un projet Google, puis sélectionnez votre projet Identity Toolkit.

  2. Cliquez sur > Autorisations pour ouvrir le IAM et Page Administration.

  3. Ouvrez la Comptes de service. Ici, vous voyez le compte de service configurés précédemment pour Identity Toolkit.

  4. À côté du compte de service, cliquez sur > Créer une clé Ensuite, dans la section Créer une clé privée, définissez le type de clé sur JSON et cliquez sur Créer : Un fichier JSON contenant les identifiants de votre compte de service téléchargée pour vous. Vous en aurez besoin pour initialiser le SDK à l'étape suivante.

  5. Revenez à la console Firebase. Dans la section "Authentification", ouvrez la page Modèles d'e-mail. Sur cette page, personnaliser les modèles d'e-mail de votre application.

    Dans Identity Toolkit, lorsque les utilisateurs réinitialisent leurs mots de passe, modifient les adresses e-mail et validé leur adresse e-mail, vous deviez obtenir un code OOB auprès du Google Identity Toolkit, puis envoyez le code par e-mail aux utilisateurs. Firebase envoie des e-mails basés sur les modèles que vous configurez actions supplémentaires requises.

  6. Facultatif: Si vous devez accéder aux services Firebase sur votre serveur, installer le SDK Firebase.

    1. Vous pouvez installer le module Firebase Node.js avec npm:

      $ npm init
      $ npm install --save firebase-admin
      
    2. Dans votre code, vous pouvez accéder à Firebase en utilisant:

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

Suivez ensuite la procédure de migration pour la plate-forme de votre application: Android, iOS, Web.

Serveurs et JavaScript

Changements notables

Il existe un certain nombre d'autres différences dans l'implémentation Web de Firebase à partir d'Identity Toolkit.

  • Gestion des sessions Web

    Auparavant, lorsqu'un utilisateur s'authentifiait à l'aide du widget Identity Toolkit, Un cookie a été défini pour l'utilisateur. Il a été utilisé pour amorcer la session. Ce cookie a eu une durée de vie de deux semaines et a été utilisé pour permettre à l'utilisateur d'utiliser le widget de gestion des comptes pour modifier le mot de passe et l'adresse e-mail. Un peu les sites utilisaient ce cookie pour authentifier toutes les autres demandes de page du site. D'autres sites ont utilisé les cookies pour créer leurs propres cookies via leurs le système de gestion des cookies du framework.

    Les SDK client Firebase gèrent désormais les jetons d'ID Firebase et travailler avec le backend de Firebase Authentication pour maintenir la session à jour. Le backend fait expirer les sessions lorsqu'une modification importante du compte est apportée (par exemple, des modifications de mots de passe). Les jetons d'ID Firebase ne sont pas automatiquement définis comme cookies sur le client Web et avoir une durée de vie d'une heure seulement. À moins que vous des sessions d'une heure seulement, les jetons d'ID Firebase qui servira de cookie pour valider toutes vos demandes de page. Au lieu de cela, vous vous devez configurer un écouteur lorsque l'utilisateur se connecte, obtenir le jeton d'ID Firebase ; valider le jeton et créer votre via le système de gestion des cookies de votre framework.

    Vous devez définir la durée de vie de votre cookie en fonction les besoins de sécurité de votre application.

  • Procédure de connexion Web

    Auparavant, les utilisateurs étaient redirigés vers accountchooser.com lorsque la connexion était pour savoir quel identifiant l'utilisateur voulait utiliser. Firebase Auth Le flux de l'interface utilisateur commence désormais par une liste de méthodes de connexion, y compris une adresse e-mail qui redirige vers accountchooser.com pour le Web et utilise le API HintRequest activée Android De plus, les adresses e-mail ne sont plus nécessaires dans Firebase UI. Les utilisateurs anonymes, les utilisateurs avec authentification personnalisée ou des utilisateurs provenant de fournisseurs pour lesquels les adresses e-mail ne sont pas requises.

  • Widget de gestion des comptes

    Ce widget fournit une interface utilisateur permettant aux utilisateurs de changer d'adresse e-mail, mot de passe ou dissocient leurs comptes des fournisseurs d'identité. Il est actuellement en cours de développement.

  • Bouton/Widget de connexion

    Les widgets tels que le bouton de connexion et la fiche utilisateur ne sont plus fournis. Ils peut être créé très facilement à l'aide de l'API Firebase Authentication.

  • Aucune URL signOutUrl

    Vous devez appeler firebase.auth.signOut() et gérer le rappel.

  • Aucune oobActionUrl

    L'envoi d'e-mails est désormais géré par Firebase et configuré dans Firebase console.

  • Personnalisation CSS

    L'UI Firebase utilise le style Material Design Lite, qui ajoute dynamiquement des animations Material Design.

Étape 1: Modifiez le code du serveur

  1. Si votre serveur s'appuie sur le jeton Identity Toolkit (valide pendant deux semaines) pour des sessions utilisateur Web, vous devez convertir le serveur pour qu'il utilise cookie de session.

    1. Implémenter un point de terminaison pour valider le jeton d'ID Firebase et en définissant le cookie de session pour l'utilisateur. L'application cliente envoie Jeton d'ID Firebase vers ce point de terminaison.
    2. Si la requête entrante contient votre propre cookie de session, vous pouvez considérer l’utilisateur authentifié. Sinon, traitez la demande comme non authentifiées.
    3. Si vous ne voulez pas que vos utilisateurs perdent les identifiants sessions, vous devez attendre deux semaines pour obtenir tous les jetons Identity Toolkit ou effectuer la validation à double jeton pour votre application Web comme décrit ci-dessous à l'étape 3.
  2. Comme les jetons Firebase sont différents de ceux d'Identity Toolkit, les jetons, vous devez mettre à jour votre logique de validation des jetons. installer le SDK Firebase Server sur votre serveur ; ou, si vous utilisez un langage non compatible avec le SDK Firebase Server, téléchargez une bibliothèque de validation de jetons JWT pour votre environnement et validera correctement le jeton.

  3. Lorsque vous effectuez les mises à jour ci-dessus pour la première fois, il est possible que des chemins de code utilisent les jetons Identity Toolkit. Si vous avez des applications iOS ou Android, les utilisateurs devront passer à la nouvelle version de l'application afin d'avoir les nouveaux chemins de code fonctionnent. Si vous ne voulez pas obliger vos utilisateurs à effectuer la mise à jour votre application, vous pouvez ajouter une logique de validation de serveur supplémentaire qui examine et détermine s'il doit utiliser le SDK Firebase SDK Identity Toolkit pour valider le jeton. Si vous ne disposez que d'un serveur Web toutes les nouvelles demandes d'authentification dans Firebase. Par conséquent, il vous suffit d'utiliser le jeton Firebase méthodes de validation.

Consultez la documentation de référence de l'API Web Firebase.

Étape 2: Mettez à jour votre code HTML

  1. Ajoutez le code d'initialisation de Firebase à votre application:

    1. Ouvrez votre projet dans la console Firebase.
    2. Sur la page "Vue d'ensemble", cliquez sur Ajouter une application, puis sur Ajouter Firebase à votre l'application Web. Un extrait de code qui initialise Firebase s'affiche.
    3. Copiez et collez l'extrait d'initialisation sur votre page Web.
  2. Ajouter une authentification FirebaseUI à votre application:

    <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. Supprimez le SDK Identity Toolkit de votre application.

  4. Si vous utilisiez le jeton d'ID Identity Toolkit pour gérer les sessions, devez apporter les modifications suivantes côté client:

    1. Une fois connecté à Firebase, obtenez un jeton d'ID Firebase en Appel de firebase.auth().currentUser.getToken() en cours.

    2. Envoyer le jeton d'ID Firebase au serveur backend, le valider et émettre votre propre cookie de session.

      Ne vous fiez pas uniquement au cookie de session pour effectuer des opérations des opérations ou l'envoi de demandes de modification authentifiées à votre serveur. Toi devront fournir une falsification de requête intersites supplémentaire (CSRF) de sécurité.

      Si votre framework n'offre pas de protection CSRF, vous pouvez empêcher une attaque consiste à obtenir un jeton d'ID Firebase pour l'utilisateur connecté avec getToken() et incluez le jeton avec chaque requête (la session sera également envoyé par défaut). Vous validerez ensuite ce jeton en utilisant le SDK du serveur Firebase en plus de la vérification des cookies de session, que votre framework de backend a terminé. Cela rendra la tâche plus difficile pour les attaques CSRF doivent réussir, car le jeton d'identification Firebase n'est stocké qu'à l'aide de un stockage Web et jamais dans un cookie.

    3. Les jetons Identity Toolkit sont valides pendant deux semaines. Vous voudrez peut-être continuent d'émettre des jetons d'une durée de deux semaines, ou vous souhaitez en fonction des exigences de sécurité de votre application. Lorsqu'un utilisateur se déconnecte, effacez le cookie de la session.

Étape 3: Mettez à jour les URL de redirection IdP

  1. Dans la console Firebase, ouvrez la section "Authentification", puis cliquez sur le bouton Onglet Méthode de connexion.

  2. Pour chaque fournisseur de connexion fédérée que vous prenez en charge, procédez comme suit:

    1. Cliquez sur le nom du fournisseur de connexion.
    2. Copiez l'URI de redirection OAuth.
    3. Dans la console pour les développeurs du fournisseur de connexion, mettez à jour la redirection OAuth URI.

Android

Étape 1: Ajoutez Firebase à votre application

  1. Ouvrez la console Firebase. sélectionnez votre projet Identity Toolkit, que vous avez déjà importé.

  2. Sur la page "Vue d'ensemble", cliquez sur Ajouter une application, puis sur Ajouter Firebase à votre application Android. Dans la boîte de dialogue "Ajouter Firebase", indiquez le package de votre application et l'empreinte du certificat de signature, puis cliquez sur Ajouter une application. La google-services.json est ensuite téléchargé sur votre ordinateur.

  3. Copiez le fichier de configuration dans le répertoire racine du module de votre application Android. Ce contenant des informations sur le projet et le client OAuth.

  4. Dans le fichier build.gradle au niveau du projet (<var>your-project</var>/build.gradle), spécifiez le nom du package de votre application dans la section defaultConfig:

    defaultConfig {
       …..
      applicationId "com.your-app"
    }
    
  5. Toujours dans le fichier build.gradle au niveau du projet, ajoutez une dépendance à inclure Plug-in google-services:

    buildscript {
     dependencies {
       // Add this line
       classpath 'com.google.gms:google-services:3.0.0'
     }
    }
    
  6. Dans le fichier build.gradle au niveau de l'application (<var>my-project</var>/<var>app-module</var>/build.gradle), ajoutez la ci-dessous afin d'activer le plug-in "google-services" :

    // Add to the bottom of the file
    apply plugin: 'com.google.gms.google-services'
    

    Le plug-in Google-services utilise le fichier google-services.json pour configurer votre application à utiliser Firebase.

  7. Toujours dans le fichier build.gradle au niveau de l'application, ajoutez Firebase Authentication la dépendance:

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

Étape 2: Supprimez le SDK Identity Toolkit

  1. Supprimer la configuration Identity Toolkit de AndroidManifest.xml . Ces informations sont incluses dans le fichier google-service.json et chargé par le plug-in google-services.
  2. Supprimez le SDK Identity Toolkit de votre application.

Étape 3: Ajoutez FirebaseUI à votre application

  1. Ajouter une authentification FirebaseUI à votre application.

  2. Dans votre application, remplacez les appels au SDK Identity Toolkit par des appels à FirebaseUI.

iOS

Étape 1: Ajoutez Firebase à votre application

  1. Ajoutez le SDK Firebase à votre application en exécutant les commandes suivantes:

    $ cd your-project directory
    $ pod init
    $ pod 'Firebase'
    
  2. Ouvrez la console Firebase. sélectionnez votre projet Identity Toolkit, que vous avez déjà importé.

  3. Sur la page "Vue d'ensemble", cliquez sur Ajouter une application, puis sur Ajouter Firebase à votre application iOS. Dans la boîte de dialogue "Ajouter Firebase", indiquez l'ID du bundle de votre application et ID App Store, puis cliquez sur Add App (Ajouter l'application). La GoogleService-Info.plist est ensuite téléchargé sur votre ordinateur. Si votre projet comporte plusieurs ID de bundle, chacun d'eux doit être connecté à la console Firebase pour pouvoir disposer GoogleService-Info.plist.

  4. Copiez le fichier de configuration à la racine de votre projet Xcode et ajoutez-le à toutes les cibles.

Étape 2: Supprimez le SDK Identity Toolkit

  1. Supprimez GoogleIdentityToolkit du Podfile de votre application.
  2. Exécutez la commande pod install.

Étape 3: Ajoutez FirebaseUI à votre application

  1. Ajouter une authentification FirebaseUI à votre application.

  2. Dans votre application, remplacez les appels au SDK Identity Toolkit par des appels à FirebaseUI.