Navigation SDK for Android 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 Ihren legitimen Apps blockiert wird. Dazu wird bei einem Attestierungsanbieter wie Play Integrity eine Bewertung der Authentizität der App oder des Geräts angefordert. Wenn Sie Ihre App in App Check einbinden, wird sie vor schädlichen und nicht autorisierten Anfragen geschützt. Dadurch wird auch Ihre Abrechnung vor nicht autorisierten Belastungen geschützt. App Check verbessert auch die Echtzeit-Störungsmeldungen in Ihrem App-Ökosystem für die Flotte erheblich, was allen Fahrern zugutekommt, die Ihre App verwenden. Weitere Informationen finden Sie unter Störungsmeldungen.
Vorteile von App Check
App Check schützt zwei verschiedene Bereiche des Navigation SDK for Android: die Hauptnavigationsfunktion und die Meldung von Störungen.
Navigation
Mit App Check können Sie die wichtigsten Anfragen des Navigations-SDK für Android von schädlichen oder nicht autorisierten Quellen blockieren. Dies kommt Ihnen direkt zugute, da Ihr Projekt so vor Abrechnungsbetrug und Kontingenterschöpfung geschützt wird.
Störungsmeldungen
App Check wird dringend empfohlen, wenn Ihre App Funktionen für Echtzeit-Störungsmeldungen und Abstimmungen unterstützt. Wenn Sie App Check aktivieren, erhalten Ihre Fahrer die genauesten Routen, die alle Echtzeit-Feedbacks berücksichtigen.
Warum App Check für die Berichterstellung wichtig ist:
- Hohe Anforderungen an die Vertrauenswürdigkeit bei Sperrungen:Ereignisse, die sich auf die Routenführung auswirken, z. B. Straßensperrungen, können die Routenführung für alle Fahrer erheblich verändern. Um die Karte vor potenziellem Vandalismus, Spam oder ungenauen Meldungen zu schützen, nutzt die Moderationsinfrastruktur von Google für Straßensperrungen starke Signale zur Geräte- und App-Integrität.
- So werden Meldungen mit App Check validiert:Nutzermeldungen und ‑abstimmungen, die über das Navigation SDK for Android gesendet werden, enthalten das App Check-Token. Dieses wird vom Google-Backend verwendet, um die Legitimität des Feedbacks zu prüfen. Dadurch wird das Vertrauensniveau erhöht und das Feedback kann auf seine Auswirkungen auf die Echtzeitkarte hin ausgewertet werden.
- Auswirkungen, wenn App Check nicht verwendet wird:Berichte, die ohne gültiges App Check-Token eingereicht werden, werden im Rahmen eines Modells mit geringerem Vertrauen bewertet und möglicherweise nur als stille Signale verarbeitet. Das bedeutet, dass Ihre Nutzer zwar weiterhin Meldungen erstellen und abstimmen können, ihre Meldungen aber mit geringerer Wahrscheinlichkeit auf der Karte angezeigt werden oder die Routen anderer Fahrer beeinflussen. Außerdem ist eine zusätzliche Validierung erforderlich.
Ist App Check das Richtige für mich?
App Check wird in den meisten Fällen empfohlen. In den folgenden Szenarien ist App Check jedoch nicht erforderlich oder wird nicht unterstützt:
- Private oder experimentelle Apps:Wenn Ihre App nicht öffentlich zugänglich ist, ist App Check nicht erforderlich.
- Manipulierte Geräte:Die empfohlenen Attestierungsanbieter verhindern, dass das Navigation SDK für Android auf nicht vertrauenswürdigen Geräten wie gerooteten Smartphones oder Smartphones mit Jailbreak ausgeführt wird. Wenn Sie diese Geräte unterstützen möchten, stellen Sie einen benutzerdefinierten Attestierungsanbieter bereit.
- Android-Geräte ohne GMD:Auf Android-Geräten müssen die Google Mobile-Dienste (GMD) für Play Integrity ausgeführt werden. Wenn Sie Android-Geräte ohne GMS unterstützen möchten, stellen Sie einen benutzerdefinierten Attestierungsanbieter bereit.
Übersicht über die Implementierungsschritte
Auf übergeordneter Ebene führen Sie die folgenden Schritte aus, um Ihre App in App Check zu integrieren:
- Fügen Sie Ihrer Anwendung Firebase hinzu.
- Fügen Sie die App Check-Bibliothek hinzu und initialisieren Sie App Check.
- Fügen Sie einen Tokenanbieter hinzu. In diesem Schritt wird der Attestierungsanbieter Ihrer Wahl aufgerufen, um die Integrität des Geräts oder der App zu prüfen.
- Initialisieren Sie die Navigation API und die App Check API.
- Aktivieren Sie das Debugging. Dies ist während der Entwicklung oder in CI-Umgebungen (Continuous Integration) nützlich.
- Beobachten Sie die App-Anfragen, bevor Sie die Erzwingung aktivieren. So können Sie App Check nahtlos erzwingen, ohne Ihre Nutzer zu beeinträchtigen.
Überlegungen bei der Planung einer App Check-Integration
- Kontingente für Attestierungsanbieter:Der von uns empfohlene Attestierungsanbieter, Play Integrity, hat ein tägliches Aufruflimit für die Standard-API-Nutzungsstufe. Weitere Informationen zu Aufruflimits finden Sie in der Entwicklerdokumentation zur Google Play Integrity API auf der Seite Einrichtung.
- Startlatenz:In den meisten Fällen kommt es bei der normalen Nutzung nicht zu Latenzen, da App Check-Tokens auf dem Gerät im Cache gespeichert werden. Das System aktualisiert App Check-Tokens automatisch im Hintergrund, bevor sie ablaufen, um eine nahtlose Leistung zu gewährleisten. Wenn jedoch kein gültiges App Check-Token vorhanden ist, kommt es beim Starten der App zu einer gewissen Latenz. Diese Latenz tritt beispielsweise bei Kaltstarts auf, wenn ein im Cache gespeichertes Token abgelaufen ist oder fehlt.
- Token-TTL:Die Gültigkeitsdauer (TTL) bestimmt, wie lange das App Check-Token gültig ist, bevor es aktualisiert werden muss. Sie können diese Dauer in der Firebase Console auf einen Wert zwischen 30 Minuten und 7 Tagen festlegen. Eine Dauer von 1 Stunde wird als sichere Baseline empfohlen. Das SDK versucht jedoch automatisch, die Hintergrundaktualisierung nach etwa der Hälfte der TTL-Dauer durchzuführen. Eine detaillierte Anleitung für die Console finden Sie in der Dokumentation zu Firebase App Check.
App in App Check einbinden
Voraussetzungen und Anforderungen
- Eine App, in der das Navigation SDK for Android in Version 7.9 oder höher installiert ist.
- Der SHA-256-Zertifikat-Fingerabdruck Ihrer App.
- Der Paketname Ihrer App.
- Sie müssen der Inhaber der Anwendung in der Google Cloud Console sein.
- Die Projekt-ID Ihrer Anwendung aus der Google Cloud Console.
Schritt 1: Firebase zur App hinzufügen
Folgen Sie der Anleitung in der Firebase-Entwicklerdokumentation, um Firebase zu Ihrer App hinzuzufügen. Fügen Sie die Datei google-services.json dem Verzeichnis auf App-Ebene Ihres Projekts hinzu.
Schritt 2: App Check-Bibliothek hinzufügen und App Check initialisieren
Fügen Sie der Datei build.gradle Ihrer App die App Check-Abhängigkeit hinzu:
Groovy (build.gradle)
dependencies { // Import the Firebase BoM implementation platform('com.google.firebase:firebase-bom:34.17.0') // Add the dependency for the App Check library with Play Integrity implementation 'com.google.firebase:firebase-appcheck-playintegrity' }
Initialisieren Sie App Check in Ihrer Anwendungsklasse oder Hauptaktivität:
Java
import com.google.firebase.FirebaseApp; import com.google.firebase.appcheck.FirebaseAppCheck; import com.google.firebase.appcheck.playintegrity.PlayIntegrityAppCheckProviderFactory; // Initialize Firebase App FirebaseApp.initializeApp(/* context= */ this); // Initialize App Check FirebaseAppCheck firebaseAppCheck = FirebaseAppCheck.getInstance(); firebaseAppCheck.installAppCheckProviderFactory( PlayIntegrityAppCheckProviderFactory.getInstance());
Kotlin
import com.google.firebase.Firebase import com.google.firebase.appcheck.appCheck import com.google.firebase.appcheck.playintegrity.PlayIntegrityAppCheckProviderFactory import com.google.firebase.initialize // Initialize Firebase App Firebase.initialize(context = this) // Initialize App Check Firebase.appCheck.installAppCheckProviderFactory( PlayIntegrityAppCheckProviderFactory.getInstance(), )
Schritt 3: Tokenanbieter hinzufügen
Erstellen Sie eine Implementierung der MapsAppCheckTokenProvider-Schnittstelle. Dieser Anbieter ruft App Check-Tokens asynchron von Firebase App Check ab und übergibt sie mit dem MapsAppCheckTokenCallback an den Netzwerkstack des Navigation SDK for Android:
Java
import com.google.android.gms.maps.MapsAppCheckTokenCallback; import com.google.android.gms.maps.MapsAppCheckTokenProvider; import com.google.firebase.appcheck.FirebaseAppCheck; public class NavigationTokenProvider implements MapsAppCheckTokenProvider { @Override public void fetchToken(MapsAppCheckTokenCallback callback) { FirebaseAppCheck.getInstance() .getAppCheckToken(false) // forcingRefresh = false .addOnSuccessListener( tokenResult -> { String token = tokenResult.getToken(); callback.onSuccess(token); }) .addOnFailureListener( e -> { callback.onFailure(); }); } }
Kotlin
import com.google.android.gms.maps.MapsAppCheckTokenCallback import com.google.android.gms.maps.MapsAppCheckTokenProvider import com.google.firebase.appcheck.FirebaseAppCheck class NavigationTokenProvider : MapsAppCheckTokenProvider { override fun fetchToken(callback: MapsAppCheckTokenCallback) { FirebaseAppCheck.getInstance() .getAppCheckToken(false) .addOnSuccessListener { tokenResult -> callback.onSuccess(tokenResult.token) } .addOnFailureListener { callback.onFailure() } } }
Schritt 4: Navigation API und App Check API initialisieren
Initialisieren Sie das Navigation SDK for Android und registrieren Sie Ihre Instanz des einheitlichen Tokenanbieters mit MapsApiSettings.setAppCheckTokenProvider():
Java
import com.google.android.gms.maps.MapsApiSettings; // Register your App Check token provider before initializing Navigation SDK for Android MapsApiSettings.setAppCheckTokenProvider(context, new NavigationTokenProvider());
Kotlin
import com.google.android.gms.maps.MapsApiSettings // Register your App Check token provider before initializing Navigation SDK for Android MapsApiSettings.setAppCheckTokenProvider(context, NavigationTokenProvider())
Schritt 5: Debugging aktivieren (optional)
Nachdem App Check für das Navigation SDK for Android erzwungen wurde, funktionieren die Funktionen Ihrer App, die vom Navigation SDK for Android abhängen, nicht mehr in einem Simulator oder in einer CI-Umgebung (Continuous Integration), da diese Umgebungen nicht als gültige Geräte gelten. Wenn Sie Ihre App während der Entwicklung und beim Testen in diesen Umgebungen ausführen möchten, müssen Sie einen Debug-Build Ihrer App erstellen, der den App Check-Debug-Anbieter anstelle eines Produktions-Attestierungsanbieters verwendet.
- Fügen Sie der Datei
build.gradleIhrer App die Abhängigkeit für den Debug-Anbieter hinzu:Groovy (build.gradle)
dependencies { implementation 'com.google.firebase:firebase-appcheck-debug' }
- Konfigurieren Sie App Check so, dass die Debug-Anbieter-Factory in Ihren Debug-Builds verwendet wird:
Java
import com.google.firebase.appcheck.debug.DebugAppCheckProviderFactory; import com.google.firebase.appcheck.playintegrity.PlayIntegrityAppCheckProviderFactory; if (BuildConfig.DEBUG) { firebaseAppCheck.installAppCheckProviderFactory( DebugAppCheckProviderFactory.getInstance() ); } else { firebaseAppCheck.installAppCheckProviderFactory( PlayIntegrityAppCheckProviderFactory.getInstance() ); }
Kotlin
import com.google.firebase.Firebase import com.google.firebase.appcheck.appCheck import com.google.firebase.appcheck.debug.DebugAppCheckProviderFactory import com.google.firebase.appcheck.playintegrity.PlayIntegrityAppCheckProviderFactory if (BuildConfig.DEBUG) { Firebase.appCheck.installAppCheckProviderFactory( DebugAppCheckProviderFactory.getInstance(), ) } else { Firebase.appCheck.installAppCheckProviderFactory( PlayIntegrityAppCheckProviderFactory.getInstance(), ) }
- Starten Sie Ihre App auf einem Emulator oder Debug-Gerät. App Check gibt ein lokales Debug-Token in der Logcat-Ausgabe aus.
- Kopieren Sie dieses Debug-Token und registrieren Sie es in der Firebase Console. Weitere Informationen finden Sie in der Dokumentation zum Debug-Anbieter für Firebase App Check.
Schritt 6: App-Anfragen im Blick behalten und über Maßnahmen entscheiden
Bevor Sie die Erzwingung aktivieren, sollten Sie die App-Anfragen im Blick behalten, um sicherzustellen, dass Sie legitime Nutzer nicht beeinträchtigen.
- Rufen Sie in der Firebase Console den Bildschirm mit den App Check-Messwerten auf, um den Prozentsatz des verifizierten im Vergleich zum nicht verifizierten Traffic zu sehen.
- Sobald Sie sicher sind, dass der Großteil Ihres Traffics verifiziert ist und legitime Nutzer auf eine Version Ihrer App mit Ihrer App Check-Implementierung aktualisiert haben, aktivieren Sie die Erzwingung.
- Wenn die Erzwingung aktiviert ist, lehnt App Check alle Zugriffe ohne gültiges App Check-Token ab.