La dernière version de Google Identity Toolkit a été publiée sous le nom de Firebase Authentication. À l'avenir, le développement de fonctionnalités pour Identity Toolkit sera gelé, et toutes les nouvelles fonctionnalités seront développées pour Firebase Authentication. Nous encourageons les développeurs d'Identity Toolkit à passer à Firebase Authentication dès que possible pour leurs applications. Toutefois, Identity Toolkit continuera de fonctionner et ne sera pas abandonné sans autre annonce.
Nouvelles fonctionnalités
Firebase Authentication offre déjà des améliorations significatives par rapport à Google Identity Toolkit :
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 est composé de fonctionnalités complémentaires que vous pouvez combiner pour répondre à vos besoins. Il inclut une infrastructure pour : l'analyse mobile, la messagerie cloud, une base de données en temps réel, le stockage de fichiers, l'hébergement statique, la configuration à distance, le signalement des plantages sur mobile et les tests Android.
Interfaces utilisateur mises à jour
Nous avons entièrement repensé les flux d'interface utilisateur en nous basant sur les dernières recherches de Google en matière d'expérience utilisateur. Cela inclut la récupération de mot de passe, l'association de comptes, ainsi que les flux de désambiguï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é la conversion des connexions et des inscriptions pour les applications participantes. Il permet également de modifier facilement les thèmes pour les adapter à votre application. Pour une personnalisation maximale, les Android et iOS sont Open Source.
Configuration simplifiée du serveur
Nous avons simplifié l'utilisation de Firebase Authentication pour les développeurs. Avec Identity Toolkit, nous avons constaté que de nombreux développeurs choisissaient de ne pas implémenter le flux de récupération d'e-mails, ce qui empêchait leurs utilisateurs de récupérer leurs comptes s'ils oubliaient leur mot de passe. Firebase Authentication peut envoyer des messages de validation d'e-mail, de réinitialisation de mot de passe et de modification de 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.
Nouvelle console d'administration
Firebase dispose d'une nouvelle console pour les développeurs et la section "Authentication" (Authentification) vous permet d'afficher, de modifier et de supprimer vos utilisateurs. Cela peut être très 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.
Nouveaux SDK
Toutes les API serveur d'Identity Toolkit sont désormais disponibles de manière native avec chacune de nos bibliothèques clientes (Android, iOS, Web). Les développeurs pourront connecter et inscrire des utilisateurs anciens et nouveaux, accéder aux propriétés des utilisateurs, associer, modifier et supprimer des comptes, réinitialiser des mots de passe, et bien plus encore, sans être liés à une interface utilisateur fixe. Si vous le préférez, vous pouvez créer manuellement votre propre flux et expérience de connexion sur cette API.
Gestion des sessions pour les applications mobiles
Avec Identity Toolkit, les applications créaient leur propre état de session en fonction de l' événement d'authentification initial d'Identity Toolkit. Firebase Auth utilise un service de backend qui prend un jeton d'actualisation, généré à 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 ne pourront plus générer de nouveaux jetons d'accès, ce qui désactivera l'accès jusqu'à ce que l'utilisateur se réauthentifie sur cet appareil.
Authentification anonyme et GitHub
Firebase Authentication est compatible avec deux nouveaux types d'authentification : GitHub et anonyme. La connexion anonyme peut être utilisée pour créer un ID utilisateur unique sans que l'utilisateur ait à 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 normal. Lorsque l'utilisateur décide de créer un compte, toutes les activités sont conservées avec le même ID utilisateur. C'est idéal dans des situations telles qu'un panier d'achat côté serveur ou toute application dans laquelle vous souhaitez engager l'utilisateur avant de l'envoyer dans un flux d'inscription.
Différences de fonctionnalités
Certaines fonctionnalités d'Identity Toolkit ne sont pas disponibles dans Firebase Authentication, 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, ces fonctionnalités ne sont peut-être pas importantes pour votre application ou il peut exister des solutions de repli simples qui vous permettront de poursuivre la migration.
Différences côté serveur
Le service Identity Toolkit de base, avec ses API REST sous-jacentes, sa logique de validation de compte et sa base de données utilisateur principale, n'a subi que des mises à jour mineures. Toutefois, certaines fonctionnalités et la manière dont vous intégrez Firebase Authentication à votre service ont changé.
Fournisseurs d'identité
Paypal et AOL ne sont pas compatibles. Les utilisateurs disposant de comptes auprès de ces fournisseurs d'identité 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 serveur
Actuellement, des SDK d'administration Firebase sont disponibles pour Java, Node.js, Python, Go et C#.
E-mails de gestion de compte
Les messages de réinitialisation de mot de passe, de validation d'e-mail et de modification d'e-mail peuvent être effectués par Firebase ou à partir du propre serveur de messagerie du développeur. Actuellement, les modèles d'e-mails Firebase n'offrent qu'une personnalisation limitée.
Confirmation de la modification de l'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 contenant un lien permettant de poursuivre le flux 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 e-mail contenant un lien permettant d'annuler la modification.
Déploiement du fournisseur d'identité
Identity Toolkit permettait d'ajouter progressivement des fournisseurs d'identité à votre système de connexion, afin que vous puissiez tester l'impact sur vos demandes d'assistance. Cette fonctionnalité a été supprimée dans 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é fournie par l'API REST d'Identity Toolkit a été regroupée dans des SDK client disponibles pour Android, iOS et JavaScript. Vous pouvez utiliser le SDK pour connecter et inscrire des utilisateurs, accéder aux informations de leur profil, associer, modifier et supprimer des comptes, et réinitialiser des mots de passe à l'aide du SDK client au lieu de communiquer avec le service de backend via des appels REST.
FirebaseUI Auth
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 ont été recréés à l'aide des SDK Firebase Authentication. Ils sont disponibles en tant que SDK Open Source pour iOS et Android afin de vous permettre de personnaliser complètement les flux d'une manière qui n'est pas possible avec Identity Toolkit.
Autres différences :
Sessions et migration
Étant donné que les sessions sont gérées différemment dans Identity Toolkit et Firebase Authentication, les sessions existantes de vos utilisateurs seront interrompues lors de la mise à niveau du SDK, et vos utilisateurs devront se reconnecter.
Avant de commencer
Avant de pouvoir migrer d'Identity Toolkit vers Firebase Authentication, vous devez
ouvrir la console Firebase, cliquer sur Import Google Project (Importer un projet Google) et sélectionner votre projet Identity Toolkit ;
cliquer sur settings > Permissions pour ouvrir la page IAM & Admin (IAM et administration) ;
ouvrir la page Service accounts (Comptes de service). Vous pouvez y voir le compte de service que vous avez configuré précédemment pour Identity Toolkit.
À côté du compte de service, cliquez sur more_vert > Create key (Plus > Créer une clé). Ensuite, 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é. Vous en aurez besoin pour initialiser le SDK à l'étape suivante.
Revenez à la console Firebase. Dans la section "Auth" (Authentification), ouvrez la page Email Templates (Modèles d'e-mails). Sur cette page, personnalisez les modèles d'e-mails de votre application.
Dans Identity Toolkit, lorsque les utilisateurs réinitialisaient leur mot de passe, modifiaient leur adresse e-mail et la validaient, vous deviez obtenir un code OOB auprès du serveur Identity Toolkit, puis l'envoyer aux utilisateurs par e-mail. Firebase envoie des e-mails en fonction des modèles que vous configurez, sans aucune action supplémentaire requise.
Facultatif : Si vous devez accéder aux services Firebase sur votre serveur, installez le SDK Firebase.
Vous pouvez installer le module Firebase Node.js avec
npm:$ npm init $ npm install --save firebase-adminDans votre code, vous pouvez accéder à Firebase à l'aide de :
var admin = require('firebase-admin'); var app = admin.initializeApp({ credential: admin.credential.cert('path/to/serviceAccountCredentials.json') });
Ensuite, suivez les étapes de migration pour la plate-forme de votre application : Android, iOS, Web.
Serveurs et JavaScript
Changements notables
Il existe un certain nombre de différences supplémentaires dans l'implémentation Web de Firebase par rapport à Identity Toolkit.
Gestion des sessions Web
Auparavant, lorsqu'un utilisateur s'authentifiait à l'aide du widget Identity Toolkit, un cookie était défini pour l'utilisateur et était utilisé pour amorcer la session. Ce cookie avait une durée de vie de deux semaines et permettait à l'utilisateur d'utiliser le widget de gestion de compte pour modifier son mot de passe et son adresse e-mail. Certains sites utilisaient ce cookie pour authentifier toutes les autres requêtes de page sur le site. D'autres sites utilisaient le cookie pour créer leurs propres cookies via le système de gestion des cookies de leur framework.
Les SDK client Firebase gèrent désormais les jetons d'identification Firebase et fonctionnent avec le backend de Firebase Authentication pour maintenir la session à jour. Le backend expire les sessions lorsque des modifications importantes du compte (comme des modifications du mot de passe de l'utilisateur) ont eu lieu. Les jetons d'identification Firebase ne sont pas automatiquement définis en tant que 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'identification Firebase ne sont pas appropriés pour être utilisés comme cookie afin de valider toutes vos requêtes de page. Vous devrez plutôt configurer un écouteur lorsque l'utilisateur se connecte, obtenir le jeton d'identification Firebase, le valider, 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.comlors de la connexion pour savoir quel identifiant ils souhaitaient utiliser. Le flux de l'interface utilisateur de Firebase Auth commence désormais par une liste de méthodes de connexion, y compris une option d'e-mail qui redirige versaccountchooser.compour le Web et utilise l' API hintRequest sur Android. De plus, les adresses e-mail ne sont plus obligatoires dans l'interface utilisateur Firebase. Cela facilitera la prise en charge des utilisateurs anonymes, des utilisateurs d'authentification personnalisée ou des utilisateurs de fournisseurs pour lesquels les adresses e-mail ne sont pas obligatoires.Widget de gestion de compte
Ce widget fournit une interface utilisateur permettant aux utilisateurs de modifier leur adresse e-mail, de modifier 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 peuvent être créés très facilement à l'aide de l'API Firebase Authentication.
Pas de signOutUrl
Vous devrez appeler
firebase.auth.signOut()et gérer le rappel.Pas de oobActionUrl
L'envoi d'e-mails est désormais géré par Firebase et configuré dans la console Firebase.
Personnalisation CSS
FirebaseUI utilise le style Material Design Lite, qui ajoute dynamiquement des animations Material Design.
Étape 1 : Modifier le code du serveur
Si votre serveur s'appuie sur le jeton Identity Toolkit (valide pendant deux semaines) pour gérer les sessions utilisateur Web, vous devez convertir le serveur pour qu'il utilise son propre cookie de session.
- Implémentez un point de terminaison pour valider le jeton d'identification Firebase et définir le cookie de session pour l'utilisateur. L'application cliente envoie le jeton d'identification Firebase à ce point de terminaison.
- Si la requête entrante contient votre propre cookie de session, vous pouvez considérer l'utilisateur comme authentifié. Sinon, traitez la requête comme non authentifiée.
- Si vous ne souhaitez pas que vos utilisateurs perdent leurs sessions existantes , vous devez attendre deux semaines pour que tous les jetons Identity Toolkit expirent , ou effectuer également la validation du double jeton pour votre application Web , comme décrit ci-dessous à l'étape 3.
Ensuite, étant donné que les jetons Firebase sont différents des jetons Identity Toolkit vous devez mettre à jour votre logique de validation des jetons. Installez 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 validez correctement le jeton.
Lorsque vous effectuez les mises à jour ci-dessus pour la première fois, vous pouvez toujours avoir des chemins de code qui s'appuient sur 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 de serveur supplémentaire qui examine le jeton et détermine s'il doit utiliser le SDK Firebase ou le SDK Identity Toolkit pour valider le jeton. Si vous n'avez qu'une application Web , toutes les nouvelles requêtes d'authentification seront transférées vers Firebase. Vous n'aurez donc besoin d'utiliser que les méthodes de validation des jetons Firebase .
Consultez la documentation de référence sur l'API Web Firebase.
Étape 2 : Mettre à jour votre code HTML
Ajoutez le code d'initialisation Firebase à votre application :
- Ouvrez votre projet dans la console Firebase.
- Sur la page "Overview" (Présentation), cliquez sur Add App (Ajouter une application), puis sur Add Firebase to your web app (Ajouter Firebase à votre application Web). Un extrait de code qui initialise Firebase s'affiche.
- Copiez et collez l'extrait d'initialisation dans votre page Web.
Ajoutez FirebaseUI Auth à 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>Supprimez le SDK Identity Toolkit de votre application.
Si vous vous appuyez sur le jeton d'identification Identity Toolkit pour la gestion des sessions, vous devez apporter les modifications suivantes côté client :
Une fois la connexion à Firebase établie, obtenez un jeton d'identification Firebase en appelant
firebase.auth().currentUser.getToken().Envoyez le jeton d'identification Firebase au serveur backend, validez-le et émettez votre propre cookie de session.
Ne vous fiez pas uniquement au 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 CSRF, une façon d'empêcher une attaque consiste à obtenir un jeton d'identification Firebase pour l'utilisateur connecté avec
getToken()et à inclure le jeton dans chaque requête (le cookie de session sera également envoyé par défaut). Vous validerez ensuite ce jeton à l'aide du SDK Firebase Server en plus de la vérification du cookie de session, que votre framework backend a effectuée. Cela rendra les attaques CSRF plus difficiles à réussir, car le jeton d'identification Firebase n'est stocké qu'à l'aide du stockage Web et jamais dans un cookie.Les jetons Identity Toolkit sont valides pendant deux semaines. Vous pouvez continuer à émettre des jetons valides pendant 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 : Mettre à jour les URL de redirection du fournisseur d'identité
Dans la console Firebase, ouvrez la section "Authentication" (Authentification), puis cliquez sur l' onglet Sign-in Method (Méthode de connexion).
Pour chaque fournisseur de connexion fédérée que vous prenez en charge, procédez comme suit :
- Cliquez sur le nom du fournisseur de connexion.
- Copiez l'URI de redirection OAuth.
- Dans la console pour les développeurs du fournisseur de connexion, mettez à jour l'URI de redirection OAuth.
Android
Étape 1 : Ajouter Firebase à votre application
Ouvrez la console Firebase et sélectionnez votre projet Identity Toolkit, que vous avez déjà importé.
Sur la page "Overview" (Présentation), cliquez sur Add App (Ajouter une application), puis sur Add Firebase to your Android app (Ajouter Firebase à votre application Android). Dans la boîte de dialogue "Add Firebase" (Ajouter Firebase), indiquez le nom de package et l'empreinte du certificat de signature de votre application, puis cliquez sur Add App (Ajouter une application). Le
google-services.jsonfichier de configuration est ensuite téléchargé sur votre ordinateur.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.
Dans votre fichier
build.gradleau niveau du projet (<var>your-project</var>/build.gradle), spécifiez le nom de package de votre application dans la sectiondefaultConfig:defaultConfig { ….. applicationId "com.your-app" }Toujours dans le fichier
build.gradleau 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' } }Dans le fichier
build.gradleau niveau de l'application (<var>my-project</var>/<var>app-module</var>/build.gradle), ajoutez la ligne suivante en bas pour 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.jsonpour configurer votre application afin qu'elle utilise Firebase.Toujours dans le fichier
build.gradleau niveau de l'application, ajoutez la dépendance Firebase Authentication :compile 'com.google.firebase:firebase-auth:24.0.1' compile 'com.google.android.gms:play-services-auth:21.5.1'
Étape 2 : Supprimer le SDK Identity Toolkit
- Supprimez la configuration Identity Toolkit du
AndroidManifest.xmlfichier. Ces informations sont incluses dans le fichiergoogle-service.jsonet chargées par le plug-in google-services. - Supprimez le SDK Identity Toolkit de votre application.
Étape 3 : Ajouter FirebaseUI à votre application
Ajoutez FirebaseUI Auth à votre application.
Dans votre application, remplacez les appels au SDK Identity Toolkit par des appels à FirebaseUI.
iOS
Étape 1 : Ajouter Firebase à votre application
Ajoutez le SDK Firebase à votre application en exécutant les commandes suivantes :
$ cd your-project directory $ pod init $ pod 'Firebase'Ouvrez la console Firebase et sélectionnez votre projet Identity Toolkit, que vous avez déjà importé.
Sur la page "Overview" (Présentation), cliquez sur Add App (Ajouter une application), puis sur Add Firebase to your iOS app (Ajouter Firebase à votre application iOS). Dans la boîte de dialogue "Add Firebase" (Ajouter Firebase), indiquez l'ID de bundle et l'ID App Store de votre application, puis cliquez sur Add App (Ajouter une application). Le
GoogleService-Info.plistfichier de configuration est ensuite téléchargé sur votre ordinateur. Si votre projet comporte plusieurs ID de bundle, chacun d'eux doit être connecté dans la console Firebase afin de disposer de son propreGoogleService-Info.plistfichier.Copiez le fichier de configuration à la racine de votre projet Xcode et ajoutez-le à toutes les cibles.
Étape 2 : Supprimer le SDK Identity Toolkit
- Supprimez
GoogleIdentityToolkitdu Podfile de votre application. - Exécutez la commande
pod install.
Étape 3 : Ajouter FirebaseUI à votre application
Ajoutez FirebaseUI Auth à votre application.
Dans votre application, remplacez les appels au SDK Identity Toolkit par des appels à FirebaseUI.