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

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

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

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

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

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

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

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

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

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

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

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

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

  • Рекомендуемый нами поставщик аттестации Play Integrity имеет дневной лимит вызовов для своего уровня использования Standard API. Для получения дополнительной информации о лимитах вызовов см. страницу настройки в документации разработчика Google Play Integrity.

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

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

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

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

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

  • Приложение с интегрированным Places SDK версии 4.1 или более поздней.
  • Отпечаток SHA-256 для вашего приложения.
  • Имя пакета вашего приложения.
  • Вы должны быть владельцем приложения в Cloud Console.
  • Вам понадобится идентификатор проекта приложения из Cloud Console.

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

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

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

Информацию об использовании Play Integrity, поставщика подтверждения по умолчанию, см. в разделе Начало работы с проверкой приложений с помощью Play Integrity на Android .

  1. Если вы еще этого не сделали, интегрируйте Places SDK в свое приложение .
  2. Далее инициализируйте App Check и клиент Places .

    // Initialize App Check
    FirebaseApp.initializeApp(/* context= */ this);
    FirebaseAppCheck firebaseAppCheck = FirebaseAppCheck.getInstance();
    firebaseAppCheck.installAppCheckProviderFactory(
            PlayIntegrityAppCheckProviderFactory.getInstance());
      
    // Initialize Places SDK
    Places.initializeWithNewPlacesApiEnabled(context, API_KEY);
    PlacesClient client = Places.createClient(context);.

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

После инициализации API Places вызовите setPlacesAppCheckTokenProvider() чтобы установить PlacesAppCheckTokenProvider .

Places.initializeWithNewPlacesApiEnabled(context, API_KEY);
Places.setPlacesAppCheckTokenProvider(new TokenProvider());
PlacesClient client = Places.createClient(context);.

Вот пример реализации интерфейса извлекателя токенов:

  /** Sample client implementation of App Check token fetcher interface. */
  static class TokenProvider implements PlacesAppCheckTokenProvider {
    @Override
    public ListenableFuture<String> fetchAppCheckToken() {
      SettableFuture<String> future = SettableFuture.create();
      FirebaseAppCheck.getInstance()
          .getAppCheckToken(false)
          .addOnSuccessListener(
              appCheckToken -> {
                future.set(appCheckToken.getToken());
              })
          .addOnFailureListener(
              ex -> {
                future.setException(ex);
              });

      return future;
    }
  }

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

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

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

  • Добавьте библиотеку App Check в файл build.gradle .
  • Настройте App Check для использования фабрики поставщиков отладки в вашей отладочной сборке.
  • Запустите приложение, которое создаст локальный токен отладки. Добавьте этот токен в консоль Firebase.
  • Дополнительную информацию и инструкции см. в документации по проверке приложений .

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

  • Создайте токен отладки в консоли Firebase и добавьте его в защищенное хранилище ключей вашей системы CI.
  • Добавьте библиотеку App Check в файл build.gradle .
  • Настройте вариант сборки CI для использования отладочного токена.
  • Оберните код в тестовых классах, которому требуется токен App Check, с помощью DebugAppCheckTestHelper .
  • Дополнительную информацию и инструкции см. в документации по проверке приложений .

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

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

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