API-Schlüssel mit App Check schützen

Firebase App Check schützt Aufrufe von Ihrer App an die Google Maps Platform, indem Traffic blockiert wird, der nicht von legitimen Apps stammt. Dazu wird nach einem Token von einem Attestierungsanbieter wie App Attest gesucht. Wenn Sie Ihre Apps in App Check integrieren, können Sie sich vor schädlichen Anfragen schützen und werden nicht für nicht autorisierte API-Aufrufe in Rechnung gestellt.

Ist App Check für mich geeignet?

App Check wird in den meisten Fällen empfohlen. In den folgenden Fällen ist App Check jedoch nicht erforderlich oder wird nicht unterstützt:

  • Sie verwenden das ursprüngliche Places SDK. App Check wird nur für das Places SDK (neu) unterstützt.
  • Interne oder experimentelle Apps Wenn Ihre App nicht öffentlich zugänglich ist, ist App Check nicht erforderlich.
  • Wenn Ihre App nur serverübergreifend verwendet wird, ist App Check nicht erforderlich. Wenn der Server, der mit GMP kommuniziert, jedoch von öffentlichen Clients (z. B. mobilen Apps) verwendet wird, sollten Sie stattdessen App Check zum Schutz dieses Servers verwenden.
  • Die von App Check empfohlenen Attestierungsanbieter funktionieren nicht auf Geräten, die von Ihrem Attestierungsanbieter als manipuliert oder nicht vertrauenswürdig eingestuft wurden. Wenn Sie solche Geräte unterstützen möchten, können Sie einen benutzerdefinierten Attestierungsservice bereitstellen. Weitere Informationen finden Sie in der Anleitung.

Implementierungsschritte im Überblick

So integrieren Sie Ihre App in App Check:

  1. Fügen Sie Ihrer Anwendung Firebase hinzu.
  2. Fügen Sie die App Check-Bibliothek hinzu und initialisieren Sie sie.
  3. Fügen Sie Ihrer App den Tokenanbieter hinzu.
  4. Initialisieren Sie die Places API und die App Check API.
  5. Aktivieren Sie die Fehlerbehebung.
  6. Überwachen Sie Ihre App-Anfragen und entscheiden Sie, ob Sie Maßnahmen ergreifen möchten.

Nach der Einbindung von App Check können Sie Back-End-Traffic-Messwerte in der Firebase Console sehen. Diese Messwerte geben Aufschluss darüber, ob Anfragen ein gültiges App Check-Token enthalten. Weitere Informationen finden Sie in der Firebase App Check-Dokumentation.

Wenn Sie sicher sind, dass die meisten Anfragen von legitimen Quellen stammen und dass Nutzer die neueste Version Ihrer App mit Ihrer App-Check-Implementierung installiert haben, können Sie die Erzwingung aktivieren. Wenn die Erzwingung aktiviert ist, lehnt App Check alle Zugriffe ohne gültiges App Check-Token ab.

Überlegungen bei der Planung einer App Check-Integration

Bei der Planung Ihrer Integration sollten Sie Folgendes beachten:

  • Die von uns empfohlenen Attestierungsanbieter Device Check oder App Attest unterliegen den von Apple festgelegten Kontingenten und Einschränkungen.

    Sie können auch einen benutzerdefinierten Attestierungsanbieter verwenden. Dies ist jedoch ein erweiterter Anwendungsfall. Weitere Informationen finden Sie in der Firebase App Check-Dokumentation.

  • Beim Starten Ihrer App kommt es zu einer gewissen Latenz. Danach erfolgt die regelmäßige Reattestierung jedoch im Hintergrund und Nutzer sollten keine Verzögerungen mehr feststellen. Die genaue Latenz beim Starten hängt vom ausgewählten Attestierungsanbieter ab.

    Die Häufigkeit der Wiederholung der Attestierung wird durch die Gültigkeitsdauer des App Check-Tokens (die Gültigkeitsdauer oder TTL) bestimmt. Diese Dauer kann in der Firebase Console konfiguriert werden. Die erneute Attestierung erfolgt, wenn etwa die Hälfte der TTL verstrichen ist. Weitere Informationen finden Sie in der Firebase-Dokumentation für Ihren Attestierungsanbieter.

App in App Check einbinden

Voraussetzungen und Anforderungen

  • Eine App mit installiertem Places SDK in Version 9.2 oder höher
  • Die Bundle-ID der App.
  • Ihre Team-ID aus dem Apple Member Center unter „Membership“ (Mitgliedschaft).
  • Wenn Sie die Geräteüberprüfung verwenden möchten, benötigen Sie Ihre private Schlüsseldatei und die Schlüssel-ID.
  • Sie müssen Inhaber der App in der Cloud Console sein.
  • Sie benötigen die Projekt-ID der App aus der Cloud Console.

Schritt 1: Firebase zu Ihrer App hinzufügen

Folgen Sie der Anleitung in der Firebase-Entwicklerdokumentation, um Firebase Ihrer App hinzuzufügen.

Wenn Sie Ihre App registrieren, erhalten Sie eine Konfigurationsdatei namens GoogleService-Info.plist. Fügen Sie diese Datei unverändert der Stammebene Ihrer App hinzu.

Swift

import FirebaseCore
import FirebaseAppCheck
import GooglePlaces

Objective-C

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

Schritt 2: App Check-Bibliothek hinzufügen und App Check initialisieren

Firebase bietet Anleitungen für jeden Standardattestierungsanbieter. In dieser Anleitung erfahren Sie, wie Sie ein Firebase-Projekt einrichten und Ihrer App die App Check-Bibliothek hinzufügen. Folgen Sie den bereitgestellten Codebeispielen, um App Check zu initialisieren.

  1. Folgen Sie der Firebase-Anleitung, um die App Check-Bibliothek hinzuzufügen:
  2. App Check initialisieren.
    • Wenn Sie App Attest verwenden, folgen Sie der Firebase-Entwicklerdokumentation für App Attest.

      Folgen Sie der Anleitung für Firebase App Check, um eine Implementierung von AppCheckProviderFactory zu erstellen und sie der Datei AppDelegate hinzuzufügen.

      Swift

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

      Objective-C

      YourAppCheckProviderFactory *providerFactory =
          [[YourAppCheckProviderFactory alloc] init];
      [FIRAppCheck setAppCheckProviderFactory:providerFactory];
         
    • Wenn Sie die Geräteüberprüfung verwenden, fügen Sie Ihrer AppDelegate Folgendes hinzu:

      Swift

      AppCheck.setAppCheckProviderFactory(DeviceCheckProviderFactory())

      Objective-C

      [FIRAppCheck setAppCheckProviderFactory:providerFactory];
            

Schritt 3: Tokenanbieter hinzufügen

Erstellen Sie eine Datei namens AppCheckTokenProvider (oder, wenn Sie Objective-C verwenden, zwei Dateien namens AppCheckTokenProvider.h und AppCheckTokenProvider.m) auf der Stammebene Ihrer App. Fügen Sie die folgenden Importanweisungen und die Klassendefinition hinzu:

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

Schritt 4: Places API und App Check API initialisieren

  1. Initialisieren Sie die Places API in Ihrer AppDelegate-Datei:

    Swift

    GMSPlacesClient.provideAPIKey("YOUR_API_KEY")

    Objective-C

    [GMSPlacesClient provideAPIKey:@"YOUR_API_KEY"];
  2. Initialisieren Sie dann die App Check API:

    Swift

    GMSPlacesClient.setAppCheckTokenProvider(AppCheckTokenProvider())

    Objective-C

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

Schritt 5: Debuggen aktivieren (optional)

Wenn Sie Ihre App lokal entwickeln und testen oder in einer Continuous Integration-Umgebung (CI) ausführen möchten, können Sie einen Debug-Build Ihrer App erstellen, der ein Debug-Secret verwendet, um gültige App Check-Tokens zu erhalten. So können Sie echte Attestierungsanbieter in Ihrem Debug-Build vermeiden.

So testen Sie Ihre App im Simulator oder auf einem Testgerät:

  • Erstellen und festlegen Sie die App Check-Debuganbieter-Fabrik.

    Dieses Codebeispiel ist sowohl für das Debuggen als auch für die Produktion geeignet:

    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];
    }
        
  • Aktivieren Sie die Protokollierung in Ihrem Xcode-Projekt, starten Sie die App und suchen Sie im Protokoll nach dem lokalen Debug-Token.
  • Fügen Sie dieses Token der Firebase Console hinzu.
  • Weitere Informationen und Anleitungen finden Sie in der App-Check-Dokumentation.

So führen Sie Ihre App in einer CI-Umgebung aus:

  • Erstellen Sie ein Debug-Token in der Firebase Console und fügen Sie es dem sicheren Schlüsselspeicher Ihres CI-Systems hinzu.
  • Fügen Sie in Xcode Ihrem Testschema eine Umgebungsvariable mit dem Namen FIRAAppCheckDebugToken und $(APP_CHECK_DEBUG_TOKEN) (oder einem ähnlichen Wert) als Wert hinzu.
  • Geben Sie das Debug-Token in Ihrem CI-Testscript als Umgebung an.
  • Erstellen und festlegen Sie die App Check-Debuganbieter-Fabrik.

    Dieses Codebeispiel ist sowohl für das Debuggen als auch für die Produktion geeignet:

    Swift

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

    Objective-C

    if (targetEnvironment == ci) {
    FIRAppCheckDebugProviderFactory *providerFactory =
          [[FIRAppCheckDebugProviderFactory alloc] init];
    [FIRAppCheck setAppCheckProviderFactory:providerFactory];
    }
    
    else {
    YourAppCheckProviderFactory *providerFactory =
          [[YourAppCheckProviderFactory alloc] init];
    [FIRAppCheck setAppCheckProviderFactory:providerFactory];
    }
  • Weitere Informationen und Anleitungen finden Sie in der App-Check-Dokumentation.

Schritt 6: App-Anfragen im Blick behalten und Maßnahmen ergreifen

Bevor Sie mit der Erzwingung beginnen, sollten Sie sich vergewissern, dass Sie keine legitimen Nutzer Ihrer App beeinträchtigen. Rufen Sie dazu den Bildschirm mit den App Check-Messwerten auf, um zu sehen, welcher Prozentsatz der Zugriffe auf Ihre App bestätigt, veraltet oder nicht legitim ist. Sobald der Großteil Ihrer Zugriffe bestätigt wurde, können Sie die Erzwingung aktivieren.

Weitere Informationen und Anleitungen finden Sie in der Firebase App Check-Dokumentation.