Используйте проверку приложений для защиты вашего ключа API (новинка)

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

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

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

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

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

В общих чертах, это шаги, которые вы должны выполнить, чтобы интегрировать свое приложение с App Check:

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

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

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

Что следует учитывать при планировании интеграции App Check

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

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

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

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

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

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

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

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

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

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

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

Информацию об использовании Play Integrity, поставщика аттестации по умолчанию, см. в разделе Начало работы с App Check с 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 в файл build.gradle .
  • Настройте проверку приложений для использования фабрики поставщиков отладки в сборке отладки.
  • Запустите приложение, которое создаст локальный токен отладки. Добавьте этот токен в консоль Firebase.
  • Дополнительную информацию и инструкции см. в документации App Check .

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

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

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

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

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