Zabezpieczanie klucza interfejsu API za pomocą Sprawdzania aplikacji
Sprawdzanie aplikacji Firebase chroni połączenia z Twojej aplikacji z Google Maps Platform, blokując ruch pochodzący z innych źródeł niż legalne aplikacje. W tym celu sprawdza token od dostawcy potwierdzenia, takiego jak Play Integrity. Zintegrowanie 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 Sprawdzanie aplikacji jest odpowiednie dla mnie?
W większości przypadków zalecamy korzystanie ze Sprawdzania aplikacji. Nie jest ono jednak potrzebne lub nie jest obsługiwane w tych przypadkach:
- Używasz oryginalnego pakietu SDK Miejsc. Sprawdzanie aplikacji jest obsługiwane tylko w przypadku pakietu SDK Miejsc (nowego).
- Aplikacje prywatne lub eksperymentalne. Jeśli Twoja aplikacja nie jest dostępna publicznie, Sprawdzanie aplikacji nie jest potrzebne.
- Jeśli Twoja aplikacja jest używana tylko w komunikacji między serwerami, Sprawdzanie aplikacji nie jest potrzebne. Jeśli jednak serwer, który komunikuje się z platformą Google Maps, jest używany przez klientów publicznych (np. aplikacje mobilne), rozważ użycie Sprawdzania aplikacji do ochrony tego serwera zamiast platformy Google Maps.
- Zalecani przez Sprawdzanie aplikacji dostawcy atestów nie będą działać na urządzeniach uznanych przez dostawcę atestów za naruszone lub niewiarygodne. Jeśli musisz obsługiwać takie urządzenia, możesz wdrożyć niestandardową usługę potwierdzania. Więcej informacji znajdziesz w instrukcjach.
Omówienie etapów wdrożenia
Aby zintegrować aplikację ze Sprawdzaniem aplikacji, wykonaj te czynności:
- Dodaj Firebase do aplikacji.
- Dodaj i zainicjuj bibliotekę Sprawdzania aplikacji.
- Dodaj dostawcę tokena.
- Włącz debugowanie.
- Monitoruj żądania aplikacji i zdecyduj, czy chcesz włączyć wymuszanie.
Po zintegrowaniu ze Sprawdzaniem aplikacji możesz wyświetlać dane o ruchu w backendzie w konsoli Firebase. Te wskaźniki zawierają podział żądań na te, które są powiązane z prawidłowym tokenem Sprawdzania aplikacji, i te, które nie są. Więcej informacji znajdziesz w dokumentacji Sprawdzania aplikacji Firebase.
Gdy masz pewność, że większość żądań pochodzi z legalnych źródeł i że użytkownicy zaktualizowali aplikację do najnowszej wersji, która zawiera implementację Sprawdzania aplikacji, możesz włączyć wymuszanie. Gdy wymuszanie jest włączone, Sprawdzanie aplikacji będzie odrzucać cały ruch bez prawidłowego tokena Sprawdzania aplikacji.
Kwestie do rozważenia podczas planowania integracji ze Sprawdzaniem aplikacji
Podczas planowania integracji warto wziąć pod uwagę te kwestie:
Zalecany przez nas dostawca atestacji, 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 deweloperów Google Play Integrity.
Możesz też użyć niestandardowego dostawcy atestu, ale jest to zaawansowany przypadek użycia. Więcej informacji znajdziesz w artykule Implementowanie niestandardowego dostawcy Sprawdzania aplikacji.
-
Użytkownicy Twojej aplikacji będą odczuwać pewne opóźnienie podczas uruchamiania. Jednak później wszelkie okresowe ponowne potwierdzenia będą wykonywane w tle i użytkownicy nie powinni już odczuwać żadnych opóźnień. Dokładna wielkość opóźnienia podczas uruchamiania zależy od wybranego dostawcy potwierdzenia.
Okres ważności tokena Sprawdzania aplikacji (czyli czas życia danych lub TTL) określa częstotliwość ponownych potwierdzeń. Ten czas można skonfigurować w konsoli Firebase. Ponowne potwierdzenie następuje po upływie około połowy czasu TTL. Więcej informacji znajdziesz w dokumentacji Firebase dotyczącej dostawcy potwierdzenia.
Integracja aplikacji ze Sprawdzaniem aplikacji
Wymagania wstępne
- 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ę Sprawdzania aplikacji i zainicjuj Sprawdzanie aplikacji
Informacje o korzystaniu z Play Integrity, domyślnego dostawcy potwierdzenia, znajdziesz w artykule Pierwsze kroki ze Sprawdzaniem aplikacji i Play Integrity na Androidzie.
- Jeśli jeszcze tego nie zrobisz, zintegruj pakiet SDK Miejsc z aplikacją.
Następnie zainicjuj Sprawdzanie aplikacji i klienta Miejsc.
// 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ę tokena
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 trybie ciągłej integracji (CI), możesz utworzyć kompilację do debugowania aplikacji, która używa tajnego klucza debugowania do uzyskiwania prawidłowych tokenów Sprawdzania aplikacji. Dzięki temu możesz uniknąć używania prawdziwych dostawców potwierdzenia w kompilacji do debugowania.
Aby uruchomić aplikację w emulatorze lub na urządzeniu testowym:
- Dodaj bibliotekę Sprawdzania aplikacji do pliku
build.gradle. - Skonfiguruj Sprawdzanie aplikacji tak, aby w kompilacji do debugowania używało fabryki dostawcy debugowania.
- Uruchom aplikację, która utworzy lokalny token debugowania. Dodaj ten token do konsoli Firebase.
- Więcej informacji i instrukcji znajdziesz w dokumentacji Sprawdzania aplikacji.
Aby uruchomić aplikację w środowisku CI:
- Utwórz token debugowania w konsoli Firebase i dodaj go do bezpiecznego magazynu kluczy systemu CI.
- Dodaj bibliotekę Sprawdzania aplikacji do pliku
build.gradle. - Skonfiguruj wariant kompilacji CI tak, aby używał tokena debugowania.
- Owiń kod w klasach testowych, które wymagają tokena Sprawdzania aplikacji, za pomocą
DebugAppCheckTestHelper. - Więcej informacji i instrukcji znajdziesz w dokumentacji Sprawdzania aplikacji.
Krok 5. Monitoruj żądania aplikacji i zdecyduj, czy chcesz włączyć wymuszanie
Zanim zaczniesz wymuszanie, upewnij się, że nie zakłócisz działania legalnych użytkowników aplikacji. Aby to zrobić, otwórz ekran danych Sprawdzania aplikacji i sprawdź, jaki odsetek ruchu w aplikacji jest zweryfikowany, nieaktualny lub nielegalny. Gdy zobaczysz, że większość ruchu jest zweryfikowana, możesz włączyć wymuszanie.
Więcej informacji i instrukcji znajdziesz w dokumentacji Sprawdzania aplikacji Firebase.