Zabezpieczanie pakietu Navigation SDK na Androida za pomocą usługi Sprawdzanie aplikacji
Sprawdzanie aplikacji Firebase chroni wywołania z aplikacji do Google Maps Platform, blokując ruch pochodzący ze źródeł innych niż Twoje uprawnione aplikacje. W tym celu wysyła do dostawcy atestów, np. Play Integrity, żądanie oceny autentyczności aplikacji lub urządzenia. Gdy zintegrujesz aplikację z App Check, dodasz ochronę przed złośliwymi i nieautoryzowanymi żądaniami, co z kolei zabezpieczy Twoje rozliczenia przed nieautoryzowanymi opłatami. App Check znacznie ulepsza też raportowanie zakłóceń w czasie rzeczywistym w ekosystemie aplikacji dla flot, co przynosi korzyści wszystkim kierowcom korzystającym z Twojej aplikacji. Więcej informacji znajdziesz w sekcji Raportowanie zakłóceń.
Dlaczego warto korzystać ze Sprawdzania aplikacji?
Usługa App Check chroni 2 obszary pakietu Navigation SDK na Androida: główną funkcję nawigacji i zgłaszanie zakłóceń.
Nawigacja
Sprawdzanie aplikacji pomaga blokować główne żądania pakietu Navigation SDK na Androida pochodzące ze szkodliwych lub nieautoryzowanych źródeł. Przynosi to bezpośrednie korzyści, ponieważ chroni projekt przed oszustwami związanymi z płatnościami i wyczerpaniem limitu.
Zgłaszanie zakłóceń
Jeśli Twoja aplikacja obsługuje zgłaszanie zakłóceń w czasie rzeczywistym i głosowanie, zdecydowanie zalecamy korzystanie z usługi App Check. Włączenie usługi Sprawdzanie aplikacji zapewnia kierowcom najdokładniejsze trasy uwzględniające wszystkie informacje zwrotne w czasie rzeczywistym.
Dlaczego Sprawdzanie aplikacji ma znaczenie w przypadku raportowania:
- Wysoki poziom zaufania w przypadku zamknięć: zdarzenia wpływające na trasę, takie jak zamknięcia dróg, mogą znacząco zmienić zachowanie routingu w przypadku wszystkich kierowców. Aby chronić mapę przed potencjalnym wandalizmem, spamem lub niedokładnymi zgłoszeniami, infrastruktura moderacji Google w przypadku zakłóceń związanych z zamknięciem dróg opiera się na silnych sygnałach dotyczących integralności urządzenia i integralności aplikacji.
- Jak Sprawdzanie aplikacji weryfikuje zgłoszenia: zgłoszenia i głosy użytkowników wysyłane z pakietu Navigation SDK na Androida zawierają token Sprawdzania aplikacji, który jest używany przez backend Google do weryfikowania wiarygodności opinii. Zwiększa to poziom zaufania do opinii i umożliwia jej ocenę pod kątem wpływu na mapę publiczną.
- Skutki pominięcia sprawdzania aplikacji: raporty przesłane bez prawidłowego tokena sprawdzania aplikacji są oceniane w ramach modelu o niższym poziomie zaufania i mogą być przetwarzane wyłącznie jako sygnały ciche. Oznacza to, że użytkownicy nadal mogą zgłaszać problemy i oddawać głosy, ale ich zgłoszenia będą mniej widoczne na mapie i będą miały mniejszy wpływ na trasy innych kierowców. Będą też wymagać dodatkowej weryfikacji.
Czy Sprawdzanie aplikacji to odpowiednie rozwiązanie dla mnie?
Sprawdzanie aplikacji jest zalecane w większości przypadków. Nie jest ono jednak potrzebne lub nie jest obsługiwane w tych sytuacjach:
- Aplikacje prywatne lub eksperymentalne: jeśli aplikacja nie jest dostępna publicznie, usługa Sprawdzanie aplikacji nie jest potrzebna.
- Zhakowane urządzenia: zalecani dostawcy atestów uniemożliwiają uruchamianie pakietu Navigation SDK na Androida na niezaufanych urządzeniach, takich jak telefony z dostępem do roota lub po jailbreaku. Aby obsługiwać te urządzenia, wdróż niestandardowego dostawcę atestów.
- Urządzenia z Androidem bez GMS: aby korzystać z interfejsu Play Integrity, urządzenia z Androidem muszą mieć zainstalowane Usługi mobilne Google (GMS). Jeśli planujesz obsługiwać urządzenia z Androidem bez GMS, wdróż niestandardowego dostawcę atestów.
Omówienie etapów wdrażania
Aby zintegrować aplikację ze Sprawdzaniem aplikacji, wykonaj te czynności:
- Dodaj Firebase do aplikacji.
- Dodaj bibliotekę Sprawdzania aplikacji i zainicjuj Sprawdzanie aplikacji.
- Dodaj dostawcę tokenów. Ten krok powoduje wywołanie wybranego dostawcy atestów w celu zweryfikowania integralności urządzenia lub aplikacji.
- Zainicjuj interfejsy Navigation API i Sprawdzanie aplikacji API.
- Włącz debugowanie. Jest to przydatne podczas programowania lub w środowiskach trybu ciągłej integracji (CI).
- Zanim włączysz egzekwowanie, monitoruj żądania aplikacji. W ten sposób możesz bezproblemowo wymusić Sprawdzanie aplikacji bez zakłócania pracy użytkowników.
Kwestie do rozważenia podczas planowania integracji sprawdzania aplikacji
- Limity dostawcy atestów: zalecany przez nas dostawca atestów, czyli Play Integrity, ma dzienny limit wywołań w przypadku kategorii wykorzystania Standardowe. Więcej informacji o limitach wywołań znajdziesz na stronie Konfiguracja w dokumentacji dla deweloperów dotyczącej usługi Google Play Integrity.
- Opóźnienie uruchamiania: w większości sytuacji użytkownicy nie odczuwają opóźnienia podczas normalnego korzystania z aplikacji, ponieważ tokeny Sprawdzania aplikacji są buforowane na urządzeniu. System automatycznie odświeża tokeny Sprawdzania aplikacji w tle przed ich wygaśnięciem, aby zapewnić płynne działanie. Jeśli jednak nie ma prawidłowego tokena Sprawdzania aplikacji, użytkownicy aplikacji będą odczuwać pewne opóźnienie podczas uruchamiania. Na przykład to opóźnienie występuje podczas zimnego startu, gdy token w pamięci podręcznej wygasł lub go brakuje.
- Czas życia tokena: Czas życia danych (TTL) określa, jak długo token Sprawdzania aplikacji jest ważny, zanim trzeba go odświeżyć. W konsoli Firebase możesz skonfigurować ten czas trwania w zakresie od 30 minut do 7 dni. Zalecany czas trwania to 1 godzina, ale pakiet SDK automatycznie próbuje odświeżać w tle co około połowę czasu TTL. Szczegółowe instrukcje dotyczące konsoli znajdziesz w dokumentacji Sprawdzania aplikacji Firebase.
Integrowanie aplikacji ze Sprawdzaniem aplikacji
Wymagania wstępne i wymagania
- Aplikacja z zainstalowanym pakietem SDK do nawigacji na Androida w wersji 7.9 lub nowszej.
- Odcisk cyfrowy certyfikatu SHA-256 aplikacji.
- Nazwa pakietu aplikacji.
- Musisz być właścicielem aplikacji w konsoli Google Cloud.
- Identyfikator projektu aplikacji w konsoli Google Cloud.
Krok 1. Dodaj Firebase do aplikacji
Aby dodać Firebase do aplikacji, postępuj zgodnie z instrukcjami w dokumentacji dla deweloperów Firebase. Dodaj plik google-services.json do katalogu na poziomie aplikacji w projekcie.
Krok 2. Dodaj bibliotekę Sprawdzania aplikacji i zainicjuj Sprawdzanie aplikacji
Dodaj zależność Sprawdzanie aplikacji do pliku build.gradle aplikacji:
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' }
Zainicjuj App Check w klasie aplikacji lub w głównej aktywności:
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(), )
Krok 3. Dodaj dostawcę tokenów
Utwórz implementację interfejsu MapsAppCheckTokenProvider. Ten dostawca asynchronicznie pobiera tokeny App Check z usługi Firebase App Check i przekazuje je do stosu sieciowego pakietu Navigation SDK na Androida za pomocą interfejsu MapsAppCheckTokenCallback:
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() } } }
Krok 4. Zainicjuj interfejsy Navigation API i Sprawdzanie aplikacji API
Zainicjuj pakiet SDK do nawigacji na Androida i zarejestruj instancję ujednoliconego dostawcy tokenów za pomocą 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())
Krok 5. Włącz debugowanie (opcjonalnie)
Po wymuszeniu stosowania usługi Sprawdzanie aplikacji w przypadku pakietu Navigation SDK na Androida funkcje aplikacji, które zależą od tego pakietu, nie będą działać w symulatorze ani w środowisku trybu ciągłej integracji (CI), ponieważ te środowiska nie są uznawane za prawidłowe urządzenia. Aby uruchamiać aplikację w tych środowiskach podczas programowania i testowania, musisz utworzyć wersję debugowania aplikacji, która używa dostawcy debugowania weryfikacji aplikacji zamiast dostawcy atestów w wersji produkcyjnej.
- Dodaj zależność dostawcy debugowania do pliku
build.gradleaplikacji:Groovy (build.gradle)
dependencies { implementation 'com.google.firebase:firebase-appcheck-debug' }
- Skonfiguruj Sprawdzanie aplikacji tak, aby w kompilacjach do debugowania używało fabryki dostawcy debugowania:
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(), ) }
- Uruchom aplikację na emulatorze lub urządzeniu do debugowania. Sprawdzanie aplikacji wydrukuje lokalny token debugowania w danych wyjściowych logcat.
- Skopiuj i zarejestruj ten token debugowania w konsoli Firebase. Więcej informacji znajdziesz w dokumentacji dostawcy debugowania Sprawdzania aplikacji Firebase.
Krok 6. Monitoruj prośby dotyczące aplikacji i podejmuj decyzje o egzekwowaniu zasad
Zanim włączysz egzekwowanie, monitoruj żądania aplikacji, aby mieć pewność, że nie zakłócisz działania uprawnionych użytkowników.
- Otwórz ekran danych App Check w konsoli Firebase, aby zobaczyć odsetek zweryfikowanego i niezweryfikowanego ruchu.
- Gdy będziesz mieć pewność, że większość ruchu pochodzi od zweryfikowanych i prawdziwych użytkowników, którzy zaktualizowali aplikację do wersji zawierającej wdrożenie Sprawdzania aplikacji, włącz egzekwowanie.
- Po włączeniu wymuszania Sprawdzanie aplikacji będzie odrzucać cały ruch bez prawidłowego tokena Sprawdzania aplikacji.