Sélectionnez une plate-forme : Android iOS JavaScript

Utiliser App Check pour sécuriser votre clé API

Firebase App Check protège les appels de votre application à Google Maps Platform en bloquant le trafic provenant de sources autres que des applications légitimes. Pour ce faire, il recherche un jeton auprès d'un fournisseur d'attestation tel que App Attest. L'intégration de vos applications à App Check permet de vous protéger contre les requêtes malveillantes et d'éviter les frais liés aux appels d'API non autorisés.

App Check est-il adapté à mes besoins ?

App Check est recommandé dans la plupart des cas. Toutefois, il n'est pas nécessaire ou n'est pas compatible dans les cas suivants :

  • Vous utilisez le SDK Places d'origine. App Check n'est compatible qu'avec le SDK Places (nouveau).
  • Applications privées ou expérimentales. Si votre application n'est pas accessible au public, App Check n'est pas nécessaire.
  • Si votre application n'est utilisée que de serveur à serveur, App Check n'est pas nécessaire. Toutefois, si le serveur qui communique avec GMP est utilisé par des clients publics (tels que des applications mobiles), envisagez d'utiliser App Check pour protéger ce serveur au lieu de GMP.
  • Les fournisseurs d'attestation recommandés par App Check ne fonctionnent pas sur les appareils considérés comme compromis ou non fiables par votre fournisseur d'attestation. Si vous devez prendre en charge ces appareils, vous pouvez déployer un service d'attestation personnalisé. Pour en savoir plus, consultez les instructions.

Présentation des étapes d'implémentation

En règle générale, voici les étapes à suivre pour intégrer votre application à App Check :

  1. Ajoutez Firebase à votre application.
  2. Ajoutez et initialisez la bibliothèque App Check.
  3. Ajoutez le fournisseur de jetons à votre application.
  4. Initialisez les API Places et App Check.
  5. Activez le débogage.
  6. Surveillez les requêtes de votre application et décidez de l'application.

Une fois l'intégration à App Check effectuée, vous pourrez consulter les métriques de trafic backend dans la console Firebase. Ces métriques fournissent une répartition des requêtes selon qu'elles sont accompagnées ou non d'un jeton App Check valide. Pour en savoir plus, consultez la documentation Firebase App Check.

Lorsque vous êtes sûr que la plupart des requêtes proviennent de sources légitimes et que les utilisateurs ont installé la dernière version de votre application incluant votre implémentation d'App Check, vous pouvez activer l'application. Une fois l'application activée, App Check refusera tout le trafic sans jeton App Check valide.

Points à prendre en compte lors de la planification d'une intégration App Check

Voici quelques points à prendre en compte lors de la planification de votre intégration :

  • Les fournisseurs d'attestation que nous recommandons, Device Check ou App Attest, sont soumis à des quotas et des limites définis par Apple.

    Vous pouvez choisir d'utiliser un fournisseur d'attestation personnalisé, bien qu'il s'agisse d'un cas d'utilisation avancé. Pour en savoir plus, consultez la documentation Firebase App Check.

  • Les utilisateurs de votre application constateront une certaine latence au démarrage. Toutefois, par la suite, toute nouvelle attestation périodique s'effectuera en arrière-plan et les utilisateurs ne devraient plus constater de latence. La latence exacte au démarrage dépend du fournisseur d'attestation que vous choisissez.

    La durée de validité du jeton App Check (la durée de vie ou TTL) détermine la fréquence des nouvelles attestations. Cette durée peut être configurée dans la console Firebase. La nouvelle attestation a lieu lorsque environ la moitié de la durée de vie s'est écoulée. Pour en savoir plus, consultez la documentation Firebase de votre fournisseur d'attestation.

Intégrer votre application à App Check

Prérequis et exigences

  • Une application avec le SDK Places version 9.2 ou ultérieure installée.
  • L'ID de bundle de l'application.
  • Votre ID d'équipe depuis l'Apple Member Center, sous "Membership" (Abonnement).
  • Si vous prévoyez d'utiliser Device Check, votre fichier de clé privée et votre ID de clé.
  • Vous devez être le propriétaire de l'application dans Cloud Console.
  • Vous aurez besoin de l'ID de projet de l'application depuis Cloud Console.

Étape 1 : Ajouter Firebase à votre application

Suivez les instructions de la documentation pour les développeurs Firebase afin d'ajouter Firebase à votre application.

Lorsque vous enregistrez votre application, vous obtenez un fichier de configuration, GoogleService-Info.plist. Ajoutez ce fichier, sans le modifier, au niveau racine de votre application.

SDK Places Swift pour iOS

import FirebaseCore
import FirebaseAppCheck
import GooglePlacesSwift

Swift

import FirebaseCore
import FirebaseAppCheck
import GooglePlaces

Objective-C

@import FirebaseCore;      
@import FirebaseAppCheck;
@import GooglePlaces;

Étape 2 : Ajouter la bibliothèque App Check et initialiser App Check

Firebase fournit des instructions pour chaque fournisseur d'attestation par défaut. Ces instructions vous montrent comment configurer un projet Firebase et ajouter la bibliothèque App Check à votre application. Suivez les exemples de code fournis pour initialiser App Check.

  1. Suivez les instructions Firebase pour ajouter la bibliothèque App Check :
  2. Initialisez App Check.
    • Si vous utilisez App Attest, suivez la documentation pour les développeurs Firebase pour App Attest..

      Suivez les instructions Firebase App Check pour créer une implémentation de AppCheckProviderFactory et l'ajouter à votre fichier AppDelegate.

      SDK Places Swift pour iOS

      let providerFactory = YourAppCheckProviderFactory()
      AppCheck.setAppCheckProviderFactory(providerFactory)

      Swift

      let providerFactory = YourAppCheckProviderFactory()
      AppCheck.setAppCheckProviderFactory(providerFactory)

      Objective-C

      YourAppCheckProviderFactory *providerFactory =
          [[YourAppCheckProviderFactory alloc] init];
      [FIRAppCheck setAppCheckProviderFactory:providerFactory];
         
    • Si vous utilisez Device Check, ajoutez les éléments suivants à votre AppDelegate :

      SDK Places Swift pour iOS

      AppCheck.setAppCheckProviderFactory(DeviceCheckProviderFactory())

      Swift

      AppCheck.setAppCheckProviderFactory(DeviceCheckProviderFactory())

      Objective-C

      [FIRAppCheck setAppCheckProviderFactory:providerFactory];
            

Étape 3 : Ajouter le fournisseur de jetons

Créez un fichier nommé AppCheckTokenProvider (ou, si vous utilisez Objective-C, deux fichiers nommés AppCheckTokenProvider.h et AppCheckTokenProvider.m) au niveau racine de votre application. Ajoutez les instructions d'importation et la définition de classe suivantes :

SDK Places Swift pour iOS

// AppCheckTokenProvider.swift

import FirebaseAppCheck
import Foundation
import GooglePlacesSwift
      
struct TokenProvider: AppCheckTokenProvider {
  func fetchAppCheckToken() async throws -> String {
    return try await AppCheck.appCheck().token(forcingRefresh: false).token
  }
}
      

Swift

// AppCheckTokenProvider.swift

import FirebaseAppCheck
import Foundation
import GooglePlaces

class AppCheckTokenProvider: NSObject, GMSPlacesAppCheckTokenProvider {
  func fetchAppCheckToken() async throws -> String {
    return try await AppCheck.appCheck().token(forcingRefresh: false).token
  }
}

Objective-C

// AppCheckTokenProvider.h

@import Foundation;
@import GooglePlaces;

@interface AppCheckTokenProvider : NSObject <GMSPlacesAppCheckTokenProvider>
@end

// AppCheckTokenProvider.m

#import "AppCheckTokenProvider.h"

@import FirebaseAppCheck;

@implementation AppCheckTokenProvider

- (void)fetchAppCheckTokenWithCompletion:(nonnull GMSAppCheckTokenCompletion)completion {
  [[FIRAppCheck appCheck]
      tokenForcingRefresh:NO
               completion:^(FIRAppCheckToken *_Nullable token, NSError *_Nullable error) {
                 if (token) {
                   completion(token.token, nil);
                 } else {
                   completion(nil, error);
                 }
               }];
}

@end

Étape 4 : Initialiser les API Places et App Check

  1. Dans votre fichier AppDelegate, initialisez l'API Places :

    SDK Places Swift pour iOS

    PlacesClient.provideAPIKey("YOUR_API_KEY")

    Swift

    GMSPlacesClient.provideAPIKey("YOUR_API_KEY")

    Objective-C

    [GMSPlacesClient provideAPIKey:@"YOUR_API_KEY"];
  2. Ensuite, initialisez l'API App Check :

    SDK Places Swift pour iOS

    PlacesClient.setAppCheckTokenProvider(AppCheckTokenProvider())

    Swift

    GMSPlacesClient.setAppCheckTokenProvider(AppCheckTokenProvider())

    Objective-C

    [GMSPlacesClient setAppCheckTokenProvider:[[AppCheckTokenProvider alloc] init]];

Étape 5 : Activer le débogage (facultatif)

Si vous souhaitez développer et tester votre application localement ou l'exécuter dans un environnement d'intégration continue (CI), vous pouvez créer une version de débogage de votre application qui utilise un secret de débogage pour obtenir des jetons App Check valides. Cela vous permet d'éviter d'utiliser de vrais fournisseurs d'attestation dans votre version de débogage.

Pour tester votre application dans le simulateur ou sur un appareil de test :

  • Créez et définissez la fabrique de fournisseurs de débogage App Check.

    Cet exemple de code gère les scénarios de débogage et de production :

    SDK Places Swift pour iOS

    #if targetEnvironment(simulator)
          let providerFactory = AppCheckDebugProviderFactory()
    #else
          let providerFactory = YourAppCheckProviderFactory()
    #endif

    Swift

    #if targetEnvironment(simulator)
          let providerFactory = AppCheckDebugProviderFactory()
    #else
          let providerFactory = YourAppCheckProviderFactory()
    #endif

    Objective-C

    if (targetEnvironment == simulator){
    
    FIRAppCheckDebugProviderFactory *providerFactory =
          [[FIRAppCheckDebugProviderFactory alloc] init];
    [FIRAppCheck setAppCheckProviderFactory:providerFactory];
    }
    
    else {
    
    YourAppCheckProviderFactory *providerFactory =
          [[YourAppCheckProviderFactory alloc] init];
    [FIRAppCheck setAppCheckProviderFactory:providerFactory];
    }
        
  • Activez la journalisation dans votre projet Xcode, lancez l'application et recherchez le jeton de débogage local dans le journal.
  • Ajoutez ce jeton à la console Firebase.
  • Pour en savoir plus et obtenir des instructions, consultez la documentation App Check.

Pour exécuter votre application dans un environnement d'intégration continue :

  • Créez un jeton de débogage dans la console Firebase et ajoutez-le au keystore sécurisé de votre système d'intégration continue.
  • Dans Xcode, ajoutez une variable d'environnement à votre schéma de test avec le nom FIRAAppCheckDebugToken et $(APP_CHECK_DEBUG_TOKEN) (ou une valeur similaire).
  • Dans votre script de test d'intégration continue, transmettez le jeton de débogage en tant qu'environnement.
  • Créez et définissez la fabrique de fournisseurs de débogage App Check.

    Cet exemple de code gère les scénarios de débogage et de production :

    SDK Places Swift pour iOS

    #if DEBUG
      let providerFactory = AppCheckDebugProviderFactory()
    #else
      let providerFactory = YourAppCheckProviderFactory()
    #endif
    AppCheck.setAppCheckProviderFactory(providerFactory)
      

    Swift

    #if DEBUG
      let providerFactory = AppCheckDebugProviderFactory()
    #else
      let providerFactory = YourAppCheckProviderFactory()
    #endif
    AppCheck.setAppCheckProviderFactory(providerFactory)
      

    Objective-C

    #if DEBUG
    id<FIRAppCheckProviderFactory> providerFactory =
        [[FIRAppCheckDebugProviderFactory alloc] init];
    #else  // DEBUG
    id<FIRAppCheckProviderFactory> providerFactory =
        [[YourAppCheckProviderFactory alloc] init];
    #endif  // DEBUG
    AppCheck.setAppCheckProviderFactory(providerFactory)
  • Pour en savoir plus et obtenir des instructions, consultez la documentation App Check.

Étape 6 : Surveiller les requêtes de votre application et décider de l'application

Avant de commencer l'application, assurez-vous de ne pas perturber les utilisateurs légitimes de votre application. Pour ce faire, accédez à l'écran des métriques App Check pour voir le pourcentage de trafic de votre application qui est validé, obsolète ou illégitime. Une fois que vous constatez que la majorité de votre trafic est validée, vous pouvez activer l'application.

Pour en savoir plus et obtenir des instructions, consultez la documentation Firebase App Check.