API-Schlüssel mit App Check schützen
Firebase App Check schützt Anrufe 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 Bestätigungsanbieter wie Play Integrity gesucht. Wenn Sie Ihre Apps in App Check einbinden, können Sie sich vor schädlichen Anfragen schützen und müssen nicht für nicht autorisierte API-Aufrufe bezahlen.
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 Places SDK (neu) unterstützt.
- Private 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 verwenden, um diesen Server zu schützen anstelle von GMP.
- Die empfohlenen Bestätigungsanbieter von App Check funktionieren nicht auf Geräten, die von Ihrem Bestätigungsanbieter als kompromittiert oder nicht vertrauenswürdig eingestuft werden. Wenn Sie solche Geräte unterstützen müssen, können Sie einen benutzerdefinierten Bestätigungsdienst bereitstellen. Weitere Informationen finden Sie in der Anleitung.
Übersicht über die Implementierungsschritte
Im Allgemeinen führen Sie die folgenden Schritte aus, um Ihre App in App Check einzubinden:
- Fügen Sie Ihrer Anwendung Firebase hinzu.
- Fügen Sie die App Check-Bibliothek hinzu und initialisieren Sie sie.
- Fügen Sie den Tokenanbieter hinzu.
- Aktivieren Sie das Debugging.
- Überwachen Sie Ihre App-Anfragen und entscheiden Sie sich für die Erzwingung.
Nachdem Sie App Check eingebunden haben, können Sie in der Firebase Console Backend-Traffic-Messwerte sehen. Diese Messwerte enthalten eine Aufschlüsselung der Anfragen danach, ob sie ein gültiges App Check-Token enthalten. Weitere Informationen finden Sie in der Dokumentation zu Firebase App Check.
Wenn Sie sicher sind, dass die meisten Anfragen von legitimen Quellen stammen und dass die Nutzer auf die aktuelle Version Ihrer App aktualisiert haben, die Ihre Implementierung von App Check 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
Hier sind einige Punkte, die Sie bei der Planung Ihrer Integration berücksichtigen sollten:
Der von uns empfohlene Bestätigungsanbieter Play Integrity hat ein tägliches Anruflimit für die Standard-API-Nutzungsstufe. Weitere Informationen zu Anruflimits finden Sie auf der Einrichtung-Seite in der Google Play Integrity-Entwicklerdokumentation.
Sie können auch einen benutzerdefinierten Bestätigungsanbieter verwenden. Dies ist jedoch ein fortgeschrittener Anwendungsfall. Weitere Informationen finden Sie unter Benutzerdefinierten App Check-Anbieter implementieren.
-
Nutzer Ihrer App werden beim Start eine gewisse Latenz feststellen. Danach erfolgt die regelmäßige erneute Bestätigung jedoch im Hintergrund und die Nutzer sollten keine Latenz mehr feststellen. Die genaue Latenz beim Start hängt vom gewählten Bestätigungsanbieter ab.
Die Gültigkeitsdauer des App Check-Tokens (Time-to-Live oder TTL) bestimmt die Häufigkeit der erneuten Bestätigungen. 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 Bestätigungsanbieter.
App in App Check einbinden
Voraussetzungen und Anforderungen
- Eine App mit dem Places SDK Version 4.1 oder höher.
- Der SHA-256-Fingerabdruck Ihrer App.
- Der Paketname Ihrer App.
- 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: Fügen Sie Ihrer Anwendung Firebase hinzu.
Folgen Sie der Anleitung in der Firebase-Entwicklerdokumentation, um Ihrer App Firebase hinzuzufügen.
Schritt 2: Fügen Sie die App Check-Bibliothek hinzu und initialisieren Sie App Check.
Informationen zur Verwendung von Play Integrity, dem Standard-Bestätigungsanbieter, finden Sie unter App Check mit Play Integrity für Android verwenden.
- Binden Sie das Places SDK in Ihre App ein, falls Sie dies noch nicht getan haben.
Initialisieren Sie als Nächstes App Check und den Places-Client.
// Initialize App Check FirebaseApp.initializeApp(/* context= */ this); FirebaseAppCheck firebaseAppCheck = FirebaseAppCheck.getInstance(); firebaseAppCheck.installAppCheckProviderFactory( PlayIntegrityAppCheckProviderFactory.getInstance()); // Initialize Places SDK Places.initializeWithNewPlacesApiEnabled(context, API_KEY); PlacesClient client = Places.createClient(context);.
Schritt 3: Fügen Sie den Tokenanbieter hinzu.
Rufen Sie nach der Initialisierung der Places API setPlacesAppCheckTokenProvider() auf, um PlacesAppCheckTokenProvider festzulegen.
Places.initializeWithNewPlacesApiEnabled(context, API_KEY); Places.setPlacesAppCheckTokenProvider(new TokenProvider()); PlacesClient client = Places.createClient(context);.
Hier ist eine Beispielimplementierung der Token-Fetcher-Schnittstelle:
/** Sample client implementation of App Check token fetcher interface. */ static class TokenProvider implements PlacesAppCheckTokenProvider { @Override public ListenableFuture<String> fetchAppCheckToken() { SettableFuture<String> future = SettableFuture.create(); FirebaseAppCheck.getInstance() .getAppCheckToken(false) .addOnSuccessListener( appCheckToken -> { future.set(appCheckToken.getToken()); }) .addOnFailureListener( ex -> { future.setException(ex); }); return future; } }
Schritt 4: Debugging aktivieren (optional)
Wenn Sie Ihre App lokal entwickeln und testen oder in einer CI-Umgebung (Continuous Integration) 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 in Ihrem Debug-Build auf echte Bestätigungsanbieter verzichten.
So führen Sie Ihre App in einem Emulator oder auf einem Testgerät aus:
- Fügen Sie die App Check-Bibliothek Ihrer
build.gradle-Datei hinzu. - Konfigurieren Sie App Check so, dass die Debug-Anbieter-Factory in Ihrem Debug-Build verwendet wird.
- Starten Sie die App. Dadurch wird ein lokales Debug-Token erstellt. Fügen Sie dieses Token der Firebase Console hinzu.
- Weitere Informationen und eine Anleitung finden Sie in der App Check-Dokumentation.
So führen Sie Ihre App in einer CI-Umgebung aus:
- Erstellen Sie in der Firebase Console ein Debug-Token und fügen Sie es dem sicheren Schlüsselspeicher Ihres CI-Systems hinzu.
- Fügen Sie die App Check-Bibliothek Ihrer
build.gradle-Datei hinzu. - Konfigurieren Sie Ihre CI-Build-Variante so, dass das Debug-Token verwendet wird.
- Umschließen Sie Code in Ihren Testklassen, der ein App Check-Token benötigt, mit
DebugAppCheckTestHelper. - Weitere Informationen und eine Anleitung finden Sie in der App Check-Dokumentation.
Schritt 5: Überwachen Sie Ihre App-Anfragen und entscheiden Sie sich für die Erzwingung.
Bevor Sie die Erzwingung aktivieren, sollten Sie sicherstellen, dass Sie legitime Nutzer Ihrer App nicht stören. Rufen Sie dazu den Bildschirm mit den App Check-Messwerten auf, um zu sehen, wie viel Prozent des Traffics Ihrer App bestätigt, veraltet oder nicht legitim ist. Sobald Sie sehen, dass der Großteil Ihres Traffics bestätigt ist, können Sie die Erzwingung aktivieren.
Weitere Informationen und eine Anleitung finden Sie in der Dokumentation zu Firebase App Check.