API-Schlüssel mit App Check schützen
Firebase App Check schützt Aufrufe von Ihrer App an die Google Maps Platform, indem Traffic von anderen Quellen als legitimen Apps blockiert wird. Dazu wird nach einem Token von einem Attestierungsanbieter wie App Attest gesucht. Wenn Sie Ihre Apps in App Check einbinden, können Sie sich vor schädlichen Anfragen schützen und vermeiden, dass Ihnen unbefugte API-Aufrufe in Rechnung gestellt werden.
Ist App Check das Richtige für mich?
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 neue Places SDK unterstützt.
- Interne oder experimentelle Apps. Wenn Ihre App nicht öffentlich zugänglich ist, ist App Check nicht erforderlich.
- Wenn Ihre App nur für die Server-zu-Server-Kommunikation 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 App Check zum Schutz dieses Servers anstelle von GMP verwenden.
- Die empfohlenen Attestierungsanbieter von App Check funktionieren nicht auf Geräten, die von Ihrem Attestierungsanbieter als manipuliert oder nicht vertrauenswürdig eingestuft werden. Wenn Sie solche Geräte unterstützen müssen, können Sie einen benutzerdefinierten Attestierungsdienst bereitstellen. Weitere Informationen
Übersicht über die Implementierungsschritte
Im Großen und Ganzen sind das die Schritte, die Sie ausführen müssen, um Ihre App in App Check einzubinden:
- Fügen Sie Ihrer Anwendung Firebase hinzu.
- App Check-Bibliothek hinzufügen und initialisieren
- Fügen Sie Ihrer App den Tokenanbieter hinzu.
- Initialisieren Sie die Places API und die App Check API.
- Aktivieren Sie das Debugging.
- App-Anfragen überwachen und über die Durchsetzung entscheiden
Nachdem Sie App Check eingebunden haben, können Sie sich in der Firebase Console Messwerte zum Backend-Traffic ansehen. Diese Messwerte liefern eine Aufschlüsselung der Anfragen danach, ob sie 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 auf die neueste Version Ihrer App aktualisiert haben, die Ihre App Check-Implementierung enthält, 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 der Integration sollten Sie Folgendes beachten:
Die von uns empfohlenen Attestierungsanbieter Device Check oder App Attest unterliegen von Apple festgelegten Kontingenten und Einschränkungen.
Sie können auch einen benutzerdefinierten Attestierungsanbieter verwenden. Dies ist jedoch ein fortgeschrittener Anwendungsfall. Weitere Informationen finden Sie in der Firebase App Check-Dokumentation.
-
Bei Nutzern Ihrer App kann es beim Start zu einer gewissen Latenz kommen. Danach erfolgt die regelmäßige erneute Bestätigung jedoch im Hintergrund und Nutzer sollten keine Latenz mehr feststellen. Die genaue Latenz beim Start hängt vom ausgewählten Attestierungsanbieter ab.
Die Gültigkeitsdauer (Time to Live oder TTL) des App Check-Tokens bestimmt die Häufigkeit der erneuten Attestierungen. Diese Dauer kann in der Firebase Console konfiguriert werden. Die erneute Bestätigung erfolgt, wenn etwa die Hälfte der TTL abgelaufen ist. Weitere Informationen finden Sie in der Firebase-Dokumentation für Ihren Attestierungsanbieter.
App in App Check einbinden
Voraussetzungen und Anforderungen
- Eine App mit dem 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 Device Check verwenden möchten, benötigen Sie Ihre Datei mit dem privaten Schlüssel 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 zu Ihrer App hinzuzufügen.
Wenn Sie Ihre App registrieren, erhalten Sie eine Konfigurationsdatei, GoogleService-Info.plist
. Fügen Sie diese Datei unverändert auf der Stammebene Ihrer App hinzu.
Places Swift SDK for iOS
import FirebaseCore import FirebaseAppCheck import GooglePlacesSwift
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 Standardanbieter für die Geräteattestierung. In dieser Anleitung erfahren Sie, wie Sie ein Firebase-Projekt einrichten und die App Check-Bibliothek zu Ihrer App hinzufügen. Folgen Sie den bereitgestellten Codebeispielen, um App Check zu initialisieren.
- Folgen Sie der Firebase-Anleitung, um die App Check-Bibliothek hinzuzufügen:
- App Check initialisieren
- Wenn Sie App Attest verwenden, folgen Sie der Firebase-Entwicklerdokumentation für App Attest.
Folgen Sie der Anleitung zu Firebase App Check, um eine Implementierung von
AppCheckProviderFactory
zu erstellen und sie Ihrer DateiAppDelegate
hinzuzufügen.Places Swift SDK for iOS
let providerFactory = YourAppCheckProviderFactory() AppCheck.setAppCheckProviderFactory(providerFactory)
Swift
let providerFactory = YourAppCheckProviderFactory() AppCheck.setAppCheckProviderFactory(providerFactory)
Objective-C
YourAppCheckProviderFactory *providerFactory = [[YourAppCheckProviderFactory alloc] init]; [FIRAppCheck setAppCheckProviderFactory:providerFactory];
- Wenn Sie Device Check verwenden, fügen Sie Folgendes zu Ihrer
AppDelegate
hinzu:Places Swift SDK for iOS
AppCheck.setAppCheckProviderFactory(DeviceCheckProviderFactory())
Swift
AppCheck.setAppCheckProviderFactory(DeviceCheckProviderFactory())
Objective-C
[FIRAppCheck setAppCheckProviderFactory:providerFactory];
- Wenn Sie App Attest verwenden, folgen Sie der Firebase-Entwicklerdokumentation für App Attest.
Schritt 3: Tokenanbieter hinzufügen
Erstellen Sie im Stammverzeichnis Ihrer App eine Datei namens AppCheckTokenProvider
(oder, wenn Sie Objective-C verwenden, zwei Dateien namens AppCheckTokenProvider.h
und AppCheckTokenProvider.m
).
Fügen Sie die folgenden Importanweisungen und die Klassendefinition hinzu:
Places Swift SDK for 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
Schritt 4: Places API und App Check API initialisieren
- Initialisieren Sie die Places API in Ihrer
AppDelegate
-Datei:Places Swift SDK for iOS
PlacesClient.provideAPIKey("YOUR_API_KEY")
Swift
GMSPlacesClient.provideAPIKey("YOUR_API_KEY")
Objective-C
[GMSPlacesClient provideAPIKey:@"YOUR_API_KEY"];
- Initialisieren Sie dann die App Check API:
Places Swift SDK for iOS
PlacesClient.setAppCheckTokenProvider(AppCheckTokenProvider())
Swift
GMSPlacesClient.setAppCheckTokenProvider(AppCheckTokenProvider())
Objective-C
[GMSPlacesClient setAppCheckTokenProvider:[[AppCheckTokenProvider alloc] init]];
Schritt 5: Debugging 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, in dem ein Debug-Secret verwendet wird, um gültige App Check-Tokens zu erhalten. So können Sie vermeiden, dass Sie in Ihrem Debug-Build echte Attestierungsanbieter verwenden.
So testen Sie Ihre App im Simulator oder auf einem Testgerät:
App Check-Debug-Anbieter-Factory erstellen und festlegen
Dieses Codebeispiel deckt sowohl das Debugging als auch die Produktionsszenarien ab:Places Swift SDK for 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]; }
- Aktivieren Sie die Protokollierung in Ihrem Xcode-Projekt, starten Sie die App und suchen Sie im Log nach dem lokalen Debug-Token.
- Fügen Sie dieses Token in 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 eine Umgebungsvariable zu Ihrem Testschema mit dem Namen
FIRAAppCheckDebugToken
und$(APP_CHECK_DEBUG_TOKEN)
(oder einem ähnlichen Wert) hinzu. - Übergeben Sie das Debug-Token in Ihrem CI-Testskript als Umgebungsvariable.
App Check-Debug-Anbieter-Factory erstellen und festlegen
Dieses Codebeispiel deckt sowohl das Debugging als auch die Produktionsszenarien ab:Places Swift SDK for 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)
- Weitere Informationen und Anleitungen finden Sie in der App Check-Dokumentation.
Schritt 6: App-Anfragen überwachen und über die Durchsetzung entscheiden
Bevor Sie mit der Durchsetzung beginnen, sollten Sie sicherstellen, 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 des Traffics Ihrer App verifiziert, veraltet oder unzulässig 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.