Découvrez comment utiliser et gérer les clés API pour Firebase.

Une clé API est une chaîne unique qui permet d'acheminer les requêtes vers votre projet Firebase lorsque vous interagissez avec les services Firebase et Google. Cette page décrit des informations de base sur les clés API, ainsi que les bonnes pratiques à suivre pour les utiliser et les gérer avec les applications Firebase.

Informations générales sur les clés API et Firebase

Les clés API pour Firebase sont différentes des clés API standards

Contrairement à l'utilisation habituelle des clés API, les clés API des services Firebase ne sont pas utilisées pour contrôler l'accès aux ressources backend. Cela ne peut être fait qu'avec Firebase Security Rules (pour contrôler les utilisateurs finaux pouvant accéder aux ressources) et Firebase App Check (pour contrôler les applications pouvant accéder aux ressources).

En règle générale, vous devez protéger minutieusement les clés API (par exemple, en utilisant un service de coffre-fort ou en définissant les clés en tant que variables d'environnement). Toutefois, vous pouvez inclure les clés API des services Firebase dans le code ou les fichiers de configuration enregistrés.

Bien que vous puissiez inclure des clés API pour les services Firebase dans le code, vous devez les examiner et leur appliquer les restrictions et limites appropriées.

Créer des clés API

Un projet Firebase peut comporter plusieurs clés API, mais chaque clé API ne peut être associée qu'à un seul projet Firebase.

Clés API créées automatiquement par Firebase pour vos applications Firebase

Firebase crée automatiquement des clés API pour votre projet lorsque vous effectuez l'une des opérations suivantes:

  • Créer un projet Firebase > Browser key créé automatiquement
  • Créer une application Apple Firebase > iOS key créée automatiquement
  • Créer une application Android Firebase > Android key créée automatiquement

Vous pouvez également créer vos propres clés API dans la console Google Cloud, par exemple pour le développement ou le débogage. Vous en saurez plus sur les cas où cette option est recommandée plus loin sur cette page.

Trouver vos clés API

Vous pouvez afficher et gérer toutes les clés API de votre projet dans le panneau API et services > Identifiants de la console Google Cloud.

Vous pouvez également savoir quelle clé API est automatiquement associée à une application Firebase dans les emplacements suivants. Par défaut, toutes les applications Firebase de votre projet pour la même plate-forme (Apple, Android ou Web) utilisent la même clé API.

  • Applications Apple Firebase : recherchez la clé API mise en correspondance automatiquement dans le fichier de configuration Firebase, GoogleService-Info.plist, dans le champ API_KEY.

  • Applications Android Firebase : recherchez la clé API mise en correspondance automatiquement dans le fichier de configuration Firebase, google-services.json, dans le champ current_key.

  • Applications Web Firebase : recherchez la clé API mise en correspondance automatiquement dans l'objet de configuration Firebase, dans le champ apiKey.

Utiliser une clé API

Les clés API permettent d'identifier votre projet Firebase lorsque vous interagissez avec les services Firebase/Google. Plus précisément, elles permettent d'associer des requêtes API à votre projet pour les quotas et la facturation. Elles sont également utiles pour accéder aux données publiques.

Par exemple, vous pouvez utiliser explicitement une clé API en transmettant sa valeur dans un appel d'API REST en tant que paramètre de requête. L'exemple suivant montre comment envoyer une requête à l'API Dynamic Links Link Shortener:

POST https://firebasedynamiclinks.googleapis.com/v1/shortLinks?key=API_KEY

Lorsque votre application appelle une API Firebase qui nécessite une clé API fournie par le client mobile/Web, elle recherche automatiquement la clé API de votre projet dans le fichier/objet de configuration Firebase. Vous pouvez toutefois fournir des clés API pour votre application à l'aide d'un mécanisme différent, y compris des variables d'environnement.

Examiner et appliquer les restrictions appropriées aux clés API (recommandé)

Bien qu'il ne soit pas nécessaire de traiter une clé API pour les services Firebase comme un secret, vous devez examiner et appliquer les restrictions et les limites décrites dans cette section.

Vérifier les API automatiquement ajoutées à la liste d'autorisation pour vos clés API Firebase

Lorsque Firebase crée une clé API dans votre projet, nous ajoutons automatiquement des restrictions API à cette clé. Les API ajoutées à cette liste d'autorisation sont des API liées à Firebase qui exigent que le client fournisse une clé API avec l'appel. Notez que la plupart des API requises pour utiliser les services Firebase n'ont pas besoin d'être sur la liste d'autorisation de vos clés API.

Étant donné que Firebase ajoute les API nécessaires à tous les services Firebase, la liste d'autorisation d'une clé API peut inclure des API pour des produits que vous n'utilisez pas. Vous pouvez supprimer des API de la liste d'autorisation, mais vous devez faire très attention à ne pas supprimer les API requises pour Firebase et les services Firebase que vous utilisez (voir la liste des API liées à Firebase à ajouter à la liste d'autorisation pour chaque service / produit). Sinon, vous rencontrerez des erreurs lorsque vous appellerez les services Firebase.

Renforcer le quota si vous utilisez des Authentication basés sur un mot de passe

Si vous utilisez des Firebase Authentication basées sur un mot de passe et qu'un tiers parvient à mettre la main sur votre clé API, il ne pourra pas accéder à la base de données ou aux données Cloud Storage de votre projet Firebase tant que ces données sont protégées par Firebase Security Rules. Ils peuvent toutefois utiliser votre clé API pour accéder aux points de terminaison d'authentification de Firebase et envoyer des requêtes d'authentification à votre projet.

Pour réduire la possibilité que quelqu'un utilise de manière abusive une clé API pour tenter une attaque par force brute, vous pouvez resserrer le quota par défaut des points de terminaison identitytoolkit.googleapis.com afin qu'il reflète les attentes de trafic normal de votre application. Sachez que si vous resserrez ce quota et que votre application gagne soudainement des utilisateurs, vous risquez de rencontrer des erreurs de connexion jusqu'à ce que vous augmentiez le quota. Vous pouvez modifier les quotas d'API de votre projet dans la console Google Cloud.

Utiliser des clés API distinctes et limitées pour tout service autre que Firebase

Bien que les clés API utilisées pour les services Firebase ne doivent généralement pas être traitées comme des éléments secrets, vous devez prendre des précautions supplémentaires avec les clés API que vous utilisez avec d'autres API Google Cloud.

Si vous utilisez une API Google Cloud (sur n'importe quelle plate-forme) qui ne concerne pas un service / produit Firebase, nous vous recommandons vivement de créer des clés API distinctes et limitées à utiliser avec ces API. Cela est particulièrement important si l'API est destinée à un service Google Cloud facturable.

Par exemple, si vous utilisez Firebase ML et les API Cloud Vision sur iOS, vous devez créer des clés API distinctes que vous n'utiliserez que pour accéder aux API Cloud Vision.

En utilisant des clés API distinctes et limitées pour les API autres que Firebase, vous pouvez faire pivoter ou remplacer les clés si nécessaire et ajouter des restrictions supplémentaires aux clés API sans perturber votre utilisation des services Firebase.

Ces instructions décrivent comment créer une clé API distincte et limitée pour une API factice appelée Super Service API.

Étape 1: Configurez vos clés API existantes pour refuser l'accès à Super Service API

  1. Ouvrez la page Identifiants de la console Google Cloud. Lorsque vous y êtes invité, sélectionnez votre projet.

  2. Pour chaque clé API existante dans la liste, ouvrez la vue de modification.

  3. Dans la section Restrictions relatives aux API, sélectionnez Restreindre la clé, puis ajoutez à la liste toutes les API auxquelles vous souhaitez que la clé API ait accès. Veillez à ne pas inclure l'API pour laquelle vous créez une clé API distincte (Super Service API dans cet exemple).

    Lorsque vous configurez les restrictions d'API d'une clé API, vous déclarez explicitement les API auxquelles la clé a accès. Par défaut, lorsque l'option Ne pas restreindre la clé est sélectionnée dans la section Restrictions relatives aux API, une clé API peut être utilisée pour accéder à n'importe quelle API activée pour le projet.

Désormais, vos clés API existantes n'autoriseront plus l'accès à Super Service API, mais chacune d'elles continuera de fonctionner pour toutes les API que vous avez ajoutées à sa liste de restrictions d'API.

Étape 2: Créez et utilisez une clé API pour accéder à Super Service API

  1. Revenez à la page Identifiants. Assurez-vous que votre projet Firebase est toujours sélectionné.

  2. Cliquez sur Créer des identifiants > Clé API. Notez la nouvelle clé API, puis cliquez sur Restreindre la clé.

  3. Dans la section Restrictions relatives aux API, sélectionnez Restreindre la clé, puis ajoutez à la liste uniquement le Super Service API.

    Cette nouvelle clé API n'accorde l'accès qu'à Super Service API.

  4. Configurez votre application et vos services pour qu'ils utilisent la nouvelle clé API.

Utiliser des clés API spécifiques à l'environnement (recommandé)

Si vous configurez différents projets Firebase pour différents environnements, tels que la préproduction et la production, il est important que chaque instance d'application interagisse avec son projet Firebase correspondant. Par exemple, votre instance d'application de préproduction ne doit jamais communiquer avec votre projet Firebase de production. Cela signifie également que votre application de préproduction doit utiliser les clés API associées à votre projet Firebase de préproduction.

Pour réduire les problèmes de promotion des modifications de code du développement à l'environnement de préproduction, puis à la production, au lieu d'inclure des clés API dans le code lui-même, définissez-les en tant que variables d'environnement ou incluez-les dans un fichier de configuration.

Notez que si vous utilisez Firebase Local Emulator Suite pour le développement avec Firebase ML, vous devez créer et utiliser une clé API réservée au débogage. Pour savoir comment créer ce type de clé, consultez la documentation Firebase ML.

Questions fréquentes et dépannage

Questions fréquentes

Oui, par défaut, les restrictions d'API sont automatiquement appliquées à toutes les clés API que Firebase provisionne automatiquement pour les utiliser avec les API liées à Firebase. Consultez la liste des API liées à Firebase figurant sur cette liste d'autorisation.

Les API ajoutées à cette liste d'autorisation sont celles appelées par les services Firebase à partir du code client et qui nécessitent des clés API pour identifier votre projet ou application Firebase. Notez que la plupart des API requises pour utiliser les services Firebase n'ont pas besoin d'être ajoutées à la liste d'autorisation pour vos clés API.

Étant donné que Firebase ajoute les API nécessaires à tous les services Firebase, la liste d'autorisation d'une clé API peut inclure des API pour des produits que vous n'utilisez pas. Vous pouvez supprimer des API de la liste d'autorisation, mais vous devez faire très attention à ne pas supprimer les API requises pour Firebase et les services Firebase que vous utilisez (voir la liste des API liées à Firebase à ajouter à la liste d'autorisation pour chaque service / produit). Sinon, vous rencontrerez des erreurs lorsque vous appellerez les services Firebase.

Vous pouvez afficher toutes vos clés API et leurs "restrictions API" dans le panneau API et services > Identifiants de la console Google Cloud.

Notez les points suivants concernant la façon dont Firebase applique ces "restrictions d'API":

  • À partir de mai 2024, toutes les nouvelles clés API provisionnées automatiquement par Firebase sont automatiquement limitées à la liste des API liées à Firebase.

  • En mai 2024, toutes les clés API existantes et non limitées que Firebase avait précédemment provisionnées automatiquement seront limitées à la liste des API liées à Firebase et à toutes les API actuellement activées du projet.

  • Les clés API existantes et déjà limitées que Firebase avait précédemment provisionnées automatiquement n'ont pas été modifiées.

  • Aucune clé API existante qui n'a pas été provisionnée automatiquement par Firebase n'a été modifiée.

Vous pouvez utiliser l'une des options suivantes pour déterminer la clé API associée à votre application Firebase:

  1. Accédez à Paramètres du projet, puis faites défiler la fiche Vos applications vers le bas.

  2. Sélectionnez l'application qui vous intéresse.

  3. Obtenez le fichier/objet de configuration Firebase de l'application concernée, puis recherchez sa clé API:

    • Apple: téléchargez le GoogleService-Info.plist, puis recherchez le champ API_KEY.

    • Android: téléchargez le fichier google-services.json, recherchez la configuration de l'application de votre choix (recherchez son nom de package), puis recherchez le champ current_key.

    • Web: sélectionnez l'option Config (Configuration), puis recherchez le champ apiKey.

  1. Obtenez le fichier/objet de configuration Firebase pour l'application de votre choix en exécutant la commande suivante:

    firebase apps:sdkconfig PLATFORM FIREBASE_APP_ID
    • PLATFORM (l'un des éléments suivants): IOS | ANDROID | WEB
    • FIREBASE_APP_ID: identifiant unique attribué par Firebase à votre application Firebase (trouver votre ID d'application)
  2. Dans la configuration Firebase imprimée de l'application, recherchez sa clé API:

    • Apple: recherchez le champ API_KEY

    • Android: recherchez la configuration de l'application de votre choix (recherchez son nom de package), puis le champ current_key.

    • Web: recherchez le champ apiKey.

  1. Obtenez le apiKeyId (UID) de la clé API en appelant le point de terminaison applicable pour l'application concernée, puis en transmettant la valeur apiKeyId à l'étape suivante.

  2. Obtenez la chaîne de clé API en appelant projects.locations.keys.getKeyString.

    Ce keyString correspond à la même valeur que celle qui se trouve dans l'artefact de configuration de l'application (Apple | Android | Web).

  • Applications Apple Firebase : chaque application dispose de son propre fichier de configuration et ne peut comporter qu'une seule clé API.

  • Applications Android créées avec Firebase : toutes les applications Android du projet Firebase sont listées dans le même fichier de configuration, et chaque application ne peut avoir qu'une seule clé API listée. Toutefois, une clé différente peut être indiquée pour chaque application de ce fichier de configuration.

  • Applications Web Firebase : chaque application dispose de son propre objet de configuration et ne peut comporter qu'une seule clé API.

Vous pouvez toutefois utiliser plusieurs clés API avec une même application. Vous devez fournir un mécanisme permettant à votre application d'accéder à ces autres clés API, par exemple via une variable d'environnement. Le mécanisme d'accès aux autres clés API ne peut pas dépendre de leur présence dans votre fichier/objet de configuration Firebase.

Lorsque vous obtenez pour la première fois le fichier/objet de configuration Firebase de votre application, Firebase vérifie si des clés API existantes de votre projet comportent des restrictions d'application correspondant à l'application (par exemple, un ID de bundle correspondant à l'application Apple).

Si Firebase ne trouve aucune clé restreinte correspondante, il répertorie dans le fichier/objet de configuration iOS key pour les applications Apple, Android key pour les applications Android et Browser key pour les applications Web (en supposant que ces clés existent et qu'elles ne comportent aucune "Restriction d'application" les empêchant de correspondre à cette application).

Oui, vous pouvez supprimer manuellement votre clé API de votre fichier/objet de configuration. Toutefois, vous devez fournir un autre mécanisme pour que votre application puisse accéder à une clé API (par exemple, via une variable d'environnement). Sinon, tous les appels aux services Firebase échoueront.

Oui, vous pouvez modifier manuellement un fichier/objet de configuration pour associer une autre clé API à une application.

Notez que si vous récupèrez à nouveau le fichier/objet de configuration de votre application à partir de la console, il répertorie toujours les clés API que Firebase associe automatiquement à cette application. Vous devrez donc répéter vos modifications manuelles, si nécessaire.

Non, une clé API n'identifie qu'un projet spécifique et ne peut pas être transférée vers un autre projet.

Si vous supprimez une clé API utilisée par une application, les appels d'API de cette application échoueront. Vous pouvez recevoir des rapports, des e-mails ou des erreurs indiquant que vous essayez d'utiliser une clé API non valide.

La suppression d'une clé API est définitive et ne peut pas être annulée.

Pour une clé API Firebase, les seules API qui doivent figurer sur la liste d'autorisation "Restrictions d'API" de la clé sont celles qui exigent que le client fournisse une clé API avec l'appel. Notez que très peu d'API liées à Firebase présentent cette exigence. La plupart des API liées à Firebase activées dans votre projet n'ont pas besoin d'être ajoutées à la liste d'autorisation "Restrictions API" de la clé.

Utilisez le tableau suivant pour déterminer les API liées à Firebase qui doivent être incluses dans la liste d'autorisation "Restrictions relatives aux API" d'une clé API Firebase. N'oubliez pas que les clés API Firebase ne doivent être utilisées que pour les services Firebase. Découvrez comment créer des clés API distinctes et restreintes pour des types d'API spécifiques.

Vous pouvez afficher et gérer les clés API de votre projet dans le panneau API et services > Identifiants de la console Google Cloud.

Nom de l'API (nom du service) Nom à afficher de l'API Service / produit
Firebase associé
firebase.googleapis.com API Firebase Management tous les produits
logging.googleapis.com API Cloud Logging tous les produits
firebaseinstallations.googleapis.com API Firebase Installations Cloud Messaging, Crashlytics, In-App Messaging, Performance Monitoring, Remote Config, Firebase ML
firebaseappcheck.googleapis.com API Firebase App Check App Check
firebaseappdistribution.googleapis.com API Firebase App Distribution App Distribution
firebaseapptesters.googleapis.com API Firebase App Testers App Distribution
identitytoolkit.googleapis.com API Identity Toolkit Authentication
securetoken.googleapis.com API Token Service Authentication
firebaserules.googleapis.com * API Firebase Rules Cloud Firestore, Cloud Storage, Realtime Database
datastore.googleapis.com API Cloud Datastore Cloud Firestore
firestore.googleapis.com API Google Cloud Firestore Cloud Firestore
fcmregistrations.googleapis.com API FCM Registration Cloud Messaging
firebasestorage.googleapis.com API Cloud Storage for Firebase Cloud Storage
firebasedynamiclinks.googleapis.com API Firebase Dynamic Links Dynamic Links
firebasehosting.googleapis.com * API Firebase Hosting Hosting
firebaseinappmessaging.googleapis.com API Firebase In-App Messaging In-App Messaging
firebaseml.googleapis.com API Firebase ML Firebase ML
mlkit.googleapis.com ** API ML Kit Firebase ML
mobilecrashreporting.googleapis.com Mobile Crash Reporting API Performance Monitoring
play.googleapis.com API de développeur Android Google Play Performance Monitoring
firebaseremoteconfig.googleapis.com API Firebase Remote Config Performance Monitoring, Remote Config
firebaseremoteconfigrealtime.googleapis.com API Firebase Remote Config en temps réel Performance Monitoring, Remote Config
cloudconfig.googleapis.com ** N/A Remote Config
firebasedatabase.googleapis.com * API Firebase Realtime Database Realtime Database
firebasevertexai.googleapis.com API Vertex AI in Firebase Vertex AI in Firebase

* Obligatoire uniquement si vous utilisez la clé API Firebase avec des outils tiers ou un accès REST direct au service / produit Firebase.

** Obligatoire pour les versions antérieures du SDK du produit. Si vous utilisez la dernière version du SDK, l'API n'a pas besoin d'être sur la liste d'autorisation de la clé.

Dépannage

Suivez les instructions de cette FAQ si une erreur API_KEY_SERVICE_BLOCKED ou une erreur semblable à celle-ci s'affiche:

Forbidden: 403 POST https://example-service.googleapis.com/method: Requests to this API example-service.googleapis.com method google.example-service.rest.method are blocked.

La clé API utilisée par votre application pour appeler l'API est probablement associée à des restrictions concernant les API, et la liste d'autorisation de la clé n'inclut pas cette API.

La clé API utilisée par votre application Web est probablement associée à des restrictions API. Dans ce cas, assurez-vous que l'API Firebase Management figure dans la liste des API autorisées.

Voici quelques-unes des raisons les plus courantes pour lesquelles des clés API sont invalides:

  • La clé API est associée à des restrictions de clé API qui la rendent incompatible avec l'application qui tente de l'utiliser ("Restrictions liées aux applications") ou inutilisable pour l'API appelée ("Restrictions API").

  • La clé API a été supprimée du projet dans la console Google Cloud.

  • La clé API n'a pas été créée pour l'ID de projet indiqué dans le fichier/objet de configuration Firebase de l'application.

Pour résoudre ce problème, vous pouvez obtenir la version mise à jour du fichier/objet de configuration Firebase de votre application, puis remplacer votre ancien fichier/objet de configuration par le nouveau fichier/objet mis à jour. Avant d'envoyer un fichier de configuration à télécharger ou d'afficher un objet de configuration dans la console, Firebase vérifie que la ou les clés API listées correspondent à l'application ou aux applications.