Zabezpieczanie klucza interfejsu API za pomocą funkcji sprawdzania aplikacji

Sprawdzanie aplikacji Firebase zapewnia ochronę wywołań z Twojej aplikacji do Google Maps Platform poprzez blokowanie ruchu pochodzącego ze źródeł innych niż prawidłowe aplikacje. Robi to, sprawdzając token od dostawcy usługi weryfikacji, takiej jak Play Integrity. Integracja aplikacji ze Sprawdzaniem aplikacji pomaga chronić przed szkodliwymi żądaniami, dzięki czemu nie naliczamy opłat za nieautoryzowane wywołania interfejsu API.

Czy sprawdzanie aplikacji jest dla mnie odpowiednie?

W większości przypadków zalecamy użycie narzędzia App Check, ale w tych sytuacjach 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 (nowy).
  • aplikacje prywatne lub eksperymentalne. Jeśli aplikacja nie jest dostępna publicznie, nie musisz przeprowadzać kontroli aplikacji.
  • Jeśli aplikacja jest używana tylko na serwerach, nie musisz przeprowadzać kontroli aplikacji. Jeśli jednak serwer komunikujący się z GMP jest używany przez publicznych klientów (np. aplikacje mobilne), rozważ zastosowanie App Check do ochrony tego serwera zamiast GMP.
  • Zalecane przez App Check dostawcy usług weryfikacji nie będą działać na urządzeniach uznanych przez dostawcę za zagrożone lub niegodne zaufania. Jeśli chcesz obsługiwać takie urządzenia, możesz wdrożyć niestandardową usługę uwierzytelniania. Więcej informacji znajdziesz w instrukcjach.

Omówienie etapów wdrażania

Ogólnie rzecz biorąc, aby zintegrować aplikację z usługą App Check, musisz wykonać te czynności:

  1. Dodaj Firebase do swojej aplikacji.
  2. Dodaj i inicjuj bibliotekę AppCheck.
  3. Dodaj dostawcę tokenów.
  4. Włącz debugowanie.
  5. Sprawdzaj żądania aplikacji i decyduj o sposobie ich egzekwowania.

Po integracji z App Check możesz wyświetlać dane o ruchu w backendzie w konsoli Firebase. Te dane zawierają zestawienie żądań z podziałem na te, które mają prawidłowy token Sprawdzania aplikacji, i te, które go nie mają. Więcej informacji znajdziesz w dokumentacji Sprawdzania aplikacji Firebase.

Gdy będziesz mieć pewność, że większość żądań pochodzi z wiarygodnych źródeł, a użytkownicy zaktualizowali aplikację do najnowszej wersji, która zawiera funkcję sprawdzania aplikacji, możesz włączyć egzekwowanie. Po włączeniu wymuszania Sprawdzanie aplikacji odrzuci cały ruch bez prawidłowego tokena Sprawdzania aplikacji.

Co wziąć pod uwagę podczas planowania integracji z App Check

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

  • Nasz rekomendowany dostawca usług weryfikacji, Play Integrity, ma limit wywołań na dzień dla poziomu korzystania ze standardowego interfejsu API. Więcej informacji o limitach połączeń znajdziesz na stronie Konfiguracja w dokumentacji dla deweloperów dotyczącej integralności w Google Play.

    Możesz też użyć niestandardowego dostawcy informacji o sprzęcie, ale jest to zaawansowany przypadek użycia. Więcej informacji znajdziesz w artykule Wdrażanie niestandardowego dostawcy usługi App Check.

  • Użytkownicy Twojej aplikacji będą odczuwać pewne opóźnienia podczas uruchamiania. Jednak później okresowe ponowne weryfikowanie będzie odbywać się w tle, a użytkownicy nie powinni już odczuwać opóźnień. Dokładna wartość opóźnienia na starcie zależy od wybranego dostawcy weryfikacji.

    Częstotliwość ponownych weryfikacji zależy od okresu ważności tokena Sprawdzania aplikacji (czasu życia, czyli TTL). Czas trwania można skonfigurować w konsoli Firebase. Ponowne potwierdzenie następuje po upływie około połowy czasu trwania. Więcej informacji znajdziesz w dokumentacji Firebase dotyczącej dostawcy atesta.

Integracja aplikacji z Sprawdzaniem aplikacji

Wymagania wstępne i wymagania

  • aplikacja z integrowanym pakietem SDK Places w wersji 4.1 lub nowszej;
  • odcisk cyfrowy SHA-256 Twojej aplikacji;
  • nazwę pakietu aplikacji;
  • Musisz być właścicielem aplikacji w konsoli Cloud.
  • Potrzebujesz identyfikatora projektu aplikacji z konsoli Cloud.

Krok 1. Dodaj Firebase do swojej aplikacji

Aby dodać Firebase do aplikacji, wykonaj instrukcje w dokumentacji dla deweloperów Firebase.

Krok 2. Dodaj bibliotekę App Check i inicjuj App Check

Informacje o używaniu Play Integrity, domyślnego dostawcy usługi uwierzytelniania, znajdziesz w artykule Pierwsze kroki z aplikacją App Check i usługą Play Integrity na Androidzie.

  1. Integracja pakietu SDK Miejsc z aplikacją (jeśli jeszcze tego nie zrobiono).
  2. Następnie zainicjuj sprawdzanie aplikacjiklienta Map Google.

    // 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ć parametr 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 opracowywać i testować aplikację lokalnie lub uruchamiać ją w środowisku ciągłej integracji (CI), możesz utworzyć wersję debugową aplikacji, która używa tajnego klucza debugowania do uzyskiwania prawidłowych tokenów App Check. Dzięki temu nie musisz używać w kompilacji debugowania prawdziwych dostawców uwierzytelniania.

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

  • Dodaj bibliotekę App Check do pliku build.gradle.
  • Skonfiguruj App Check, aby używać fabryki dostawców debugowania w wersji debugowej.
  • Uruchom aplikację, aby utworzyć lokalny token debugowania. Dodaj ten token w konsoli Firebase.
  • Więcej informacji i instrukcji znajdziesz w dokumentacji App Check.

Aby uruchomić aplikację w środowisku CI:

  • Utwórz token debugowania w konsoli Firebase i dodaj go do bezpiecznego magazynu kluczy w systemie CI.
  • Dodaj bibliotekę App Check do pliku build.gradle.
  • Skonfiguruj wariant kompilacji CI, aby używać tokenu debugowania.
  • Owiń kod w klasach testów, które wymagają tokena App Check, za pomocą DebugAppCheckTestHelper.
  • Więcej informacji i instrukcji znajdziesz w dokumentacji App Check.

Krok 5. Monitoruj prośby o aplikację i podejmuj decyzje dotyczące egzekwowania zasad

Zanim zaczniesz egzekwować zasady, upewnij się, że nie zakłócisz działania aplikacji w przypadku jej legalnych użytkowników. W tym celu otwórz ekran danych z aplikacji, aby sprawdzić, jaki odsetek ruchu w Twojej aplikacji jest zweryfikowany, nieaktualny lub nielegalny. Gdy zauważysz, że większość ruchu jest zweryfikowana, możesz włączyć egzekwowanie.

Aby dowiedzieć się więcej i poznać instrukcje, zapoznaj się z dokumentacją Sprawdzania aplikacji Firebase.