Wybierz platformę: Android iOS JavaScript

Zabezpieczanie klucza interfejsu API za pomocą Sprawdzania aplikacji

Sprawdzanie aplikacji Firebase chroni połączenia z 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. 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 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 do komunikacji między serwerami, 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.
  • Zalecani przez Sprawdzanie aplikacji dostawcy potwierdzenia nie będą działać na urządzeniach uznanych przez nich za naruszone lub niezaufane. 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:

  1. Dodaj Firebase do aplikacji.
  2. Dodaj i zainicjuj bibliotekę Sprawdzania aplikacji.
  3. Dodaj dostawcę tokenów.
  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ń według 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 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.

Kwestie do rozważenia 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.

    Czas ważności tokena Sprawdzania aplikacji (czyli czas życia danych (TTL)) określa częstotliwość ponownych atestów. Ten czas można skonfigurować w konsoli Firebase. Ponowne atestowanie następuje, gdy upłynie około połowy czasu życia (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ę 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 (opcjonalny)

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 dostawców 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 egzekwowanie, 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.