Wybierz platformę: Android iOS JavaScript

Zabezpieczanie klucza interfejsu API za pomocą Sprawdzania aplikacji

Sprawdzanie aplikacji Firebase chroni połączenia z aplikacji z platformą Google Maps, 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 dla mnie odpowiednie?

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 publicznie dostępna, 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 potwierdzenia nie będą działać na urządzeniach uznanych przez nich 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 kroków wdrożenia

Aby zintegrować aplikację ze Sprawdzaniem aplikacji, wykonaj te czynności:

  1. Dodaj Firebase do aplikacji.
  2. Dodaj i zainicjuj bibliotekę Sprawdzania aplikacji.
  3. Dodaj dostawcę tokena.
  4. Włącz debugowanie.
  5. 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 dane zawierają podział żądań na te, które są wysyłane 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 odrzuca cały ruch bez prawidłowego tokena Sprawdzania aplikacji.

Na co zwrócić uwagę podczas planowania integracji ze Sprawdzaniem aplikacji

Podczas planowania integracji weź pod uwagę te kwestie:

  • Zalecany przez nas dostawca potwierdzenia, 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 potwierdzenia, 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 i kryteria

  • 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.

  1. Jeśli jeszcze tego nie zrobisz, zintegruj pakiet SDK Miejsc z aplikacją.
  2. 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 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 wymuszać, 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.