Zabezpieczanie klucza interfejsu API za pomocą funkcji sprawdzania aplikacji

Sprawdzanie aplikacji Firebase zapewnia ochronę wywołań z Twojej aplikacji do Google Maps Platform, blokując ruch pochodzący z źródeł innych niż prawidłowe aplikacje. Robi to, sprawdzając token od dostawcy atestu, takiego jak reCAPTCHA Enterprise. 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 musi być sprawdzana.
  • Jeśli aplikacja jest używana tylko na serwerach, nie trzeba jej sprawdzać. 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.

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 do aplikacji.
  4. Inicjuj interfejsy API Miejsca i App Check.
  5. Włącz debugowanie.
  6. 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:

  • Jeden z zalecanych przez nas dostawców usług weryfikacji, reCAPTCHA Enterprise,pobiera opłaty za ponad 10 tys. oceny miesięcznie.

    Inny polecany przez nas dostawca usług weryfikacji, reCAPTCHA v3, ma limit, po przekroczeniu którego ruch nie jest już oceniany.

    Możesz użyć niestandardowego dostawcy weryfikacji, ale jest to zaawansowany przypadek użycia. Więcej informacji znajdziesz w dokumentacji App Check.

  • Użytkownicy 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ć żadnych opóźnień. Dokładna wartość opóźnienia na starcie zależy od wybranego dostawcy usługi weryfikacji.

    Częstotliwość ponownych weryfikacji zależy od okresu ważności tokena Sprawdzania aplikacji (czasu życia danych, 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

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

Firebase udostępnia instrukcje dotyczące każdego domyślnego dostawcy weryfikacji. Te instrukcje pokazują, jak skonfigurować projekt Firebase i dodać do aplikacji bibliotekę App Check. Aby zainicjować App Check, postępuj zgodnie z podanymi przykładami kodu.

Krok 3. Wczytaj biblioteki interfejsu JS Maps API

  1. Załaduj biblioteki podstawowe, Mapy i Miejscości zgodnie z podanym niżej fragmentem kodu. Więcej informacji i instrukcji znajdziesz w dokumentacji klasy Place interfejsu Maps JavaScript API.

    async function init() {
      const {Settings} = await google.maps.importLibrary('core');
      const {Map} = await google.maps.importLibrary('maps');
      const {Place} = await google.maps.importLibrary('places');
    }  

Krok 4. Inicjuj interfejsy API Places i App Check

  1. Inicjalizacja App Check za pomocą konfiguracji udostępnionej przez konsolę Firebase.
  2. Sprawdź, czy żądania do interfejsu Maps JS API są opatrzone tokenami Sprawdzania aplikacji:
      async function init() {
        const {Settings} = await google.maps.importLibrary('core');
        const {Map} = await google.maps.importLibrary('maps');
        const {Place} = await google.maps.importLibrary('places');
      
        const app = initializeApp({
          // Your firebase configuration object
        });
      
        // Pass your reCAPTCHA Enterprise site key to initializeAppCheck().
        const appCheck = initializeAppCheck(app, {
          provider: new ReCaptchaEnterpriseProvider(
            'abcdefghijklmnopqrstuvwxy-1234567890abcd',
          ),
      
          // Optional argument. If true, the SDK automatically refreshes App Check
          // tokens as needed.
          isTokenAutoRefreshEnabled: true,
        });
      
        Settings.getInstance().fetchAppCheckToken = () =>
            getToken(appCheck, /* forceRefresh = */ false);
      
        // Make a Places JS request
        const place = new Place({id: 'ChIJN5Nz71W3j4ARhx5bwpTQEGg'});
        await place.fetchFields({fields: ['*']});
      
        // Load a map
        map = new Map(document.getElementById("map"), {
          center: { lat: 37.4161493, lng: -122.0812166 },
          zoom: 8,
        });
      }  
      

Krok 5. 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 rzeczywistych dostawców uwierzytelniania.

Aby przetestować aplikację lokalnie:

  • Włącz dostawcę debugowania na potrzeby programowania.
  • Z logów debugowania pakietu SDK otrzymasz losowy identyfikator UUID4 wygenerowany automatycznie (w dokumentacji App Check nazywany _tokenem debugowania_). Dodaj ten token do konsoli Firebase.
  • Więcej informacji i instrukcji znajdziesz w dokumentacji usługi App Check.

Aby uruchomić aplikację w środowisku CI:

  • Wygeneruj losowy identyfikator UUID4 w konsoli Firebase.
  • Dodaj UUID4 jako token debugowania, a potem skopiuj go do tajnego magazynu, do którego testy CI będą miały dostęp podczas każdego uruchomienia testu.
  • Więcej informacji i instrukcji znajdziesz w dokumentacji usługi App Check.

Krok 6. 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 aplikacji jest zweryfikowany, nieaktualny lub nielegalny. Gdy zauważysz, że większość ruchu jest zweryfikowana, możesz włączyć egzekwowanie.

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