Zabezpieczanie klucza interfejsu API za pomocą usługi App Check
Sprawdzanie aplikacji Firebase chroni wywołania z aplikacji do Google Maps Platform, blokując ruch pochodzący ze źródeł innych niż uprawnione aplikacje. W tym celu sprawdza token od dostawcy atestów, takiego jak Play Integrity. Integracja aplikacji ze Sprawdzaniem aplikacji pomaga chronić przed złośliwymi żądaniami, dzięki czemu nie ponosisz opłat za nieautoryzowane wywołania interfejsu API.
Czy App Check to odpowiednie rozwiązanie dla mnie?
W większości przypadków zalecana jest usługa App Check, ale w tych przypadkach nie jest ona potrzebna lub nie jest obsługiwana:
- Używasz oryginalnego pakietu SDK Miejsc. Weryfikacja aplikacji jest obsługiwana tylko w przypadku pakietu SDK Miejsc (nowego).
- aplikacje prywatne lub eksperymentalne; Jeśli aplikacja nie jest dostępna publicznie, usługa App Check nie jest potrzebna.
- Jeśli aplikacja jest używana tylko w komunikacji serwer-serwer, usługa App Check nie jest potrzebna. Jeśli jednak serwer, który komunikuje się z GMP, jest używany przez klientów publicznych (np. aplikacje mobilne), zamiast GMP rozważ użycie usługi App Check do ochrony tego serwera.
- Zalecani dostawcy atestów App Check nie będą działać na urządzeniach uznanych przez dostawcę atestów za naruszone lub niezaufane. Jeśli chcesz obsługiwać takie urządzenia, możesz wdrożyć niestandardową usługę atestowania. Więcej informacji znajdziesz w instrukcjach.
Omówienie etapów wdrażania
Aby zintegrować aplikację z App Check, wykonaj te czynności:
- Dodaj Firebase do swojej aplikacji.
- Dodaj i zainicjuj bibliotekę App Check.
- Dodaj dostawcę tokenów.
- Włącz debugowanie.
- Monitoruj żądania aplikacji i podejmuj decyzje dotyczące egzekwowania zasad.
Po zintegrowaniu z App Check w konsoli Firebase zobaczysz dane o ruchu na backendzie. Te dane zawierają zestawienie żądań w zależności od tego, czy towarzyszy im prawidłowy token Sprawdzania aplikacji. Więcej informacji znajdziesz w dokumentacji Sprawdzania aplikacji Firebase.
Gdy będziesz mieć pewność, że większość żądań pochodzi z prawidłowych źródeł i że użytkownicy zaktualizowali aplikację do najnowszej wersji, która zawiera Twoją implementację weryfikacji aplikacji, możesz włączyć egzekwowanie. Po włączeniu wymuszania Sprawdzanie aplikacji będzie odrzucać cały ruch bez prawidłowego tokena Sprawdzania aplikacji.
Co wziąć pod uwagę podczas planowania integracji usługi App Check
Oto kilka kwestii, które warto wziąć pod uwagę podczas planowania integracji:
Zalecany przez nas dostawca atestów, Play Integrity, ma dzienny limit wywołań w przypadku kategorii wykorzystania Standard API. Więcej informacji o limitach wywołań znajdziesz na stronie Konfiguracja w dokumentacji dla programistów dotyczącej usługi Play Integrity.
Możesz też użyć niestandardowego dostawcy atestów, ale jest to zaawansowany przypadek użycia. Więcej informacji znajdziesz w artykule Implementowanie niestandardowego dostawcy App Check.
-
Użytkownicy Twojej aplikacji mogą zauważyć pewne opóźnienia podczas jej uruchamiania. Jednak późniejsze okresowe ponowne potwierdzanie będzie odbywać się w tle i użytkownicy nie powinni już odczuwać żadnych opóźnień. Dokładna wartość opóźnienia przy uruchamianiu zależy od wybranego dostawcy atestów.
Częstotliwość ponownego potwierdzania zależy od czasu ważności tokena Sprawdzania aplikacji (czasu życia lub TTL). Ten czas trwania można skonfigurować w konsoli Firebase. Ponowna atestacja następuje po upływie około połowy czasu TTL. Więcej informacji znajdziesz w dokumentacji Firebase dotyczącej dostawcy atestów.
Integrowanie aplikacji ze Sprawdzaniem aplikacji
Wymagania wstępne i wymagania
- Aplikacja z zintegrowanym pakietem SDK Miejsc w wersji 4.1 lub nowszej.
- Odcisk cyfrowy SHA-256 aplikacji.
- Nazwa pakietu aplikacji.
- Musisz być właścicielem aplikacji w konsoli Cloud.
- Będziesz potrzebować identyfikatora projektu aplikacji z konsoli Cloud.
Krok 1. Dodaj Firebase do aplikacji
Aby dodać Firebase do aplikacji, postępuj zgodnie z instrukcjami w dokumentacji dla deweloperów Firebase.
Krok 2. Dodaj bibliotekę App Check i zainicjuj App Check
Informacje o korzystaniu z Play Integrity, domyślnego dostawcy atestów, znajdziesz w artykule Wprowadzenie do korzystania z usługi App Check z interfejsem Play Integrity API na Androidzie.
- Jeśli jeszcze tego nie zrobiono, zintegruj pakiet SDK Miejsc Google z aplikacją.
Następnie zainicjuj App Check i klienta Places.
// 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);.
Krok 3. Dodaj dostawcę tokenów
Po zainicjowaniu interfejsu Places API wywołaj setPlacesAppCheckTokenProvider()
, aby ustawić PlacesAppCheckTokenProvider
.
Places.initializeWithNewPlacesApiEnabled(context, API_KEY); Places.setPlacesAppCheckTokenProvider(new TokenProvider()); PlacesClient client = Places.createClient(context);.
Oto przykładowa implementacja interfejsu pobierania tokena:
/** 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; } }
Krok 4. Włącz debugowanie (opcjonalnie)
Jeśli chcesz tworzyć i testować aplikację lokalnie lub uruchamiać ją w środowisku ciągłej integracji (CI), możesz utworzyć wersję debugowania aplikacji, która używa tajnego klucza debugowania do uzyskiwania prawidłowych tokenów weryfikacji aplikacji. Dzięki temu w wersji debugowania nie musisz używać prawdziwych dostawców atestów.
Aby uruchomić aplikację w emulatorze lub na urządzeniu testowym:
- Dodaj bibliotekę App Check do pliku
build.gradle
. - Skonfiguruj App Check tak, aby w kompilacji debugowania używał fabryki dostawcy debugowania.
- Uruchom aplikację, która utworzy lokalny token debugowania. Dodaj ten token do konsoli Firebase.
- Więcej informacji i instrukcje znajdziesz w dokumentacji usługi App Check.
Aby uruchomić aplikację w środowisku CI:
- Utwórz token debugowania w konsoli Firebase i dodaj go do bezpiecznego magazynu kluczy systemu CI.
- Dodaj bibliotekę App Check do pliku
build.gradle
. - Skonfiguruj wariant kompilacji CI tak, aby używał tokena debugowania.
- Owiń kod w klasach testowych, które wymagają tokena App Check, za pomocą
DebugAppCheckTestHelper
. - Więcej informacji i instrukcje znajdziesz w dokumentacji usługi App Check.
Krok 5. Monitoruj prośby aplikacji i podejmuj decyzje dotyczące egzekwowania
Zanim zaczniesz egzekwować zasady, upewnij się, że nie zakłócisz działania aplikacji dla jej prawowitych użytkowników. W tym celu otwórz ekran danych App Check, aby sprawdzić, jaki odsetek ruchu w Twojej aplikacji jest zweryfikowany, nieaktualny lub nieprawidłowy. Gdy zobaczysz, że większość ruchu jest zweryfikowana, możesz włączyć egzekwowanie.
Więcej informacji i instrukcje znajdziesz w dokumentacji Sprawdzania aplikacji Firebase.