Empêchez l'utilisation abusive de l'API Gemini avec Firebase App Check

Lorsque vous appelez une API directement depuis une application mobile ou Web, elle est vulnérable aux utilisations abusives par des clients non autorisés. Si vous souhaitez appeler Gemini API directement depuis votre application mobile ou application Web, vous devez le protéger contre les utilisations abusives en utilisant Firebase AI Logic et en appliquant Firebase App Check. Lorsque vous appliquez App Check, seules les requêtes entrantes dont l'authenticité a été vérifiée (provenant de votre application et/ou d'un appareil non altéré) seront autorisées.

 Accéder aux instructions de configuration

Firebase AI Logic fournit une passerelle proxy qui vous permet de l'intégrer à Firebase App Check et de protéger Gemini API lorsqu'il est appelé directement par vos applications mobiles et Web. Lorsque App Check est appliqué à Firebase AI Logic, cela permet de protéger à la fois Gemini Developer API et Agent Platform Gemini API (formerly Vertex AI).

App Check pour Firebase AI Logic est également compatible avec la protection contre les attaques de répétition, ce qui signifie qu'un jeton App Check ne peut être utilisé qu'une seule fois.


Résumé général du fonctionnement de App Check

Avec App Check, les appareils exécutant votre application utilisent un fournisseur d'attestation d'application ou d'appareil qui vérifie l'un des éléments suivants, ou les deux :

  • Les requêtes proviennent de votre application authentique
  • Les requêtes proviennent d'un appareil authentique qui n'a pas été altéré.

Cette attestation est jointe à chaque requête effectuée par votre application à l'aide d'un SDK Firebase AI Logic. Lorsque App Check est appliqué, les requêtes des clients sans attestation valide sont refusées, tout comme celles provenant d'une application ou d'une plate-forme que vous n'avez pas autorisée.

Lorsque vous configurez App Check, pensez à ajouter une protection contre les attaques de répétition, qui rend les jetons App Check à usage unique. Cette option offre une protection renforcée par rapport à la protection de base. Elle vous permet de définir un niveau de protection adapté à votre application et à vos cas d'utilisation.

Vous trouverez des informations détaillées sur App Check dans sa documentation, y compris des descriptions des fournisseurs d'attestation ainsi que les quotas et limites applicables.

Configurer App Check

Les instructions suivantes sont optimisées pour configurer l'application Firebase App Check pour Firebase AI Logic.

Étape 1 : Appliquer App Check

À partir de début juillet 2026, lors du workflow de configuration guidée dans la console Firebase, Firebase appliquera automatiquement Firebase App Check pour Firebase AI Logic afin de protéger Gemini API.

Toutefois, si vous avez déjà configuré Firebase AI Logic dans votre projet Firebase avant début juillet 2026 (ou si App Check n'est pas appliqué pour une autre raison), vous pouvez appliquer App Check vous-même en suivant les instructions ci-dessous.

  1. Vérifiez si App Check est déjà appliqué pour Firebase AI Logic.

    1. Dans la console Firebase, accédez à l'onglet APIs (API) de Sécurité > App Check.

    2. Recherchez la ligne correspondant à Firebase AI Logic. Si le message Unenforced s'affiche, suivez le reste de ces instructions.

  2. Cliquez sur la ligne Firebase AI Logic pour afficher les graphiques de métriques. Sous ces graphiques, cliquez sur Configurer.

  3. Sur le premier écran de la boîte de dialogue (Protection de base), sélectionnez Appliquée, puis cliquez sur Continuer.

  4. Sur l'écran suivant (Protection contre la relecture), sélectionnez Désactivée, puis cliquez sur Continuer.

  5. Sur le dernier écran, examinez les points à prendre en compte pour appliquer App Check afin de vous assurer que vous êtes prêt à le faire App Check. Si vous êtes prêt, cliquez sur Continuer.

    Vous n'avez pas besoin d'enregistrer vos applications si vous souhaitez uniquement appliquer App Check et uniquement utiliser le fournisseur de débogage avec Firebase AI Logic dans une application de préproduction. Toutefois, lorsque vous êtes prêt à publier votre application pour les utilisateurs finaux, vous devez enregistrer vos applications dans le cadre de la configuration d'un fournisseur d'attestation de production (comme App Attest, Play Integrity ou reCAPTCHA Enterprise).

Étape 2 : Configurez le fournisseur de débogage pour le développement local

Pour le développement local, vous pouvez configurer le fournisseur de débogage App Check et continuer à appliquer App Check pour Firebase AI Logic.

Swift

Voici comment utiliser le fournisseur de débogage lors de l'exécution interactive de votre application dans un simulateur (par exemple, lors du développement local) :

  1. Dans votre projet Xcode, importez FirebaseAppCheck et initialisez App Check avec la fabrique de fournisseurs de débogage avant de configurer Firebase.

    import SwiftUI
    import FirebaseCore
    import FirebaseAppCheck
    
    @main
    struct YourApp: App {
      init() {
        let providerFactory = AppCheckDebugProviderFactory()
        AppCheck.setAppCheckProviderFactory(providerFactory)
        FirebaseApp.configure()
      }
    
      var body: some Scene {
        WindowGroup {
          NavigationView {
            ContentView()
          }
        }
      }
    }
    
  2. Obtenez votre jeton de débogage :

    1. Lancez votre application dans le simulateur ou sur votre appareil de test.

    2. Ouvrez la console Xcode et recherchez le jeton de débogage App Check. Exemple :

      <Warning> [AppCheckCore][I-GAC004001] App Check debug token: '123a4567-b89c-12d3-e456-789012345678'.
      
    3. Copiez le jeton (par exemple, 123a4567-b89c-12d3-e456-789012345678).

  3. Enregistrez votre jeton de débogage auprès de App Check :

    1. Dans la consoleFirebase, accédez à l'onglet Applications : Sécurité > App Check.

    2. Recherchez votre application, cliquez sur le menu à développer (), puis sélectionnez Gérer les jetons de débogage.

    3. Suivez les instructions à l'écran pour enregistrer votre jeton de débogage.

Pour en savoir plus sur le fournisseur de débogage (y compris sur la façon d'obtenir un nouveau jeton de débogage), consultez la documentation officielle App Check.

Kotlin

Voici comment utiliser le fournisseur de débogage lorsque vous exécutez votre application de manière interactive dans un émulateur (par exemple, lors du développement local) :

  1. Dans votre version de débogage, configurez App Check pour utiliser la fabrique de fournisseurs de débogage :

    Firebase.initialize(context = this)
    Firebase.appCheck.installAppCheckProviderFactory(
        DebugAppCheckProviderFactory.getInstance(),
    )
  2. Obtenez votre jeton de débogage :

    1. Exécutez votre application dans l'émulateur ou sur votre appareil de test.

    2. Recherchez le jeton de débogage App Check dans vos journaux. Exemple :

      D DebugAppCheckProvider: Enter this debug secret into the allow list
      in the Firebase Console for your project: 123a4567-b89c-12d3-e456-789012345678
      
    3. Copiez le jeton (par exemple, 123a4567-b89c-12d3-e456-789012345678).

  3. Enregistrez votre jeton de débogage auprès de App Check :

    1. Dans la consoleFirebase, accédez à l'onglet Applications : Sécurité > App Check.

    2. Recherchez votre application, cliquez sur le menu à développer (), puis sélectionnez Gérer les jetons de débogage.

    3. Suivez les instructions à l'écran pour enregistrer votre jeton de débogage.

Pour en savoir plus sur le fournisseur de débogage (y compris sur la façon d'obtenir un nouveau jeton de débogage), consultez la documentation officielle App Check.

Java

Voici comment utiliser le fournisseur de débogage lorsque vous exécutez votre application de manière interactive dans un émulateur (par exemple, lors du développement local) :

  1. Dans votre version de débogage, configurez App Check pour utiliser la fabrique de fournisseurs de débogage :

    FirebaseApp.initializeApp(/*context=*/ this);
    FirebaseAppCheck firebaseAppCheck = FirebaseAppCheck.getInstance();
    firebaseAppCheck.installAppCheckProviderFactory(
            DebugAppCheckProviderFactory.getInstance());
  2. Obtenez votre jeton de débogage :

    1. Exécutez votre application dans l'émulateur ou sur votre appareil de test.

    2. Recherchez le jeton de débogage App Check dans vos journaux. Exemple :

      D DebugAppCheckProvider: Enter this debug secret into the allow list
      in the Firebase Console for your project: 123a4567-b89c-12d3-e456-789012345678
      
    3. Copiez le jeton (par exemple, 123a4567-b89c-12d3-e456-789012345678).

  3. Enregistrez votre jeton de débogage auprès de App Check :

    1. Dans la consoleFirebase, accédez à l'onglet Applications : Sécurité > App Check.

    2. Recherchez votre application, cliquez sur le menu à développer (), puis sélectionnez Gérer les jetons de débogage.

    3. Suivez les instructions à l'écran pour enregistrer votre jeton de débogage.

Pour en savoir plus sur le fournisseur de débogage (y compris sur la façon d'obtenir un nouveau jeton de débogage), consultez la documentation officielle App Check.

Web

Voici comment utiliser le fournisseur de débogage lors de l'exécution interactive de votre application à partir de localhost (par exemple, lors du développement local) :

  1. Dans votre version de débogage, activez le mode débogage en définissant self.FIREBASE_APPCHECK_DEBUG_TOKEN sur true avant d'initialiser App Check. Exemple :

    self.FIREBASE_APPCHECK_DEBUG_TOKEN = true;
    initializeAppCheck(app, { /* App Check options */ });
    
  2. Accédez à votre application Web en local et ouvrez les outils pour les développeurs du navigateur. Dans la console de débogage, un jeton de débogage s'affiche :

    AppCheck debug token: "123a4567-b89c-12d3-e456-789012345678".
    You will need to safelist it in the Firebase console for it to work.
    
  3. Enregistrez votre jeton de débogage auprès de App Check :

    1. Dans la consoleFirebase, accédez à l'onglet Applications : Sécurité > App Check.

    2. Recherchez votre application, cliquez sur le menu à développer (), puis sélectionnez Gérer les jetons de débogage.

    3. Suivez les instructions à l'écran pour enregistrer votre jeton de débogage.

Pour en savoir plus sur le fournisseur de débogage (y compris sur la façon d'obtenir un nouveau jeton de débogage), consultez la documentation officielle App Check.

Dart

iOS+

Voici comment utiliser le fournisseur de débogage lors de l'exécution interactive de votre application dans un simulateur (par exemple, lors du développement local) :

  1. Activez App Check avec le fournisseur de débogage juste après avoir initialisé votre application Firebase :

    import 'package:flutter/material.dart';
    import 'package:firebase_core/firebase_core.dart';
    
    // Import the firebase_app_check plugin
    import 'package:firebase_app_check/firebase_app_check.dart';
    
    Future<void> main() async {
      WidgetsFlutterBinding.ensureInitialized();
      await Firebase.initializeApp();
      await FirebaseAppCheck.instance.activate(
        // Set appleProvider to `AppleProvider.debug`
        appleProvider: AppleProvider.debug,
      );
      runApp(App());
    }
    
  2. Activez la journalisation des données de débogage dans votre projet Xcode :

    1. Ouvrez Product > Scheme > Edit scheme (Produit > Schéma > Modifier le schéma).
    2. Sélectionnez Run (Exécuter) dans le menu de gauche, puis l'onglet Arguments.
    3. Dans la section Arguments Passed on Launch (Arguments transmis au lancement), ajoutez -FIRDebugEnabled.
  3. Obtenez votre jeton de débogage :

    1. Ouvrez ios/Runner.xcworkspace avec Xcode et exécutez votre application dans le simulateur ou sur votre appareil de test.

    2. Ouvrez la console Xcode et recherchez le jeton de débogage App Check. Exemple :

      <Warning> [AppCheckCore][I-GAC004001] App Check debug token: '123a4567-b89c-12d3-e456-789012345678'.
      
    3. Copiez le jeton (par exemple, 123a4567-b89c-12d3-e456-789012345678).

  4. Enregistrez votre jeton de débogage auprès de App Check :

    1. Dans la consoleFirebase, accédez à l'onglet Applications : Sécurité > App Check.

    2. Recherchez votre application, cliquez sur le menu à développer (), puis sélectionnez Gérer les jetons de débogage.

    3. Suivez les instructions à l'écran pour enregistrer votre jeton de débogage.

Android

Voici comment utiliser le fournisseur de débogage lorsque vous exécutez votre application de manière interactive dans un émulateur (par exemple, lors du développement local) :

  1. Activez App Check avec le fournisseur de débogage juste après avoir initialisé votre application Firebase :

    import 'package:flutter/material.dart';
    import 'package:firebase_core/firebase_core.dart';
    
    // Import the firebase_app_check plugin
    import 'package:firebase_app_check/firebase_app_check.dart';
    
    Future<void> main() async {
      WidgetsFlutterBinding.ensureInitialized();
      await Firebase.initializeApp();
      await FirebaseAppCheck.instance.activate(
        // Set androidProvider to `AndroidProvider.debug`
        androidProvider: AndroidProvider.debug,
      );
      runApp(App());
    }
    
  2. Obtenez votre jeton de débogage :

    1. Exécutez votre application dans l'émulateur ou sur votre appareil de test.

    2. Recherchez le jeton de débogage App Check dans vos journaux. Exemple :

      D DebugAppCheckProvider: Enter this debug secret into the allow list
      in the Firebase Console for your project: 123a4567-b89c-12d3-e456-789012345678
      
    3. Copiez le jeton (par exemple, 123a4567-b89c-12d3-e456-789012345678).

  3. Enregistrez votre jeton de débogage auprès de App Check :

    1. Dans la consoleFirebase, accédez à l'onglet Applications : Sécurité > App Check.

    2. Recherchez votre application, cliquez sur le menu à développer (), puis sélectionnez Gérer les jetons de débogage.

    3. Suivez les instructions à l'écran pour enregistrer votre jeton de débogage.

Web

Voici comment utiliser le fournisseur de débogage lors de l'exécution de votre application à partir de localhost de manière interactive (par exemple, lors du développement local) :

  1. Dans le fichier web/index.html, activez le mode de débogage en définissant self.FIREBASE_APPCHECK_DEBUG_TOKEN sur true :

    <body>
      <script>
        self.FIREBASE_APPCHECK_DEBUG_TOKEN = true;
      </script>
    
      ...
    
    </body>
    
  2. Exécutez votre application Web localement et ouvrez les outils pour les développeurs du navigateur. Dans la console de débogage, un jeton de débogage s'affiche :

    AppCheck debug token: "123a4567-b89c-12d3-e456-789012345678".
    You will need to safelist it in the Firebase console for it to work.
    

    Ce jeton est stocké localement dans votre navigateur et sera utilisé chaque fois que vous utiliserez votre application dans le même navigateur sur la même machine. Si vous souhaitez utiliser le jeton dans un autre navigateur ou sur une autre machine, définissez self.FIREBASE_APPCHECK_DEBUG_TOKEN sur la chaîne de jeton au lieu de true.

  3. Enregistrez votre jeton de débogage auprès de App Check :

    1. Dans la consoleFirebase, accédez à l'onglet Applications : Sécurité > App Check.

    2. Recherchez votre application, cliquez sur le menu à développer (), puis sélectionnez Gérer les jetons de débogage.

    3. Suivez les instructions à l'écran pour enregistrer votre jeton de débogage.

Pour en savoir plus sur le fournisseur de débogage (y compris sur la façon d'obtenir un nouveau jeton de débogage), consultez la documentation officielle App Check.

Unity

Voici comment utiliser le fournisseur de débogage lorsque vous exécutez votre application de manière interactive dans un émulateur (par exemple, lors du développement local) :

  1. Dans la console Firebase, créez un jeton de débogage :

    1. Dans la consoleFirebase, accédez à Sécurité > App Check > onglet Applications.

    2. Recherchez votre application, cliquez sur le menu à développer (), puis sélectionnez Gérer les jetons de débogage.

    3. Suivez les instructions à l'écran pour créer un jeton de débogage.

  2. Dans le code d'initialisation de votre application, ajoutez ce qui suit :

    using Firebase.AppCheck;
    
    void InitializeFirebase() {
      // Configure the Debug Provider factory with your debug token.
      DebugAppCheckProviderFactory.Instance.SetDebugToken("YOUR_DEBUG_TOKEN");
    
      // Set App Check to use the debug provider factory
      FirebaseAppCheck.SetAppCheckProviderFactory(
        DebugAppCheckProviderFactory.Instance);
    
      // Proceed to initialize Firebase as normal
    }
    

Pour en savoir plus sur le fournisseur de débogage (y compris sur la façon d'obtenir un nouveau jeton de débogage), consultez la documentation officielle App Check.

Étape 3 : Configurez App Check pour les utilisateurs finaux et la production

Lorsque vous êtes prêt à publier votre application pour les utilisateurs finaux, vous devez l'enregistrer et configurer un fournisseur d'attestation de production (comme App Attest, Play Integrity ou reCAPTCHA Enterprise).

  1. Choisissez un fournisseur d'attestation de production, puis suivez les instructions d'implémentation en cliquant sur les liens suivants :

    Notez que si aucun de ces fournisseurs d'attestation ne répond à vos besoins, vous pouvez implémenter un fournisseur personnalisé qui utilise un fournisseur d'attestation tiers ou vos propres techniques d'attestation.

  2. (Recommandé) Renforcez la protection en ajoutant la protection contre les attaques de répétition, ce qui signifie qu'un jeton App Check ne peut être utilisé qu'une seule fois.

Renforcer la protection en ajoutant une protection contre la relecture

Nous vous recommandons d'utiliser les dernières versions du SDK, mais assurez-vous d'utiliser au moins l'une de ces versions pour utiliser la protection contre la relecture :
Plates-formes Apple : v12.2.0+ | Android BoM : v34.14.0+ (App Check v19.1.0+) | Web : v12.14.0+ | Flutter : v4.15.0+ (App Check v4.10.0+) | Unity : v13.12.0+

Par défaut, App Check utilise des jetons de session dont la valeur TTL (Time To Live) est configurable entre 30 minutes et 7 jours. Ces jetons de session sont mis en cache par le SDK App Check, sont envoyés avec les requêtes de votre application et peuvent être réutilisés jusqu'à l'expiration de leur TTL. L'utilisation de jetons de session est considérée comme une protection de base.

Toutefois, vous pouvez renforcer la protection au-delà de cette protection de base en appliquant la protection contre les attaques de répétition, qui utilise des jetons à usage limité. Lorsque la protection contre les attaques de répétition est appliquée, voici ce qui se produit :

  • App Check bloquera les requêtes envoyées à Firebase AI Logic qui utilisent des jetons de session. Au lieu de cela, App Check n'autorisera une requête Firebase AI Logic que si elle utilise un jeton à usage limité nouvellement créé.

  • Une fois le jeton à usage limité validé, il est consommé pour ne pouvoir être utilisé qu'une seule fois, ce qui empêche les attaques par relecture.

  • Le SDK App Check génère un nouveau jeton à usage limité pour chaque requête. Notez que ce processus peut avoir un impact sur vos demandes en ajoutant une certaine latence et parfois un coût (selon votre fournisseur d'attestation).

Configurer et appliquer la protection contre la réutilisation

Cliquez sur votre fournisseur Gemini API pour afficher le contenu et le code spécifiques à ce fournisseur sur cette page.

Voici comment configurer et appliquer la protection contre la réutilisation :

  1. Si vous ne l'avez pas encore fait, configurez App Check en suivant les instructions fournies plus haut sur cette page.

  2. Activez l'utilisation des jetons à usage limité.

    Dans votre application, lors de l'instanciation, définissez le paramètre useLimitedUseAppCheckTokens sur true :

    Swift

    
    // ...
    
    // During instantiation, enable usage of limited-use tokens.
    let ai = FirebaseAI.firebaseAI(
      backend: .googleAI(),
      useLimitedUseAppCheckTokens: true
    )
    
    // ...
    
    

    Kotlin

    
    // ...
    
    // During instantiation, enable usage of limited-use tokens.
    val ai = Firebase.ai(
      backend = GenerativeBackend.googleAI(),
      useLimitedUseAppCheckTokens = true
    )
    
    // ...
    
    

    Java

    
    // ...
    
    // During instantiation, enable usage of limited-use tokens.
    FirebaseAI ai = FirebaseAI.getInstance(
      /* backend: */ GenerativeBackend.googleAI(),
      /* useLimitedUseAppCheckTokens: */ true
    );
    
    // ...
    
    

    Web

    
    // ...
    
    // During instantiation, enable usage of limited-use tokens.
    const ai = getAI(firebaseApp, {
      backend: new GoogleAIBackend(),
      useLimitedUseAppCheckTokens: true
    });
    
    // ...
    
    

    Dart

    
    // ...
    
    // During instantiation, enable usage of limited-use tokens
    final ai = await FirebaseAI.googleAI(
      useLimitedUseAppCheckTokens: true,
    );
    
    // ...
    
    

    Unity

    // ...
    
    // During instantiation, enable usage of limited-use tokens
    var ai = FirebaseAI.GetInstance(
      useLimitedUseAppCheckTokens: true
    );
    
    // ...
    
  3. Appliquez la protection contre les attaques de répétition.

    1. Dans la base de code de votre application, assurez-vous d'avoir activé l'utilisation de jetons à usage limité (voir l'étape précédente).

    2. Dans la consoleFirebase, accédez à Sécurité > App Check.

    3. Développez la vue des métriques pour Firebase AI Logic.

    4. Assurez-vous que l'option Protection de référence est activée, puis cliquez sur Continuer.

    5. Pour la protection contre la relecture, choisissez Non appliqué (surveillance uniquement) ou Appliqué.

      Pour décider quand appliquer la protection contre la réutilisation, tenez compte des points suivants :

      • Nous vous recommandons de surveiller vos requêtes si un nombre important de vos utilisateurs est susceptible d'utiliser des versions antérieures de votre application sans que l'utilisation de jetons à usage limité soit activée. Si vous appliquez immédiatement la protection contre la relecture, les demandes de ces utilisateurs seront bloquées.

      • Vous pouvez surveiller spécifiquement la métrique Non validé : jeton réutilisé, qui correspond au nombre de requêtes comportant un jeton déjà utilisé dans une requête précédente. Surveillez cette métrique dans la consoleFirebase (accédez à l'onglet Sécurité > App Check > API).

        Si une partie importante des requêtes récentes appartient à cette catégorie, vous pouvez éviter de perturber les utilisateurs et envisager d'attendre pour appliquer la protection contre la réutilisation jusqu'à ce qu'un plus grand nombre d'utilisateurs aient mis à jour leur application vers une version qui utilise des jetons à usage limité.

Comprendre comment Firebase AI Logic s'intègre à App Check

Pour utiliser les SDK Firebase AI Logic, l'API Firebase AI Logic (firebasevertexai.googleapis.com) doit être activée dans votre projet Firebase. En effet, les requêtes effectuées par les SDK Firebase AI Logic sont d'abord envoyées au serveur Firebase AI Logic, qui sert de passerelle proxy où la validation Firebase App Check a lieu avant que la requête ne soit autorisée à accéder au backend de votre fournisseur"Gemini API" et aux API pour accéder aux modèles Gemini et Imagen.

FAQ et dépannage

Consultez les questions fréquentes et la section de dépannage ou les codes d'erreur supplémentaires concernant Firebase AI Logic.