Zabezpieczanie klucza interfejsu API za pomocą Sprawdzania aplikacji
Sprawdzanie aplikacji Firebase chroni wywołania z Twojej aplikacji do Google Maps Platform, blokując ruch pochodzący ze źródeł innych niż uprawnione aplikacje. W tym celu sprawdza token od dostawcy atestu, takiego jak Play Integrity. Integracja aplikacji ze Sprawdzaniem aplikacji pomaga chronić przed szkodliwymi żądaniami, dzięki czemu nie są naliczane opłaty za nieautoryzowane wywołania interfejsu API.
Czy Sprawdzanie aplikacji jest dla mnie?
Sprawdzanie aplikacji jest zalecane w większości przypadków, ale nie jest potrzebne lub nie jest obsługiwane w tych sytuacjach:
- Używasz oryginalnego pakietu SDK Miejsc. Sprawdzanie aplikacji jest obsługiwane tylko w pakiecie Places SDK (nowym).
- aplikacje prywatne lub eksperymentalne; Jeśli aplikacja nie jest dostępna publicznie, sprawdzanie aplikacji nie jest potrzebne.
- Jeśli aplikacja jest używana tylko w komunikacji serwer-serwer, sprawdzanie aplikacji nie jest potrzebne. Jeśli jednak serwer, który komunikuje się z GMP, jest używany przez klientów publicznych (np. aplikacje mobilne), rozważ użycie Sprawdzania aplikacji do ochrony tego serwera zamiast GMP.
- Dostawcy atestów zalecani przez Sprawdzanie aplikacji nie będą działać na urządzeniach, które dostawca atestów uzna za niebezpieczne lub niezaufane. Jeśli chcesz obsługiwać takie urządzenia, możesz wdrożyć niestandardową usługę atestacji. Więcej informacji znajdziesz w instrukcjach.
Omówienie etapów wdrażania
Aby zintegrować aplikację ze Sprawdzaniem aplikacji, wykonaj te czynności:
- Dodaj Firebase do aplikacji.
- Dodaj i zainicjuj bibliotekę Sprawdzania aplikacji.
- Dodaj dostawcę tokenów.
- Włącz debugowanie.
- Monitorowanie próśb o dostęp do aplikacji i podejmowanie decyzji o egzekwowaniu zasad.
Po zintegrowaniu z funkcją sprawdzania aplikacji w konsoli Firebase możesz wyświetlać dane o ruchu w backendzie. Te dane zawierają zestawienie żądań według tego, czy towarzyszy im prawidłowy token Sprawdzania aplikacji. Więcej informacji znajdziesz w dokumentacji Sprawdzania aplikacji Firebase.
Gdy upewnisz się, że większość żądań pochodzi z wiarygodnych źródeł, a użytkownicy zaktualizowali aplikację do najnowszej wersji, która zawiera Twoją implementację Sprawdzania aplikacji, możesz włączyć egzekwowanie. Po włączeniu wymuszania Sprawdzanie aplikacji będzie odrzucać cały ruch bez prawidłowego tokena Sprawdzania aplikacji.
Kwestie do rozważenia podczas planowania integracji ze Sprawdzaniem aplikacji
Oto kilka kwestii, które warto rozważyć podczas planowania integracji:
Zalecany przez nas dostawca atestów, Play Integrity, ma dzienny limit wywołań w przypadku standardowej kategorii wykorzystania interfejsu API. Więcej informacji o limitach wywołań znajdziesz na stronie Konfiguracja w dokumentacji dla deweloperów dotyczącej interfejsu Google Play Integrity API.
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 funkcji Sprawdzanie aplikacji.
-
Użytkownicy aplikacji mogą zauważyć pewne opóźnienie podczas uruchamiania. Później jednak okresowe ponowne potwierdzanie będzie odbywać się w tle i użytkownicy nie powinni już odczuwać żadnych opóźnień. Dokładne opóźnienie podczas uruchamiania zależy od wybranego dostawcy atestów.
Czas ważności tokena Sprawdzania aplikacji (czas życia lub TTL) określa częstotliwość ponownego potwierdzania. 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.
Integracja aplikacji ze Sprawdzaniem aplikacji
Wymagania wstępne i wymagania
- Aplikacja z zintegrowanym pakietem Places SDK w wersji 4.1 lub nowszej.
- Odcisk cyfrowy SHA-256 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 aplikacji
Aby dodać Firebase do aplikacji, postępuj zgodnie z instrukcjami podanymi w dokumentacji Firebase dla deweloperów.
Krok 2. Dodaj bibliotekę Sprawdzania aplikacji i zainicjuj tę funkcję
Informacje o korzystaniu z Play Integrity, domyślnego dostawcy atestów, znajdziesz w artykule Zacznij korzystać ze Sprawdzania aplikacji z Play Integrity na Androidzie.
- Jeśli jeszcze nie masz zintegrowanego pakietu Places SDK z aplikacją, zrób to teraz.
Następnie zainicjuj Sprawdzanie aplikacji 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 tokenów:
/** 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 trybu ciągłej integracji (CI), możesz utworzyć kompilację do debugowania, która używa obiektu tajnego do debugowania, aby uzyskiwać prawidłowe tokeny Sprawdzania aplikacji. Dzięki temu nie musisz używać prawdziwych dostawców atestów 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ę, co spowoduje utworzenie lokalnego tokena debugowania. Dodaj ten token do konsoli Firebase.
- Więcej informacji i instrukcje 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, aby używał tokena debugowania.
- W klasach testowych, które wymagają tokena Sprawdzania aplikacji, umieść kod w
DebugAppCheckTestHelper. - Więcej informacji i instrukcje znajdziesz w dokumentacji Sprawdzania aplikacji.
Krok 5. Monitoruj prośby o dostęp do aplikacji i podejmuj decyzje dotyczące egzekwowania zasad
Zanim zaczniesz egzekwować zasady, upewnij się, że nie zakłócisz działania aplikacji u jej uprawnionych użytkowników. Aby to zrobić, otwórz ekran danych Sprawdzania aplikacji i sprawdź, jaki odsetek ruchu w aplikacji jest zweryfikowany, nieaktualny lub nieuprawniony. Gdy zobaczysz, że większość ruchu jest zweryfikowana, możesz włączyć egzekwowanie.
Więcej informacji i instrukcje znajdziesz w dokumentacji Sprawdzania aplikacji Firebase.