Zabezpieczanie klucza interfejsu API za pomocą funkcji sprawdzania aplikacji
Sprawdzanie aplikacji Firebase zapewnia ochronę wywołań z Twojej aplikacji do Google Maps Platform, blokując ruch pochodzący z źródeł innych niż prawidłowe aplikacje. Robi to, sprawdzając token od dostawcy usługi atesta, np. Play Integrity. Integracja aplikacji ze Sprawdzaniem aplikacji pomaga chronić przed szkodliwymi żądaniami, dzięki czemu nie naliczamy opłat za nieautoryzowane wywołania interfejsu API.
Czy sprawdzanie aplikacji jest dla mnie odpowiednie?
W większości przypadków zalecamy użycie narzędzia App Check, ale w tych sytuacjach nie jest ono potrzebne lub nie jest obsługiwane:
- Używasz oryginalnego pakietu SDK Miejsc. Sprawdzanie aplikacji jest obsługiwane tylko w przypadku pakietu SDK Miejsc (nowy).
- Aplikacje prywatne lub eksperymentalne. Jeśli aplikacja nie jest dostępna publicznie, nie musi być sprawdzana.
- Jeśli aplikacja jest używana tylko na serwerach, nie trzeba jej sprawdzać. Jeśli jednak serwer komunikujący się z GMP jest używany przez publicznych klientów (np. aplikacje mobilne), rozważ zastosowanie App Check do ochrony tego serwera zamiast GMP.
- Zalecane przez App Check dostawcy usług weryfikacji nie będą działać na urządzeniach uznanych przez dostawcę za zagrożone lub niegodne zaufania. Jeśli chcesz obsługiwać takie urządzenia, możesz wdrożyć niestandardową usługę uwierzytelniania. Więcej informacji znajdziesz w instrukcjach.
Omówienie etapów wdrażania
Ogólnie rzecz biorąc, aby zintegrować aplikację z usługą App Check, musisz wykonać te czynności:
- Dodaj Firebase do swojej aplikacji.
- Dodaj i inicjuj bibliotekę AppCheck.
- Dodaj dostawcę tokenów.
- Włącz debugowanie.
- Sprawdzaj żądania aplikacji i decyduj o sposobie ich egzekwowania.
Po integracji z App Check możesz wyświetlać dane o ruchu w backendzie w konsoli Firebase. Te dane zawierają zestawienie żądań z podziałem na te, które mają prawidłowy token Sprawdzania aplikacji, i te, które go nie mają. Więcej informacji znajdziesz w dokumentacji Sprawdzania aplikacji Firebase.
Gdy będziesz mieć pewność, że większość żądań pochodzi z wiarygodnych źródeł, a użytkownicy zaktualizowali aplikację do najnowszej wersji, która zawiera funkcję sprawdzania aplikacji, możesz włączyć egzekwowanie. Po włączeniu wymuszania Sprawdzanie aplikacji odrzuci cały ruch bez prawidłowego tokena Sprawdzania aplikacji.
Co wziąć pod uwagę podczas planowania integracji z App Check
Oto kilka kwestii, które warto wziąć pod uwagę podczas planowania integracji:
Zalecany przez nas dostawca usług weryfikacji, Play Integrity, ma dzienny limit wywołań dla kategorii wykorzystania interfejsu API Standard. Więcej informacji o limitach połączeń znajdziesz na stronie Konfiguracja w dokumentacji dla programistów na temat integralności w Google Play.
Możesz też użyć niestandardowego dostawcy uwierzytelniania, ale jest to zaawansowany przypadek użycia. Więcej informacji znajdziesz w artykule Wdrażanie niestandardowego dostawcy usługi sprawdzania aplikacji.
-
Użytkownicy aplikacji będą odczuwać pewne opóźnienia podczas uruchamiania. Jednak później okresowe ponowne weryfikowanie będzie odbywać się w tle, a użytkownicy nie powinni już odczuwać żadnych opóźnień. Dokładna wartość opóźnienia na starcie zależy od wybranego dostawcy usługi weryfikacji.
Częstotliwość ponownych weryfikacji zależy od okresu ważności tokena Sprawdzania aplikacji (czasu życia danych, czyli TTL). Czas trwania można skonfigurować w konsoli Firebase. Ponowne potwierdzenie następuje po upływie około połowy czasu trwania. Więcej informacji znajdziesz w dokumentacji Firebase dotyczącej dostawcy atesta.
Integracja aplikacji z Sprawdzaniem aplikacji
Wymagania wstępne i wymagania
- Aplikacja z pakietem SDK Miejsca w wersji 4.1 lub nowszej.
- Odcisk cyfrowy SHA-256 Twojej aplikacji.
- Nazwa pakietu aplikacji.
- Musisz być właścicielem aplikacji w konsoli Cloud.
- Potrzebujesz identyfikatora projektu aplikacji z konsoli Cloud.
Krok 1. Dodaj Firebase do swojej aplikacji
Aby dodać Firebase do aplikacji, wykonaj instrukcje w dokumentacji dla deweloperów Firebase.
Krok 2. Dodaj bibliotekę App Check i inicjuj App Check
Informacje o używaniu Play Integrity, domyślnego dostawcy usługi uwierzytelniania, znajdziesz w artykule Zaczynaj korzystać z funkcji sprawdzania aplikacji z użyciem Play Integrity na Androidzie.
- Zintegruj pakiet SDK Places z aplikacją, jeśli jeszcze tego nie zrobiono.
Następnie zainicjuj sprawdzanie aplikacji i klienta Map.
// 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 funkcję setPlacesAppCheckTokenProvider()
, aby ustawić parametr 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 opracowywać i testować aplikację lokalnie lub uruchamiać ją w środowisku ciągłej integracji (CI), możesz utworzyć wersję debugową aplikacji, która używa tajnego klucza debugowania do uzyskiwania prawidłowych tokenów App Check. Dzięki temu nie musisz używać w kompilacji debugowania rzeczywistych dostawców uwierzytelniania.
Aby uruchomić aplikację na emulatorze lub urządzeniu testowym:
- Dodaj bibliotekę App Check do pliku
build.gradle
. - Skonfiguruj App Check, aby używać fabryki dostawców debugowania w wersji debugowej.
- Uruchom aplikację, aby utworzyć lokalny token debugowania. Dodaj ten token do konsoli Firebase.
- Więcej informacji i instrukcji 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 w systemie CI.
- Dodaj bibliotekę App Check do pliku
build.gradle
. - Skonfiguruj wariant kompilacji CI, aby używać tokenu debugowania.
- Owiń kod w klasach testowych, które wymagają kontroli aplikacji, za pomocą
DebugAppCheckTestHelper
. - Więcej informacji i instrukcji znajdziesz w dokumentacji usługi App Check.
Krok 5. Monitoruj prośby o aplikację i podejmuj decyzje dotyczące egzekwowania zasad
Zanim zaczniesz egzekwować zasady, upewnij się, że nie zakłócisz działania aplikacji w przypadku jej legalnych użytkowników. W tym celu otwórz ekran danych z aplikacji, aby sprawdzić, jaki odsetek ruchu w aplikacji jest zweryfikowany, nieaktualny lub nielegalny. Gdy zauważysz, że większość ruchu jest zweryfikowana, możesz włączyć egzekwowanie.
Więcej informacji i instrukcji znajdziesz w dokumentacji Sprawdzania aplikacji Firebase.