Zabezpieczanie klucza interfejsu API za pomocą Sprawdzania 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 reCAPTCHA Enterprise. Integracja aplikacji ze Sprawdzaniem aplikacji pomaga chronić przed szkodliwymi żądaniami, dzięki czemu nie są naliczane opłaty za nieautoryzowane wywołania interfejsu API.
Czy App Check to odpowiednie rozwiązanie dla mnie?
W większości przypadków zalecamy korzystanie ze Sprawdzania aplikacji, ale nie jest ono potrzebne lub obsługiwane w tych sytuacjach:
- Używasz oryginalnego pakietu SDK Miejsc. Sprawdzanie aplikacji jest obsługiwane tylko w pakiecie Places SDK (nowym).
- aplikacje prywatne lub eksperymentalne; Jeśli aplikacja nie jest dostępna publicznie, sprawdzanie aplikacji nie jest potrzebne.
- Jeśli aplikacja jest używana tylko w komunikacji serwer-serwer, funkcja 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), rozważ użycie funkcji Sprawdzanie aplikacji do ochrony tego serwera zamiast GMP.
Omówienie etapów wdrażania
Ogólnie rzecz biorąc, aby zintegrować aplikację ze Sprawdzaniem aplikacji, musisz wykonać te czynności:
- Dodaj Firebase do aplikacji.
- Dodaj i zainicjuj bibliotekę Sprawdzania aplikacji.
- Dodaj dostawcę tokenów do aplikacji.
- Zainicjuj interfejsy Places API i Sprawdzanie aplikacji.
- Włącz debugowanie.
- Monitorowanie próśb o dostęp do aplikacji i podejmowanie decyzji o egzekwowaniu zasad.
Po zintegrowaniu ze Sprawdzaniem aplikacji możesz wyświetlać w konsoli Firebase dane o ruchu w backendzie. Te dane umożliwiają zestawienie żądań według tego, czy towarzyszy im prawidłowy token Sprawdzania aplikacji. Więcej informacji znajdziesz w dokumentacji Sprawdzania aplikacji Firebase.
Gdy upewnisz się, że większość żądań pochodzi z wiarygodnych ź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.
Kwestie do rozważenia podczas planowania integracji ze Sprawdzaniem aplikacji
Oto kilka kwestii, które warto rozważyć podczas planowania integracji:
- Jeden z zalecanych przez nas dostawców atestów, reCAPTCHA Enterprise,pobiera opłaty za ponad 10 tys. ocen miesięcznie.
Inny zalecany przez nas dostawca atestów, reCAPTCHA v3, ma limit, po którego przekroczeniu ruch nie będzie oceniany.
Możesz użyć niestandardowego dostawcy atestów, ale jest to zaawansowany przypadek użycia. Więcej informacji znajdziesz w dokumentacji Sprawdzania aplikacji.
-
Użytkownicy aplikacji mogą zauważyć pewne opóźnienie podczas uruchamiania. Jednak później okresowe ponowne potwierdzanie będzie odbywać się w tle i użytkownicy nie powinni już odczuwać żadnych opóźnień. Dokładne opóźnienie podczas uruchamiania zależy od wybranego dostawcy atestów.
Czas ważności tokena Sprawdzania aplikacji (czas życia lub TTL) określa częstotliwość ponownego potwierdzania. 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.
Integracja aplikacji ze Sprawdzaniem aplikacji
Wymagania wstępne i wymagania
- aplikację z załadowaną najnowszą tygodniową lub kwartalną wersją interfejsu Maps JS API oraz bibliotek Core i Places;
- Projekt w chmurze z włączonymi interfejsami Maps JS i Places API (New).
- Musisz być właścicielem aplikacji w konsoli Cloud.
- Potrzebny będzie identyfikator projektu aplikacji z konsoli Cloud.
Krok 1. Dodaj Firebase do aplikacji
Aby dodać Firebase do aplikacji, postępuj zgodnie z instrukcjami podanymi w dokumentacji Firebase dla deweloperów.
Krok 2. Dodaj bibliotekę Sprawdzania aplikacji i zainicjuj tę funkcję
Firebase udostępnia instrukcje dla każdego domyślnego dostawcy atestów. Z tych instrukcji dowiesz się, jak skonfigurować projekt w Firebase i dodać do aplikacji bibliotekę Sprawdzania aplikacji. Aby zainicjować Sprawdzanie aplikacji, postępuj zgodnie z podanymi przykładowymi kodami.
Krok 3. Wczytaj biblioteki interfejsu Maps JavaScript API
Wczytaj biblioteki podstawowe, Mapy i Miejsca, jak pokazano we fragmencie poniżej. Więcej informacji i instrukcje znajdziesz w dokumentacji klasy Place w 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. Zainicjuj interfejsy Places API i App Check API
- Zainicjuj Sprawdzanie aplikacji, korzystając z konfiguracji podanej w konsoli Firebase.
- Upewnij się, że żądaniom wysyłanym do interfejsu Maps JS API towarzyszą tokeny funkcji Sprawdzanie 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 tworzyć i testować aplikację lokalnie lub uruchamiać ją w trybie ciągłej integracji (CI), możesz utworzyć kompilację do debugowania, która używa obiektu tajnego do debugowania, aby uzyskiwać prawidłowe tokeny Sprawdzania aplikacji. Dzięki temu nie musisz używać prawdziwych dostawców atestów w kompilacji do debugowania.
Aby przetestować aplikację lokalnie:
- Aktywuj dostawcę debugowania na potrzeby programowania.
- Z dzienników debugowania pakietu SDK otrzymasz automatycznie wygenerowany losowy identyfikator UUID4 (w dokumentacji Sprawdzania aplikacji nazywany _tokenem debugowania_). Dodaj ten token do konsoli Firebase.
- Więcej informacji i instrukcje znajdziesz w dokumentacji Sprawdzania aplikacji.
Aby uruchomić aplikację w środowisku CI:
- Wygeneruj losowy identyfikator UUID4 w konsoli Firebase.
- Dodaj UUID4 jako token debugowania, a następnie skopiuj go do magazynu obiektów tajnych, do którego testy CI będą miały dostęp podczas każdego uruchomienia testu.
- Więcej informacji i instrukcje znajdziesz w dokumentacji Sprawdzania aplikacji.
Krok 6. Monitoruj prośby o dostęp do aplikacji i podejmuj decyzje dotyczące egzekwowania zasad
Zanim zaczniesz egzekwować zasady, upewnij się, że nie zakłócisz działania aplikacji u jej uprawnionych użytkowników. Aby to zrobić, otwórz ekran danych Sprawdzania aplikacji i sprawdź, jaki odsetek ruchu w aplikacji jest zweryfikowany, nieaktualny lub nieuprawniony. Gdy zobaczysz, że większość ruchu jest zweryfikowana, możesz włączyć egzekwowanie.
Więcej informacji i instrukcje znajdziesz w dokumentacji Sprawdzania aplikacji Firebase.