Wybierz platformę: Android iOS JavaScript

Zabezpieczanie klucza interfejsu API za pomocą usługi App Check

Sprawdzanie aplikacji Firebase chroni wywołania z aplikacji do Google Maps Platform, blokując ruch pochodzący ze źródeł innych niż uprawnione aplikacje. Weryfikacja odbywa się przez sprawdzenie tokena od dostawcy atestów, takiego jak App Attest. 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 App Check to odpowiednie rozwiązanie dla mnie?

W większości przypadków zalecana jest usługa App Check, ale w tych przypadkach nie jest ona potrzebna lub nie jest obsługiwana:

  • Używasz oryginalnego pakietu SDK Miejsc. Weryfikacja aplikacji jest obsługiwana tylko w przypadku pakietu SDK Miejsc (nowego).
  • aplikacje prywatne lub eksperymentalne; Jeśli aplikacja nie jest dostępna publicznie, usługa App Check nie jest potrzebna.
  • Jeśli aplikacja jest używana tylko w komunikacji serwer-serwer, usługa App Check 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 App Check do ochrony tego serwera.
  • Zalecani przez App Check dostawcy atestów nie będą działać na urządzeniach uznanych przez nich za naruszone lub niezaufane. Jeśli chcesz obsługiwać takie urządzenia, możesz wdrożyć niestandardową usługę atestowania. Więcej informacji znajdziesz w instrukcjach.

Omówienie etapów wdrażania

Aby zintegrować aplikację z App Check, wykonaj te czynności:

  1. Dodaj Firebase do swojej aplikacji.
  2. Dodaj i zainicjuj bibliotekę App Check.
  3. Dodaj dostawcę tokenów do aplikacji.
  4. Zainicjuj interfejsy Places API i App Check API.
  5. Włącz debugowanie.
  6. Monitoruj żądania aplikacji i podejmuj decyzje dotyczące egzekwowania zasad.

Po zintegrowaniu z App Check 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ł i że użytkownicy zaktualizowali aplikację do najnowszej wersji, która zawiera Twoją implementację weryfikacji 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 z App Check

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

  • Zalecani przez nas dostawcy atestów, Device CheckApp Attest, podlegają limitom i ograniczeniom określonym przez Apple.

    Możesz użyć niestandardowego dostawcy atestów, ale jest to zaawansowany przypadek użycia. Więcej informacji znajdziesz w dokumentacji Sprawdzania aplikacji Firebase.

  • Użytkownicy Twojej aplikacji mogą zauważyć pewne opóźnienia podczas jej 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ść ponownego potwierdzania 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 i wymagania

  • Aplikacja z zainstalowanym pakietem SDK Miejsc w wersji 9.2 lub nowszej.
  • Identyfikator pakietu aplikacji.
  • Identyfikator zespołu z Apple Member Center w sekcji Membership (Członkostwo).
  • Jeśli planujesz korzystać z usługi Device Check, potrzebujesz pliku klucza prywatnegoidentyfikatora klucza.
  • 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.

Po zarejestrowaniu aplikacji otrzymasz plik konfiguracyjny GoogleService-Info.plist. Dodaj ten plik w niezmienionej postaci do katalogu głównego aplikacji.

Pakiet SDK Miejsc w Swift na iOS

import FirebaseCore
import FirebaseAppCheck
import GooglePlacesSwift

Swift

import FirebaseCore
import FirebaseAppCheck
import GooglePlaces

Objective-C

@import FirebaseCore;      
@import FirebaseAppCheck;
@import GooglePlaces;

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

Firebase udostępnia instrukcje dla każdego domyślnego dostawcy atestów. Z tych instrukcji dowiesz się, jak skonfigurować projekt Firebase i dodać do aplikacji bibliotekę App Check. Aby zainicjować App Check, postępuj zgodnie z podanymi przykładami kodu.

  1. Wykonaj instrukcje Firebase, aby dodać bibliotekę sprawdzania aplikacji:
  2. Zainicjuj Sprawdzanie aplikacji.
    • Jeśli używasz App Attest, postępuj zgodnie z dokumentacją dla deweloperów Firebase dotyczącą App Attest.

      Wykonaj instrukcje dotyczące Sprawdzania aplikacji w Firebase, aby utworzyć implementację AppCheckProviderFactory i dodać ją do pliku AppDelegate.

      Pakiet SDK Miejsc w Swift na iOS

      let providerFactory = YourAppCheckProviderFactory()
      AppCheck.setAppCheckProviderFactory(providerFactory)

      Swift

      let providerFactory = YourAppCheckProviderFactory()
      AppCheck.setAppCheckProviderFactory(providerFactory)

      Objective-C

      YourAppCheckProviderFactory *providerFactory =
          [[YourAppCheckProviderFactory alloc] init];
      [FIRAppCheck setAppCheckProviderFactory:providerFactory];
         
    • Jeśli używasz Device Check, dodaj do pliku AppDelegate te informacje:

      Pakiet SDK Miejsc w Swift na iOS

      AppCheck.setAppCheckProviderFactory(DeviceCheckProviderFactory())

      Swift

      AppCheck.setAppCheckProviderFactory(DeviceCheckProviderFactory())

      Objective-C

      [FIRAppCheck setAppCheckProviderFactory:providerFactory];
            

Krok 3. Dodaj dostawcę tokenów

Utwórz plik o nazwie AppCheckTokenProvider (lub, jeśli używasz języka Objective-C, 2 pliki o nazwach AppCheckTokenProvider.hAppCheckTokenProvider.m) w katalogu głównym aplikacji. Dodaj te instrukcje importu i definicję klasy:

Pakiet SDK Miejsc w Swift na iOS

// AppCheckTokenProvider.swift

import FirebaseAppCheck
import Foundation
import GooglePlacesSwift
      
struct TokenProvider: AppCheckTokenProvider {
  func fetchAppCheckToken() async throws -> String {
    return try await AppCheck.appCheck().token(forcingRefresh: false).token
  }
}
      

Swift

// AppCheckTokenProvider.swift

import FirebaseAppCheck
import Foundation
import GooglePlaces

class AppCheckTokenProvider: NSObject, GMSPlacesAppCheckTokenProvider {
  func fetchAppCheckToken() async throws -> String {
    return try await AppCheck.appCheck().token(forcingRefresh: false).token
  }
}

Objective-C

// AppCheckTokenProvider.h

@import Foundation;
@import GooglePlaces;

@interface AppCheckTokenProvider : NSObject <GMSPlacesAppCheckTokenProvider>
@end

// AppCheckTokenProvider.m

#import "AppCheckTokenProvider.h"

@import FirebaseAppCheck;

@implementation AppCheckTokenProvider

- (void)fetchAppCheckTokenWithCompletion:(nonnull GMSAppCheckTokenCompletion)completion {
  [[FIRAppCheck appCheck]
      tokenForcingRefresh:NO
               completion:^(FIRAppCheckToken *_Nullable token, NSError *_Nullable error) {
                 if (token) {
                   completion(token.token, nil);
                 } else {
                   completion(nil, error);
                 }
               }];
}

@end

Krok 4. Zainicjuj interfejsy API Miejsca i App Check

  1. W pliku AppDelegate zainicjuj interfejs Places API:

    Pakiet SDK Miejsc w Swift na iOS

    PlacesClient.provideAPIKey("YOUR_API_KEY")

    Swift

    GMSPlacesClient.provideAPIKey("YOUR_API_KEY")

    Objective-C

    [GMSPlacesClient provideAPIKey:@"YOUR_API_KEY"];
  2. Następnie zainicjuj interfejs App Check API:

    Pakiet SDK Miejsc w Swift na iOS

    PlacesClient.setAppCheckTokenProvider(AppCheckTokenProvider())

    Swift

    GMSPlacesClient.setAppCheckTokenProvider(AppCheckTokenProvider())

    Objective-C

    [GMSPlacesClient setAppCheckTokenProvider:[[AppCheckTokenProvider alloc] init]];

Krok 5. Włącz debugowanie (opcjonalnie)

Jeśli chcesz tworzyć i testować aplikację lokalnie lub uruchamiać ją w środowisku ciągłej integracji (CI), możesz utworzyć wersję debugowania aplikacji, która używa tajnego klucza debugowania do uzyskiwania prawidłowych tokenów weryfikacji aplikacji. Dzięki temu w wersji debugowania nie musisz używać prawdziwych dostawców atestów.

Aby przetestować aplikację w symulatorze lub na urządzeniu testowym:

  • Utwórz i ustaw fabrykę dostawcy debugowania App Check.

    Ten przykładowy kod obsługuje zarówno scenariusze debugowania, jak i produkcyjne:

    Pakiet SDK Miejsc w Swift na iOS

    #if targetEnvironment(simulator)
          let providerFactory = AppCheckDebugProviderFactory()
    #else
          let providerFactory = YourAppCheckProviderFactory()
    #endif

    Swift

    #if targetEnvironment(simulator)
          let providerFactory = AppCheckDebugProviderFactory()
    #else
          let providerFactory = YourAppCheckProviderFactory()
    #endif

    Objective-C

    if (targetEnvironment == simulator){
    
    FIRAppCheckDebugProviderFactory *providerFactory =
          [[FIRAppCheckDebugProviderFactory alloc] init];
    [FIRAppCheck setAppCheckProviderFactory:providerFactory];
    }
    
    else {
    
    YourAppCheckProviderFactory *providerFactory =
          [[YourAppCheckProviderFactory alloc] init];
    [FIRAppCheck setAppCheckProviderFactory:providerFactory];
    }
        
  • Włącz logowanie w projekcie Xcode, uruchom aplikację i znajdź w dzienniku lokalny token debugowania.
  • Dodaj ten token do konsoli Firebase.
  • Więcej informacji i instrukcje znajdziesz w dokumentacji usługi App Check.

Aby uruchomić aplikację w środowisku CI:

  • Utwórz token debugowania w konsoli Firebase i dodaj go do bezpiecznego magazynu kluczy systemu CI.
  • W Xcode dodaj do schematu testowania zmienną środowiskową o nazwie FIRAAppCheckDebugToken i wartości $(APP_CHECK_DEBUG_TOKEN) (lub podobnej).
  • W skrypcie testu CI przekaż token debugowania jako środowisko.
  • Utwórz i ustaw fabrykę dostawcy debugowania App Check.

    Ten przykładowy kod obsługuje zarówno scenariusze debugowania, jak i produkcyjne:

    Pakiet SDK Miejsc w Swift na iOS

    #if DEBUG
      let providerFactory = AppCheckDebugProviderFactory()
    #else
      let providerFactory = YourAppCheckProviderFactory()
    #endif
    AppCheck.setAppCheckProviderFactory(providerFactory)
      

    Swift

    #if DEBUG
      let providerFactory = AppCheckDebugProviderFactory()
    #else
      let providerFactory = YourAppCheckProviderFactory()
    #endif
    AppCheck.setAppCheckProviderFactory(providerFactory)
      

    Objective-C

    #if DEBUG
    id<FIRAppCheckProviderFactory> providerFactory =
        [[FIRAppCheckDebugProviderFactory alloc] init];
    #else  // DEBUG
    id<FIRAppCheckProviderFactory> providerFactory =
        [[YourAppCheckProviderFactory alloc] init];
    #endif  // DEBUG
    AppCheck.setAppCheckProviderFactory(providerFactory)
  • Więcej informacji i instrukcje znajdziesz w dokumentacji usługi App Check.

Krok 6. Monitoruj prośby dotyczące aplikacji i podejmuj decyzje o egzekwowaniu zasad

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 App Check, 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.