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

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

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

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

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

  • Вы используете оригинальный Places SDK. Функция проверки приложений (App Check) поддерживается только для Places SDK (новая версия) .
  • Частные или экспериментальные приложения. Если ваше приложение недоступно для публичного доступа, проверка приложений не требуется.
  • Если ваше приложение используется только для взаимодействия между серверами, 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 , имеет ограничение на количество вызовов в день для своего стандартного уровня использования API. Для получения дополнительной информации об ограничениях на количество вызовов см. страницу «Настройка» в документации для разработчиков Google Play Integrity.

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

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

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

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

Предварительные условия и требования

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

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

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

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

Для получения информации об использовании 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: Добавьте поставщика токенов.

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

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

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

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

Для запуска вашего приложения в среде непрерывной интеграции (CI):

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

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

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

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