Wybierz platformę: Android iOS JavaScript

Zabezpieczanie klucza interfejsu API za pomocą usługi Sprawdzanie aplikacji

Sprawdzanie aplikacji Firebase chroni wywołania z aplikacji do Google Maps Platform, blokując ruch pochodzący ze źródeł innych niż uprawnione aplikacje. W tym celu sprawdza token od dostawcy atestów, 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 to odpowiednie rozwiązanie dla mnie?

W większości przypadków zalecane jest Sprawdzanie aplikacji, ale w tych przypadkach 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 (nowego).
  • aplikacje prywatne lub eksperymentalne; Jeśli aplikacja nie jest dostępna publicznie, usługa Sprawdzanie aplikacji nie jest potrzebna.
  • Jeśli aplikacja jest używana tylko w komunikacji serwer-serwer, usługa Sprawdzanie aplikacji nie jest potrzebna. Jeśli jednak serwer, który komunikuje się z GMP, jest używany przez klientów publicznych (np. aplikacje mobilne), zamiast GMP rozważ użycie usługi Sprawdzanie aplikacji do ochrony tego serwera.
  • Zalecani przez Sprawdzanie aplikacji dostawcy atestów nie będą działać na urządzeniach uznanych przez nich za niebezpieczne lub niezaufane. Jeśli musisz obsługiwać takie urządzenia, możesz wdrożyć niestandardową usługę atestowania. Więcej informacji znajdziesz w instrukcjach.

Omówienie etapów wdrażania

Aby zintegrować aplikację z funkcją Sprawdzanie aplikacji, wykonaj te czynności:

  1. Dodaj Firebase do swojej aplikacji.
  2. Dodaj i zainicjuj bibliotekę Sprawdzania aplikacji.
  3. Dodaj dostawcę tokenów.
  4. Włącz debugowanie.
  5. Monitoruj żądania aplikacji i podejmuj decyzje dotyczące egzekwowania zasad.

Po zintegrowaniu ze Sprawdzaniem aplikacji w konsoli Firebase zobaczysz dane o ruchu na backendzie. Te dane zawierają zestawienie żądań w zależności od 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 prawidłowych ź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.

Co wziąć pod uwagę podczas planowania integracji usługi Sprawdzanie aplikacji

Oto kilka kwestii, które warto wziąć pod uwagę podczas planowania integracji:

  • Zalecany przez nas dostawca atestów, 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 programistów dotyczącej usługi Google Play Integrity.

    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 Sprawdzania aplikacji.

  • Użytkownicy Twojej aplikacji mogą zauważyć pewne opóźnienia podczas uruchamiania. Jednak późniejsze okresowe ponowne potwierdzanie będzie odbywać się w tle i użytkownicy nie powinni już odczuwać żadnych opóźnień. Dokładna wartość opóźnienia przy uruchamianiu zależy od wybranego dostawcy atestów.

    Częstotliwość ponownej atestacji zależy od czasu ważności tokena Sprawdzania aplikacji (czasu życia lub TTL). Ten 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.

Integrowanie 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 atestów, znajdziesz w artykule Wprowadzenie do korzystania ze Sprawdzania aplikacji z interfejsem Play Integrity na Androidzie.

  1. Jeśli jeszcze tego nie zrobiono, zintegruj pakiet SDK Miejsc Google z aplikacją.
  2. Następnie zainicjuj Sprawdzanie aplikacjiklienta 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 funkcję setPlacesAppCheckTokenProvider(), aby ustawić wartość 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 w kompilacji do debugowania nie musisz używać prawdziwych dostawców atestów.

Aby uruchomić aplikację w emulatorze lub na urządzeniu testowym:

  • Dodaj bibliotekę Sprawdzanie aplikacji do pliku build.gradle.
  • Skonfiguruj Sprawdzanie aplikacji tak, aby w kompilacji do debugowania używać fabryki dostawcy debugowania.
  • Uruchom aplikację, która utworzy lokalny token debugowania. Dodaj ten token do konsoli Firebase.
  • Więcej informacji i instrukcje znajdziesz w dokumentacji usługi Sprawdzanie 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ę Sprawdzanie aplikacji do pliku build.gradle.
  • Skonfiguruj wariant kompilacji CI, aby używał tokena debugowania.
  • Owiń kod w klasach testowych, które wymagają tokena Sprawdzania aplikacji, za pomocą DebugAppCheckTestHelper.
  • Więcej informacji i instrukcje znajdziesz w dokumentacji usługi Sprawdzanie aplikacji.

Krok 5. Monitoruj żądania dotyczące aplikacji i podejmuj decyzje o egzekwowaniu zasad

Zanim zaczniesz egzekwować zasady, upewnij się, że nie zakłócisz działania aplikacji dla jej prawowitych użytkowników. W tym celu otwórz ekran danych Sprawdzania aplikacji, aby sprawdzić, jaki odsetek ruchu w aplikacji jest zweryfikowany, nieaktualny lub nieprawidłowy. Gdy zobaczysz, że większość ruchu jest zweryfikowana, możesz włączyć egzekwowanie.

Więcej informacji i instrukcje znajdziesz w dokumentacji Sprawdzania aplikacji Firebase.