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

Как защитить ключ API с помощью Проверки приложений

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

Подходит ли мне Проверка приложений?

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

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

Обзор этапов реализации

Вот основные шаги, которые вам нужно будет выполнить, чтобы интегрировать приложение с Проверкой приложений:

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

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

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

Что нужно учитывать при планировании интеграции с Проверкой приложений

При планировании интеграции необходимо учитывать следующее:

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

    Вы также можете использовать стороннего поставщика аттестации, но это более сложный вариант. Подробнее о том, как реализовать собственного поставщика проверки приложений…

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

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

Интегрируйте приложение с Проверкой приложений

Требования

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

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

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

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

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

  1. Если вы ещё этого не сделали, интегрируйте Places SDK в свое приложение.
  2. Затем инициализируйте Проверку приложений и клиент 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. Добавьте поставщика токенов

После инициализации Places API вызовите 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. Включите отладку (необязательно)

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

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

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

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

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

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

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

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