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 reCAPTCHA Enterprise. 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.
Omówienie etapów wdrażania
Aby zintegrować aplikację z funkcją Sprawdzanie aplikacji, wykonaj te czynności:
- Dodaj Firebase do swojej aplikacji.
- Dodaj i zainicjuj bibliotekę Sprawdzania aplikacji.
- Dodaj dostawcę tokenów do aplikacji.
- Zainicjuj interfejsy API Miejsc i Sprawdzania aplikacji.
- Włącz debugowanie.
- 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:
- Jeden z zalecanych przez nas dostawców atestów, reCAPTCHA Enterprise,pobiera opłaty za ponad 10 tys. ocen miesięcznie.
Drugi zalecany przez nas dostawca atestów, reCAPTCHA v3, ma limit, po przekroczeniu którego 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 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 załadowanymi najnowszymi tygodniowymi lub kwartalnymi wersjami interfejsu Maps JS API oraz bibliotek Core i Places.
- Projekt w chmurze z włączonymi interfejsami API JavaScript Map Google i Places API (nowy).
- 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
Firebase udostępnia instrukcje dla każdego domyślnego dostawcy atestów. Z tych instrukcji dowiesz się, jak skonfigurować projekt w Firebase i dodać bibliotekę Sprawdzania aplikacji do aplikacji. Aby zainicjować Sprawdzanie aplikacji, skorzystaj z podanych przykładów kodu.
Krok 3. Wczytaj biblioteki interfejsu Maps JS API
Załaduj biblioteki podstawowe, Mapy i Miejsca, jak pokazano w tym fragmencie kodu. Więcej informacji i instrukcje 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. Zainicjuj interfejsy API Miejsca i Sprawdzanie aplikacji
- Zainicjuj Sprawdzanie aplikacji za pomocą konfiguracji podanej przez konsolę Firebase.
- Sprawdź, czy żądaniom wysyłanym do interfejsu Maps JS API towarzyszą tokeny 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 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 przetestować aplikację lokalnie:
- Aktywuj dostawcę debugowania na potrzeby programowania.
- Z dzienników debugowania pakietu SDK otrzymasz automatycznie wygenerowany losowy identyfikator UUID4 (w dokumentacji usługi Sprawdzanie aplikacji nazywany _tokenem 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:
- Wygeneruj losowy identyfikator UUID4 w konsoli Firebase.
- Dodaj UUID4 jako token debugowania, a następnie skopiuj go do tajnego magazynu, do którego testy CI będą uzyskiwać dostęp podczas każdego testu.
- Więcej informacji i instrukcje znajdziesz w dokumentacji usługi Sprawdzanie aplikacji.
Krok 6. Monitoruj prośby aplikacji i podejmuj decyzje dotyczące egzekwowania
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.