En mai 2016, nous avons publié la dernière version de Google Identity Toolkit en tant qu'authentification Firebase , et en avril 2019, nous avons lancé la plateforme d'identité de Google Cloud . Ces produits incluent des SDK clients mis à niveau, des bibliothèques d'interface utilisateur open source, une gestion de session et un service d'envoi d'e-mails intégré pour les flux de mots de passe oubliés.

Le 30 juin 2020 , les SDK documentés sur cette page et la page de configuration de l'API cesseront de fonctionner. (Les points de terminaison https://identitytoolkit.googleapis.com/... et https://securetoken.googleapis.com/... utilisés par Identity Platform et Firebase Authentication continueront de fonctionner.)

Pour migrer un projet existant depuis Identity Toolkit, consultez le guide de migration Identity Platform ou le guide de migration Firebase Authentication .

Migrer de Google Identity Toolkit vers Google Cloud Identity Platform

Restez organisé à l'aide des collections Enregistrez et classez les contenus selon vos préférences.

La dernière version de Google Identity Toolkit a été publiée sous le nom Identity Platform et Firebase Authentication. À l'avenir, le travail de fonctionnalité sur Identity Toolkit sera interrompu. Le développement de nouvelles fonctionnalités sera effectué sur Identity Platform et Firebase Authentication. Nous encourageons les développeurs Identity Toolkit à passer à ces plates-formes dès que cela est possible pour leurs applications.

Nouvelles fonctionnalités

Identity Platform propose déjà des fonctionnalités améliorées par rapport à Google Identity Toolkit:

  • Nouvelle console d'administration

    Identity Platform dispose d'une nouvelle console pour développeur qui vous permet d'afficher, de modifier et de supprimer vos utilisateurs. Elle peut vous aider à déboguer vos flux de connexion et d'inscription. La console vous permet également de configurer des méthodes d'authentification et de personnaliser des modèles d'e-mails.

  • Nouvelles méthodes d'authentification

    Identity Platform est compatible avec les normes de fédération d'entreprise, telles que SAML et OIDC, ce qui vous permet de faire évoluer des applications et des services SaaS. Identity Platform est également compatible avec des fournisseurs tels que GitHub, Microsoft, Yahoo! Vous pouvez utiliser la connexion anonyme pour créer un ID utilisateur unique sans que l'utilisateur soit obligé de suivre un processus de connexion ou d'inscription. Cela vous permet d'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, toutes les activités sont conservées avec le même ID utilisateur. Cela est utile pour les scénarios tels que les paniers d'achat côté serveur ou d'autres applications dans lesquelles vous souhaitez engager l'utilisateur avant de lui envoyer un processus d'inscription.

  • Évoluez en toute confiance grâce aux contrats de niveau de service et à l'assistance Cloud

    Identity Platform repose sur une infrastructure Google de confiance et fournit des contrats de niveau de service ainsi qu'une assistance Google Cloud. Cela signifie que vous pouvez faire évoluer votre service en toute confiance, et compter sur Google pour fournir la résilience, la disponibilité et l'évolutivité dont vous avez besoin.

  • Accès à l'ensemble de Firebase

    Firebase est une plate-forme mobile qui vous permet de développer rapidement des applications de haute qualité, d'élargir votre base d'utilisateurs et d'accroître vos revenus. Firebase est constitué de fonctionnalités complémentaires que vous pouvez combiner selon vos besoins et qui incluent une infrastructure pour les données analytiques mobiles, la messagerie cloud, la base de données en temps réel, le stockage de fichiers, l'hébergement statique, la configuration à distance, les rapports d'erreur et les tests de plantages pour Android.

  • Interfaces utilisateur mises à jour

    Nous avons entièrement remanié les flux de l'interface utilisateur en nous appuyant sur les dernières études de Google sur l'expérience utilisateur. Cela inclut la récupération des mots de passe, l'association de comptes et les flux de ambiguïté des comptes nouveaux/existants dont le code et le débogage prennent souvent beaucoup de temps. Il intègre Smart Lock pour les mots de passe sur Android, ce qui a considérablement amélioré les conversions de connexion et d'inscription pour les applications participantes. Il permet également de modifier facilement les thèmes en fonction de votre application et, pour une personnalisation optimale, a été créé en Open Source pour les versions Android et iOS.

  • Configuration simplifiée du serveur

    Avec Identity Toolkit, nous avons constaté que de nombreux développeurs avaient choisi de ne pas mettre en œuvre le processus de récupération des e-mails, ce qui empêchait les utilisateurs de récupérer leur compte en cas d'oubli de leur mot de passe. Identity Platform peut envoyer des messages de vérification d'adresse e-mail, de réinitialisation de mot de passe ou de mot de passe modifié à l'utilisateur. Le texte peut être facilement personnalisé pour vos utilisateurs. De plus, vous n'avez plus besoin d'héberger les widgets de l'interface utilisateur pour héberger les redirections et compléter les opérations de modification du mot de passe.

  • Nouveaux SDK

    Toutes les API de serveur Identity Toolkit sont désormais disponibles de manière native pour chacune de nos bibliothèques clientes (Android, iOS, Web). Les développeurs pourront se connecter et inscrire d'anciens et de nouveaux utilisateurs, accéder aux propriétés utilisateur, associer, mettre à jour et supprimer des comptes, réinitialiser des mots de passe, etc. sans être liés à une interface utilisateur fixe. Si vous préférez, vous pouvez créer manuellement votre propre flux de connexion et votre expérience sur cette API.

  • Gestion des sessions pour les applications mobiles

    Avec Identity Toolkit, les applications ont créé leur propre état de session en fonction de l'événement d'authentification initial d'Identity Toolkit. Identity Platform utilise un service de backend qui récupère un jeton d'actualisation issu de l'événement d'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 ne peuvent plus générer de nouveaux jetons d'accès, ce qui désactive l'accès jusqu'à ce que l'utilisateur s'authentifie à nouveau sur cet appareil.

Différences de fonctionnalités

Certaines fonctionnalités d'Identity Toolkit ne sont actuellement pas disponibles dans Identity Platform, tandis que d'autres ont été repensées et fonctionnent différemment. Vous pouvez choisir de ne pas migrer immédiatement si ces fonctionnalités sont importantes pour votre application. Dans de nombreux cas, elles peuvent ne pas être importantes pour votre application ou des solutions de remplacement faciles vous permettront de procéder à la migration.

Différences côté serveur

Le service principal d'Identity Toolkit, avec ses API REST sous-jacentes, sa logique de validation de compte et sa base de données utilisateur principale, n'a que quelques mises à jour mineures. Cependant, certaines fonctionnalités et la manière dont vous avez intégré Identity Platform à votre service ont changé.

  • Fournisseurs d'identité

    PayPal et AOL ne sont pas acceptés. Les utilisateurs disposant de comptes de ces IdP peuvent toujours se connecter à votre application avec le flux de récupération de mot de passe et configurer un mot de passe pour leur compte.

  • Bibliothèques de serveurs

    Des SDK Admin sont actuellement disponibles pour Java, Node.js, Python, Go et C#.

  • E-mails de gestion du compte

    Firebase ou le serveur de messagerie du développeur peut se charger de la réinitialisation du mot de passe, de la vérification des e-mails et des messages de modification d'adresse e-mail. Actuellement, les modèles d'e-mail ne proposent qu'une personnalisation limitée à partir de l'interface utilisateur, mais vous pouvez les personnaliser davantage à l'aide des SDK Admin.

  • Confirmation du changement d'adresse e-mail

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

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

  • Déploiement IdP

    Identity Toolkit a pu ajouter des fournisseurs d'identité à votre système de connexion progressivement pour vous permettre de tester l'impact sur vos requêtes d'assistance. Cette fonctionnalité a été supprimée de Firebase Authentication.

Différences côté client

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

  • SDK client et serveur

    Dans Identity Platform, les fonctionnalités fournies par l'API REST Identity Toolkit ont été intégrées aux SDK client disponibles pour Android, iOS et JavaScript. Au lieu de communiquer avec le service de backend via des appels REST, vous pouvez utiliser le SDK pour vous connecter et inscrire des utilisateurs, accéder aux informations de profil utilisateur, associer, mettre à jour et supprimer des comptes, et réinitialiser les mots de passe à l'aide du SDK client.

  • Widget d'interface utilisateur

    Tous les flux de l'interface utilisateur qui gèrent la connexion, l'inscription, la récupération de mot de passe et l'association de comptes ont été recréés à l'aide des SDK client et empaquetés comme un widget de connexion. Disponibles en tant que SDK Open Source pour iOS, Android et Web, ils vous permettent de personnaliser complètement les flux de manière impossible avec Identity Toolkit.

Autres différences:

  • Sessions et migration

    Étant donné que les sessions sont gérées différemment dans Identity Toolkit et Identity Platform, vos sessions existantes seront interrompues lors de la mise à niveau du SDK, et vos utilisateurs devront se reconnecter.

Avant de commencer

Avant de pouvoir migrer depuis Identity Toolkit vers Identity Platform, vous devez:

  1. Ouvrez Cloud Console, puis sélectionnez votre projet Identity Toolkit.

  2. Sur la place de marché, accédez à Identity Platform et sélectionnez "Identity Platform" (Activer Identity Platform).

  3. Ouvrez la Comptes de service. Vous pouvez voir ici le compte de service que vous avez précédemment configuré pour Identity Toolkit.

  4. À côté du compte de service, cliquez sur > Create key (Créer une clé). Dans la boîte de dialogue Create private key (Créer une clé privée), définissez le type de clé sur JSON, puis cliquez sur Create (Créer). Un fichier JSON contenant les identifiants de votre compte de service est téléchargé pour vous. Vous en aurez besoin pour initialiser le SDK à l'étape suivante.

  5. Revenez à Cloud Console. Dans la section"Providers" (Fournisseurs) de la méthode de connexion"Email/Password" (Adresse e-mail/Mot de passe), ouvrez la page Email Templates (Modèles d'e-mails). Vous pouvez ensuite personnaliser vos modèles d'application.

    Dans Identity Toolkit, lorsque les utilisateurs réinitialisent des mots de passe, changent d'adresse e-mail ou valident leur adresse e-mail, vous devez obtenir un code OOB du serveur Identity Toolkit, puis l'envoyer aux utilisateurs par e-mail. Identity Platform envoie des e-mails en fonction des modèles que vous configurez, sans qu'aucune action supplémentaire ne soit requise.

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

    1. Vous pouvez installer le SDK Admin Node.js avec npm:

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

      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 votre plate-forme d'applications: Android, iOS, Web.

Serveurs et JavaScript

Modifications notables

Il existe un certain nombre de différences supplémentaires dans l'implémentation Web d'Identity Platform par rapport à Identity Toolkit.

  • Gestion des sessions Web

    Auparavant, lorsqu'un utilisateur s'authentifiait via le widget Identity Toolkit, un cookie lui était attribué afin d'amorcer la session. Ce cookie a duré deux semaines et a été utilisé pour permettre à l'utilisateur de modifier le mot de passe et l'adresse e-mail à l'aide du widget de gestion de compte. Certains sites ont utilisé ce cookie pour authentifier toutes les autres requêtes de page sur le site. D'autres sites ont utilisé les cookies pour créer leurs propres cookies via le système de gestion des cookies de leur framework.

    Les SDK client Identity Platform gèrent désormais les jetons d'ID et fonctionnent avec le backend Identity Platform pour actualiser la session. Le backend expire lorsque des modifications importantes apportées au compte (par exemple, des modifications de mot de passe utilisateur) ont eu lieu. Les jetons d'ID ne sont pas automatiquement définis comme cookies sur le client Web et n'ont qu'une durée de vie d'une heure. À moins que vous ne souhaitiez des sessions d'une heure seulement, les jetons d'ID ne peuvent pas être utilisés comme cookie pour valider toutes vos requêtes de page. Au lieu de cela, vous devez configurer un écouteur lorsque l'utilisateur se connecte, obtenir le jeton d'ID, valider le jeton et créer votre propre cookie via le système de gestion des cookies de votre framework.

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

  • Flux de connexion Web

    Auparavant, les utilisateurs étaient redirigés vers accountchooser.com lors de la connexion pour connaître l'identifiant qu'ils souhaitaient utiliser. Le flux de l'interface utilisateur Identity Platform commence maintenant par la liste des méthodes de connexion, y compris une option de messagerie qui accède à accountchooser.com pour le Web et utilise l'API hintRequest sur Android. En outre, les adresses e-mail ne sont plus requises dans l'interface utilisateur. Il sera ainsi plus facile d'accepter des utilisateurs anonymes, des utilisateurs d'authentification personnalisée ou des fournisseurs dont l'adresse e-mail n'est pas requise.

  • Widget de gestion des comptes

    Ce widget fournit une interface utilisateur permettant aux utilisateurs de modifier les adresses e-mail, de modifier le mot de passe ou de dissocier leurs comptes des fournisseurs d'identité. Elle est en cours de développement.

  • Bouton/Widget de connexion

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

  • Aucun signOutUrl

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

  • Aucune URL oobActionUrl

    Identity Platform gère désormais l'envoi des e-mails. Il est configuré dans la console Firebase.

  • Personnalisation CSS

    Le widget UI utilise le style Material Design Lite, qui ajoute dynamiquement des animations Material Design.

Étape 1: Modifiez le code du serveur

  1. Si votre serveur utilise le jeton Identity Toolkit (valide pendant deux semaines) pour gérer les sessions utilisateur Web, vous devez le convertir afin qu'il utilise son propre cookie de session.

    1. Mettez en œuvre un point de terminaison pour valider le jeton d'ID et définir le cookie de session pour l'utilisateur. L'application cliente envoie le jeton d'ID Firebase à ce point de terminaison.
    2. Si la requête entrante contient votre propre cookie de session, vous pouvez considérer que l'utilisateur est authentifié. Sinon, traitez la requête comme non authentifiée.
    3. Si vous souhaitez qu'aucun de vos utilisateurs ne perde ses sessions de connexion existantes, vous devez attendre deux semaines avant l'expiration de tous les jetons Identity Toolkit, ou effectuer la validation des jetons doubles pour votre application Web, comme décrit ci-dessous à l'étape 3.
  2. Ensuite, comme les jetons d'ID sont différents des jetons Identity Toolkit, vous devez mettre à jour votre logique de validation des jetons. Installez le SDK Admin sur votre serveur. Si vous utilisez un langage non compatible avec ce SDK, téléchargez une bibliothèque de validation de jetons JWT pour votre environnement et validez correctement le jeton.

  3. Lorsque vous effectuez les mises à jour ci-dessus pour la première fois, il est possible que vous disposiez toujours de chemins de code basés sur les jetons Identity Toolkit. Si vous disposez d'applications iOS ou Android, les utilisateurs devront passer à la nouvelle version de l'application pour que les nouveaux chemins d'accès de code fonctionnent. Si vous ne souhaitez pas forcer vos utilisateurs à mettre à jour votre application, vous pouvez ajouter une logique de validation de serveur supplémentaire qui examine le jeton et détermine s'il doit utiliser le SDK Firebase ou Identity SDK pour le valider. Si vous ne disposez que d'une application Web, toutes les nouvelles requêtes d'authentification seront transférées vers Identity Platform. Par conséquent, il vous suffit d'utiliser les méthodes de validation des jetons d'identification.

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

Étape 2: Mettez à jour votre code HTML

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

    1. Ouvrez votre projet dans Cloud Console.
    2. Sur la page providers, cliquez sur Application Setup Details (Détails de la configuration de l'application). Un extrait de code qui initialise Identity Platform s'affiche.
    3. Copiez et collez l'extrait de code d'initialisation sur votre page Web.
  2. Ajoutez le widget d'authentification à 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 vous serviez du jeton d'ID Identity Toolkit pour gérer les sessions, vous devez apporter les modifications suivantes côté client:

    1. Une fois connecté avec Identity Platform, appelez firebase.auth().currentUser.getToken() pour obtenir un jeton d'ID.

    2. Envoyez le jeton d'ID au serveur backend, validez-le et émettez votre propre cookie de session.

      Ne vous appuyez pas uniquement sur le cookie de la session lorsque vous effectuez des opérations sensibles ou envoyez des requêtes de modification authentifiées à votre serveur. Vous devrez fournir une protection supplémentaire contre la falsification de requêtes intersites (CSRF).

      Si votre framework ne fournit pas de protection CSRF, une façon d'empêcher une attaque consiste à obtenir un jeton d'ID pour l'utilisateur connecté avec getToken() et à l'inclure avec chaque requête (le cookie de session est également envoyé par défaut). Vous valideriez ensuite ce jeton à l'aide du SDK Admin en plus de la vérification des cookies de session, que votre framework de backend a effectuée. Cela rendra plus difficile l'exécution des attaques CSRF, car le jeton d'ID n'est stocké qu'à l'aide du stockage Web et jamais dans un cookie.

    3. Les jetons Identity Toolkit sont valides pendant deux semaines. Vous pouvez choisir de continuer à délivrer des jetons qui durent deux semaines, ou de le raccourcir selon les 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 Cloud Console, ouvrez la section Fournisseurs.

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

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

Android

Étape 1: Ajoutez Identity Platform à votre application avec Firebase

  1. Ouvrez Cloud Console, puis sélectionnez votre projet Identity Toolkit.

  2. Sur la page "Fournisseurs", cliquez sur Informations sur la configuration de l'application, sélectionnez l'onglet Android, puis cliquez sur Premiers pas dans Firebase. Dans la boîte de dialogue "Ajouter Firebase", fournissez le nom du package et l'empreinte du certificat de signature de votre application, puis cliquez sur Ajouter une application. Le fichier de configuration 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 fichier de configuration contient des informations sur le projet et le client Google 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 pour inclure le 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 ligne suivante après le plug-in Android Gradle pour activer le plug-in google-services:

    apply plugin: 'com.android.application'
    // Add this line
    apply plugin: 'com.google.gms.google-services'
    

    Le plug-in google-services utilise le fichier google-services.json pour configurer votre application afin qu'elle utilise Firebase.

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

    compile 'com.google.firebase:firebase-auth:21.0.8'
    compile 'com.google.android.gms:play-services-auth:20.3.0'
    

Étape 2: Supprimez le SDK Identity Toolkit

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

Étape 3: Ajoutez FirebaseUI à votre application

  1. Ajoutez FirebaseUI Auth à 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 client à votre application en exécutant les commandes suivantes:

    $ cd your-project directory
    $ pod init
    $ pod 'Firebase'
    
  2. Ouvrez Cloud Console, puis sélectionnez votre projet Identity Toolkit.

  3. Sur la page "Fournisseurs", cliquez sur Informations sur la configuration de l'application, sélectionnez l'onglet iOS, puis cliquez sur Premiers pas dans Firebase. Dans la boîte de dialogue "Ajouter Firebase", indiquez le nom du package et l'empreinte du certificat de signature de votre application, puis cliquez sur Ajouter une application. Le fichier de configuration google-services.json est ensuite téléchargé sur votre ordinateur. Dans la boîte de dialogue "Ajouter Firebase", indiquez l'ID de bundle de l'application et l'ID App Store, puis cliquez sur Ajouter une application. Le fichier de configuration GoogleService-Info.plist est ensuite téléchargé sur votre ordinateur. Si votre projet contient plusieurs ID de bundle, chacun d'eux doit être connecté dans la console Firebase pour pouvoir posséder son propre fichier 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 fichier Podfile de votre application.
  2. Exécutez la commande pod install.

Étape 3: Ajoutez FirebaseUI à votre application

  1. Ajoutez FirebaseUI Auth à votre application.

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