Zabezpieczanie klucza interfejsu API za pomocą Sprawdzania aplikacji
Sprawdzanie aplikacji Firebase chroni połączenia z Twojej aplikacji z Google Maps Platform, blokując ruch pochodzący z innych źródeł niż legalne aplikacje. W tym celu sprawdza token od dostawcy potwierdzenia, 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 jest dla mnie odpowiednie?
W większości przypadków zalecamy korzystanie ze Sprawdzania aplikacji. Nie jest ono jednak potrzebne lub nie jest obsługiwane w tych przypadkach:
- Używasz oryginalnego pakietu Places SDK. Sprawdzanie aplikacji jest obsługiwane tylko w przypadku pakietu Places SDK (nowość).
- Aplikacje prywatne lub eksperymentalne. Jeśli Twoja aplikacja nie jest publicznie dostępna, Sprawdzanie aplikacji nie jest potrzebne.
- Jeśli Twoja aplikacja jest używana tylko w komunikacji między serwerami, Sprawdzanie aplikacji nie jest potrzebne. Jeśli jednak serwer, który komunikuje się z GMP, jest używany przez klientów publicznych (np. aplikacje mobilne), rozważ użycie Sprawdzania aplikacji do ochrony tego serwera zamiast GMP.
Omówienie kroków wdrożenia
Oto ogólne kroki, które musisz wykonać, aby zintegrować aplikację ze Sprawdzaniem aplikacji:
- Dodaj Firebase do aplikacji.
- Dodaj i zainicjuj bibliotekę Sprawdzania aplikacji.
- Dodaj dostawcę tokena do aplikacji.
- Zainicjuj interfejsy API Miejsc i Sprawdzania aplikacji.
- Włącz debugowanie.
- Monitoruj żądania aplikacji i zdecyduj, czy chcesz włączyć wymuszanie.
Po zintegrowaniu ze Sprawdzaniem aplikacji możesz wyświetlać dane o ruchu w backendzie w konsoli Firebase. Te wskaźniki zawierają podział żądań na te, które są powiązane z prawidłowym tokenem Sprawdzania aplikacji, i te, które nie są. Więcej informacji znajdziesz w dokumentacji Sprawdzania aplikacji Firebase.
Gdy masz pewność, że większość żądań pochodzi z legalnych źródeł i że użytkownicy zaktualizowali aplikację do najnowszej wersji, która zawiera implementację Sprawdzania aplikacji, możesz włączyć wymuszanie. Gdy wymuszanie jest włączone, 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 wziąć pod uwagę podczas planowania integracji:
- Jeden z zalecanych przez nas dostawców potwierdzenia, reCAPTCHA Enterprise,pobiera opłaty za ponad 10 tys. ocen miesięcznie.
Drugi zalecany przez nas dostawca atestu, reCAPTCHA v3, ma limit, po przekroczeniu którego ruch nie będzie oceniany.
Możesz użyć niestandardowego dostawcy atestu, ale jest to zaawansowany przypadek użycia. Więcej informacji znajdziesz w dokumentacji Sprawdzania aplikacji.
-
Użytkownicy Twojej aplikacji będą odczuwać pewne opóźnienie podczas uruchamiania. Jednak później wszelkie okresowe ponowne potwierdzenia będą wykonywane w tle i użytkownicy nie powinni już odczuwać żadnych opóźnień. Dokładna wartość opóźnienia podczas uruchamiania zależy od wybranego dostawcy potwierdzenia.
Czas ważności tokena Sprawdzania aplikacji (czyli czas życia danych lub TTL) określa częstotliwość ponownych potwierdzeń. Ten czas można skonfigurować w konsoli Firebase. Ponowne potwierdzenie następuje po upływie około połowy czasu TTL. Więcej informacji znajdziesz w dokumentacji Firebase dotyczącej dostawcy potwierdzenia.
Integracja aplikacji ze Sprawdzaniem aplikacji
Wymagania wstępne
- Aplikacja z załadowanymi najnowszymi wersjami tygodniowymi lub kwartalnymi bibliotek Maps JS API, Core i Places.
- Projekt w chmurze z włączonymi interfejsami Maps JS API i Places API (nowość).
- 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 potwierdzenia. Te instrukcje pokazują, jak skonfigurować projekt w Firebase i dodać bibliotekę Sprawdzania aplikacji do aplikacji. Aby zainicjować Sprawdzanie aplikacji, postępuj zgodnie z podanymi przykładami kodu.
Krok 3. Wczytaj biblioteki Maps JS API
Wczytaj biblioteki Core, Maps i Places, jak pokazano w tym fragmencie kodu. Więcej informacji i instrukcji znajdziesz w dokumentacji klasy Place 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 Miejsc i Sprawdzania aplikacji
- Zainicjuj Sprawdzanie aplikacji za pomocą konfiguracji podanej w konsoli Firebase.
- Upewnij się, że żądania do Maps JS API są powiązane z 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 programować 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 możesz uniknąć używania prawdziwych dostawców potwierdzenia w kompilacji do debugowania.
Aby przetestować aplikację lokalnie:
- Aktywuj dostawcę debugowania na potrzeby programowania.
- W dziennikach 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 instrukcji znajdziesz w dokumentacji Sprawdzania aplikacji.
Aby uruchomić aplikację w środowisku CI:
- Wygeneruj losowy identyfikator UUID4 w konsoli Firebase.
- Dodaj identyfikator UUID4 jako token debugowania, a następnie skopiuj go do tajnego magazynu, do którego testy CI będą mieć dostęp podczas każdego testu.
- Więcej informacji i instrukcji znajdziesz w dokumentacji Sprawdzania aplikacji.
Krok 6. Monitoruj żądania aplikacji i zdecyduj, czy chcesz włączyć wymuszanie
Zanim zaczniesz wymuszanie, musisz się upewnić, że nie zakłócisz działania legalnych użytkowników aplikacji. Aby to zrobić, otwórz ekran danych Sprawdzania aplikacji i sprawdź, jaki odsetek ruchu w aplikacji jest zweryfikowany, nieaktualny lub nielegalny. Gdy zobaczysz, że większość ruchu jest zweryfikowana, możesz włączyć wymuszanie.
Więcej informacji i instrukcji znajdziesz w dokumentacji Sprawdzania aplikacji Firebase.