Migrer de Google Identity Toolkit vers Identity Platform de Google Cloud

La dernière version de Google Identity Toolkit est disponible sous la forme de Identity Platform et de Firebase Authentication. À l'avenir, le travail sur les fonctionnalités d'Identity Toolkit sera bloqué. tout nouveau le développement des fonctionnalités sera effectué sur Identity Platform et Firebase Authentification. Nous encourageons les développeurs d'Identity Toolkit à passer à ces plates-formes dès que cela est possible pour leurs applications.

Nouvelles fonctionnalités

Identity Platform offre 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 les développeurs qui vous permet d'afficher, de modifier et de supprimer vos utilisateurs. Cela peut être utile pour 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, pour permettre le scaling d'applications et de services SaaS Identity Platform propose une assistance pour des fournisseurs tels que GitHub, Microsoft, Yahoo, etc. Vous pouvez utiliser la connexion anonyme pour créer un identifiant d'utilisateur unique sans Exiger de l'utilisateur qu'il se connecte ou s'inscrit via un processus quelconque cela permet d'effectuer des appels d'API authentifiés, comme vous le feriez avec un utilisateur standard. Quand ? l'utilisateur décide de créer un compte, toutes les activités sont conservées le même ID utilisateur. C'est utile pour les scénarios tels que les achats côté serveur paniers ou autres applications dans lesquels vous souhaitez susciter l'intérêt de l'utilisateur avant de l'envoyer un processus d'inscription.

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

    Basé sur l'infrastructure de confiance de Google, Identity Platform fournit Contrats de niveau de service et l'assistance de Google Cloud. Vous pouvez ainsi faire évoluer votre service en toute confiance et compter sur Google pour vous 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 qualité, d'élargir votre base d'utilisateurs et d'accroître vos revenus. 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.

  • UI mises à jour

    Nous avons complètement reconstruit les flux d'UI en nous basant sur les dernières recherches UX de Google. Cela inclut la récupération de mot de passe, l'association de comptes, les flux de déambiguïsation de comptes nouveaux/existants, qui prennent souvent beaucoup de temps à coder et à déboguer. 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 le thème pour qu'il corresponde à votre application. Pour une personnalisation maximale, les versions Android et iOS sont Open Source.

  • Configuration de serveur simplifiée

    Avec Identity Toolkit, nous avons constaté que de nombreux développeurs choisissaient de ne pas implémenter le flux de récupération par e-mail, ce qui empêchait leurs utilisateurs de récupérer leur compte s'ils avaient oublié leur mot de passe. Identity Platform peut envoyer des messages de validation de l'adresse e-mail, de réinitialisation du mot de passe et de modification du mot de passe à l'utilisateur. Le texte peut être facilement personnalisé pour vos utilisateurs. De plus, vous n'avez plus besoin d'héberger les widgets d'interface utilisateur pour héberger les redirections et effectuer les opérations de modification de mot de passe.

  • Nouveaux SDK

    Toutes les API de serveur d'Identity Toolkit sont désormais disponibles en mode natif avec chacune de nos bibliothèques clientes (Android, iOS, Web). Les développeurs pourront se connecter et enregistrer 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 UI fixe. Si vous préférez, vous pouvez créer manuellement l'intégralité de votre flux et de votre expérience de connexion sur 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. Identity Platform utilise un service backend qui prend un jeton d'actualisation, créé à partir 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 générer de nouveaux jetons d'accès et désactiver l'accès l'utilisateur s'authentifie à nouveau sur cet appareil.

Différences de fonctionnalités

Certaines fonctionnalités Identity Toolkit ne sont actuellement pas disponibles dans Identity Plate-forme, tandis que 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 de base, ses API REST sous-jacentes, sa logique de validation de compte et sa base de données utilisateur principale n'ont subi que des mises à jour mineures. Toutefois, certaines fonctionnalités et la manière dont vous intégrez Identity Platform à votre service ont changé.

  • Fournisseurs d'identité

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

  • Bibliothèques de serveurs

    Actuellement, des SDK Admin sont disponibles pour Java, Node.js, Python, Go et C#.

  • E-mails de gestion du compte

    Les messages de réinitialisation de mot de passe, de validation de l'adresse e-mail et de modification de l'adresse e-mail peuvent être envoyés par Firebase ou par le propre serveur de messagerie du développeur. Actuellement, les modèles d'e-mails ne permettent qu'une personnalisation limitée à partir de l'UI, mais peuvent être personnalisés davantage avec les SDK Admin.

  • Confirmation de changement d'adresse e-mail

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

    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 des fournisseurs 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 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 la bibliothèque L'API REST a été intégrée aux SDK clients disponibles pour Android, iOS et JavaScript. Le SDK vous permet de connecter et d'inscrire des utilisateurs. accéder à l'utilisateur 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 de backend via Appels REST.

  • Widget d'interface utilisateur

    Tous les flux d'UI qui gèrent la connexion, l'inscription, la récupération de mot de passe et l'association de comptes ont été reconstruits à l'aide des SDK client et empaquetés en tant que widget de connexion. Ils sont 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.

Voici d'autres différences :

  • Sessions et migration

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

Avant de commencer

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

  1. Ouvrez la console Cloud et sélectionnez votre projet Identity Toolkit.

  2. Dans la section "Place de marché", accédez à Identity Platform et sélectionnez "Activer Identity Platform"

  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 est téléchargé pour vous. Vous en aurez besoin pour initialiser le SDK à l'étape suivante.

  5. Revenez à la console Cloud. Dans la section "Fournisseurs", sous le mode de connexion "Adresse e-mail/Mot de passe", ouvrez la page Modèles d'e-mails. Vous pouvez ensuite personnaliser modèles de ML.

    Dans Identity Toolkit, lorsque les utilisateurs réinitialisent leurs mots de passe, modifient leurs adresses e-mail ou les valident, vous devez obtenir un code hors bande auprès du serveur Identity Toolkit, puis l'envoyer aux utilisateurs par e-mail. Identity Platform 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 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 à l'aide des éléments suivants :

      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

Modifications notables

Il existe un certain nombre d'autres différences dans l'implémentation Web de Identity Platform à 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 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 clients Identity Platform gèrent désormais les jetons d'ID et fonctionnent avec le backend d'Identity Platform 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'identification 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'identification 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 ; 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 la session 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 lorsque la connexion était pour savoir quel identifiant l'utilisateur voulait utiliser. Le flux de l'UI Identity Platform commence désormais par une liste de méthodes de connexion, y compris une option d'adresse e-mail qui accède à accountchooser.com pour le Web et utilise l'API hintRequest sur Android. De plus, les adresses e-mail ne sont plus obligatoires dans l'interface utilisateur. 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 UI permettant aux utilisateurs de modifier leurs adresses e-mail, leur mot de passe ou de dissocier 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 Identity Platform et configuré dans la console Firebase.

  • Personnalisation CSS

    Le widget d'interface utilisateur utilise le style Material Design Lite, qui ajoute dynamiquement des animations Material Design.

Étape 1 : Modifier 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émentez un point de terminaison pour Valider le jeton d'ID 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 comme 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 d'ID sont différents de ceux de Identity Toolkit, les jetons, vous devez mettre à jour votre logique de validation des jetons. Installez la SDK Admin à votre serveur. ou, si vous utilisez une langue non compatible avec le SDK Admin, téléchargez une bibliothèque de validation de jetons JWT. pour votre environnement et valider le jeton.

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

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 la console Cloud.
    2. Sur providers cliquez sur Informations sur la configuration de l'application. Un extrait de code initialise Identity Platform s'affiche.
    3. Copiez et collez l'extrait d'initialisation sur votre page Web.
  2. Ajouter 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 utilisiez le jeton d'ID Identity Toolkit pour gérer les sessions, devez apporter les modifications suivantes côté client:

    1. Une fois que vous êtes connecté à Identity Platform, obtenez un jeton d'identification Appel de firebase.auth().currentUser.getToken() en cours.

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

      Ne vous appuyez pas uniquement sur le cookie de session lorsque vous effectuez des opérations sensibles ou que vous 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 contre les attaques CSRF, une façon d'empêcher une attaque consiste à obtenir un jeton d'ID pour l'utilisateur connecté avec getToken() et à inclure le jeton avec chaque requête (le cookie de session sera également envoyé par défaut). Vous devez ensuite valider ce jeton à l'aide du SDK d'administration en plus de la vérification du cookie de session, que votre framework backend a effectuée. Cela rend les attaques CSRF plus difficiles à réussir, 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 continuer à émettre des jetons qui durent deux semaines, ou vous pouvez les rendre plus longs ou plus courts en fonction des exigences de sécurité de votre application. Lorsqu'un utilisateur se déconnecte, effacez le cookie de session.

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

  1. Dans la Cloud Console, ouvrez la section Fournisseurs.

  2. Pour chaque fournisseur de connexion fédérée que vous acceptez, 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 Identity Platform à votre application avec Firebase

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

  2. Sur la page "Fournisseurs", cliquez sur Informations sur la configuration de l'application, puis sélectionnez Android, puis cliquez sur Get Started in Firebase (Premiers pas avec 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.

  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 votre fichier build.gradle de niveau 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 suivante après le plug-in Android Gradle pour activer 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 pour qu'elle utilise Firebase.

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

    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. Supprimez la configuration Identity Toolkit du fichier 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. 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 la console Cloud, puis sélectionnez votre projet Identity Toolkit.

  3. Sur la page "Fournisseurs", cliquez sur Détails de 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 l'ID du bundle et l'ID App Store, puis cliquez sur Add App (Ajouter l'application). Le fichier de configuration GoogleService-Info.plist est ensuite téléchargé 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.