Выберите платформу: Android iOS JavaScript

Используйте App Check для защиты вашего ключа API

Firebase App Check обеспечивает защиту вызовов вашего приложения к платформе Google Карт, блокируя трафик, поступающий из источников, отличных от легитимных приложений. Это достигается путем проверки наличия токена у поставщика аттестации, например App Attest . Интеграция приложений с App Check помогает защититься от вредоносных запросов, поэтому с вас не взимается плата за несанкционированные вызовы API.

Подходит ли мне App Check?

В большинстве случаев рекомендуется использовать проверку приложений, однако в следующих случаях проверка приложений не требуется или не поддерживается:

  • Вы используете оригинальный Places SDK. Проверка приложений поддерживается только для Places SDK (новый) .
  • Частные или экспериментальные приложения. Если ваше приложение не находится в открытом доступе, проверка приложений не требуется.
  • Если ваше приложение используется только для взаимодействия сервер-сервер, App Check не требуется. Однако, если сервер, взаимодействующий с GMP, используется публичными клиентами (например, мобильными приложениями), рассмотрите возможность использования App Check для защиты этого сервера вместо GMP.
  • Рекомендованные App Check поставщики аттестации не будут работать на устройствах, которые ваш поставщик аттестации считает скомпрометированными или ненадёжными. Если вам требуется поддержка таких устройств, вы можете развернуть собственную службу аттестации. Подробнее см. в инструкциях .

Обзор этапов внедрения

На самом деле, для интеграции вашего приложения с App Check вам необходимо выполнить следующие шаги:

  1. Добавьте Firebase в свое приложение.
  2. Добавьте и инициализируйте библиотеку App Check.
  3. Добавьте поставщика токенов в свое приложение.
  4. Инициализируйте API Places и App Check.
  5. Включить отладку.
  6. Контролируйте запросы приложений и принимайте решения о применении мер пресечения.

После интеграции с App Check вы сможете просматривать метрики бэкэнд-трафика в консоли Firebase. Эти метрики позволяют разбить запросы по наличию или отсутствию действительного токена App Check. Подробнее см. в документации Firebase App Check .

Убедившись, что большинство запросов поступает из легитимных источников, и что пользователи обновили приложение до последней версии, включающей вашу реализацию App Check, вы можете включить принудительное применение. После включения принудительного применения App Check будет отклонять весь трафик без действительного токена App Check.

Соображения при планировании интеграции App Check

Вот некоторые моменты, которые следует учитывать при планировании интеграции:

  • Рекомендуемые нами поставщики подтверждения подлинности — Device Check или App Attest — подчиняются квотам и ограничениям, установленным Apple.

    Вы можете использовать собственный поставщик аттестации, но это уже более сложный случай. Подробнее см. в документации по Firebase App Check .

  • Пользователи вашего приложения будут испытывать некоторую задержку при запуске. Однако впоследствии периодическая повторная аттестация будет выполняться в фоновом режиме, и пользователи больше не будут испытывать задержку. Точная величина задержки при запуске зависит от выбранного вами поставщика аттестации.

    Срок действия токена App Check ( время жизни , или TTL) определяет частоту повторных аттестаций. Эту продолжительность можно настроить в консоли Firebase. Повторная аттестация выполняется по истечении примерно половины срока TTL. Подробнее см. в документации Firebase для вашего поставщика аттестации.

Интегрируйте свое приложение с App Check

Предпосылки и требования

Шаг 1: Добавьте Firebase в свое приложение

Следуйте инструкциям в документации разработчика Firebase , чтобы добавить Firebase в свое приложение.

При регистрации приложения вы получите файл конфигурации GoogleService-Info.plist . Добавьте этот файл без изменений в корневой каталог приложения.

Places Swift SDK для iOS

import FirebaseCore
import FirebaseAppCheck
import GooglePlacesSwift

Быстрый

import FirebaseCore
import FirebaseAppCheck
import GooglePlaces

Objective-C

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

Шаг 2: Добавьте библиотеку App Check и инициализируйте App Check.

Firebase предоставляет инструкции для каждого поставщика аттестации по умолчанию. Эти инструкции помогут вам настроить проект Firebase и добавить библиотеку App Check в ваше приложение. Для инициализации App Check следуйте предоставленным примерам кода.

  1. Следуйте инструкциям Firebase, чтобы добавить библиотеку App Check:
  2. Инициализировать проверку приложения.
    • Если вы используете App Attest, следуйте документации разработчика Firebase по App Attest.

      Следуйте инструкциям Firebase App Check , чтобы создать реализацию AppCheckProviderFactory и добавить ее в файл AppDelegate .

      Places Swift SDK для iOS

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

      Быстрый

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

      Objective-C

      YourAppCheckProviderFactory *providerFactory =
          [[YourAppCheckProviderFactory alloc] init];
      [FIRAppCheck setAppCheckProviderFactory:providerFactory];
         
    • Если вы используете Device Check, добавьте в AppDelegate следующее:

      Places Swift SDK для iOS

      AppCheck.setAppCheckProviderFactory(DeviceCheckProviderFactory())

      Быстрый

      AppCheck.setAppCheckProviderFactory(DeviceCheckProviderFactory())

      Objective-C

      [FIRAppCheck setAppCheckProviderFactory:providerFactory];
            

Шаг 3: Добавьте поставщика токенов

Создайте файл AppCheckTokenProvider (или, если вы используете Objective-C, два файла AppCheckTokenProvider.h и AppCheckTokenProvider.m ) в корневом каталоге вашего приложения. Добавьте следующие операторы импорта и определение класса:

Places Swift SDK для 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
  }
}
      

Быстрый

// 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

Шаг 4: Инициализируйте API Places и App Check

  1. В файле AppDelegate инициализируйте API Places:

    Places Swift SDK для iOS

    PlacesClient.provideAPIKey("YOUR_API_KEY")

    Быстрый

    GMSPlacesClient.provideAPIKey("YOUR_API_KEY")

    Objective-C

    [GMSPlacesClient provideAPIKey:@"YOUR_API_KEY"];
  2. Затем инициализируйте API проверки приложений:

    Places Swift SDK для iOS

    PlacesClient.setAppCheckTokenProvider(AppCheckTokenProvider())

    Быстрый

    GMSPlacesClient.setAppCheckTokenProvider(AppCheckTokenProvider())

    Objective-C

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

Шаг 5: Включите отладку (необязательно)

Если вы хотите разрабатывать и тестировать приложение локально или запускать его в среде непрерывной интеграции (CI), вы можете создать отладочную сборку приложения, которая использует отладочный секрет для получения действительных токенов App Check. Это позволяет избежать использования реальных поставщиков аттестации в отладочной сборке.

Чтобы протестировать приложение в симуляторе или на тестовом устройстве:

  • Создайте и настройте фабрику поставщиков отладки App Check.

    Этот пример кода обрабатывает как отладочный, так и производственный сценарии:

    Places Swift SDK для iOS

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

    Быстрый

    #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];
    }
        
  • Включите ведение журнала в вашем проекте Xcode, запустите приложение и найдите локальный токен отладки в журнале.
  • Добавьте этот токен в консоль Firebase.
  • Дополнительную информацию и инструкции см. в документации App Check .

Чтобы запустить приложение в среде непрерывной интеграции:

  • Создайте токен отладки в консоли Firebase и добавьте его в защищенное хранилище ключей вашей системы CI.
  • В Xcode добавьте в схему тестирования переменную среды с именем FIRAAppCheckDebugToken и $(APP_CHECK_DEBUG_TOKEN) (или аналогичным) в качестве значения.
  • В тестовом скрипте CI передайте токен отладки как среду
  • Создайте и настройте фабрику поставщиков отладки App Check.

    Этот пример кода обрабатывает как отладочный, так и производственный сценарии:

    Places Swift SDK для iOS

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

    Быстрый

    #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)
  • Дополнительную информацию и инструкции см. в документации App Check .

Шаг 6: Отслеживайте запросы приложений и принимайте решение о применении мер принудительного характера

Прежде чем начать принудительное применение, убедитесь, что это не будет мешать легальным пользователям вашего приложения. Для этого откройте экран показателей проверки приложений, чтобы узнать, какой процент трафика вашего приложения проверен, устарел или является нелегитимным. Как только вы увидите, что большая часть трафика проверена, вы можете включить принудительное применение.

Дополнительную информацию и инструкции см. в документации по Firebase App Check .