Используйте App Check для обеспечения безопасности Navigation SDK для Android.

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

Зачем использовать App Check?

App Check защищает две отдельные области Navigation SDK для Android: основную функциональность навигации и систему сообщений о сбоях.

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

Сообщения о сбоях

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

Почему App Check важен для составления отчетов:

  • Высокий уровень доверия к информации о перекрытиях дорог: события, влияющие на маршрут, такие как перекрытие дорог, могут существенно изменить поведение водителей при выборе маршрута. Для защиты карты от потенциального вандализма, спама или неточной информации инфраструктура модерации Google для сообщений о перекрытиях дорог опирается на надежные сигналы целостности устройств и приложений.
  • Как App Check проверяет отчеты: Отчеты и голоса пользователей, отправляемые из Navigation SDK для Android, содержат токен App Check, который используется бэкэндом Google для проверки достоверности обратной связи, повышая уровень доверия и позволяя оценить ее влияние на карту в реальном времени.
  • Последствия отсутствия проверки приложения: Отчеты, отправленные без действительного токена проверки приложения, оцениваются по модели с более низким уровнем доверия и могут обрабатываться исключительно как скрытые сигналы. Это означает, что хотя ваши пользователи по-прежнему могут отправлять отчеты и голосовать за них, их отчеты с меньшей вероятностью будут видны на карте или повлияют на маршруты других водителей и потребуют дополнительной проверки.

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

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

  • Частные или экспериментальные приложения: если ваше приложение недоступно для публичного доступа, проверка приложений не требуется.
  • Подозрительные устройства: Рекомендуемые поставщики аттестации предотвращают запуск Navigation SDK для Android на ненадежных устройствах, таких как рутированные или взломанные телефоны. Для поддержки таких устройств разверните собственный поставщик аттестации .
  • Устройства Android без GMS: Для обеспечения целостности Play на устройствах Android должна быть установлена ​​операционная система Google Mobile Services (GMS). Если вы планируете поддерживать устройства Android без GMS, разверните собственный поставщик аттестации .

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

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

  1. Добавьте Firebase в свое приложение.
  2. Добавьте библиотеку App Check и инициализируйте App Check.
  3. Добавьте поставщика токенов. На этом шаге будет задействован выбранный вами поставщик аттестации для проверки целостности устройства или приложения.
  4. Инициализируйте API навигации и проверки приложений.
  5. Включите отладку. Это полезно во время разработки или в средах непрерывной интеграции (CI).
  6. Перед включением проверки приложений отслеживайте запросы к вашему приложению. Таким образом, вы сможете беспрепятственно применять проверку приложений, не мешая пользователям.

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

  • Квоты поставщиков аттестации: Рекомендуемый нами поставщик аттестации, Play Integrity, имеет ежедневное ограничение на количество вызовов для своего уровня использования Standard API. Для получения дополнительной информации об ограничениях на количество вызовов см. страницу «Настройка» в документации для разработчиков Google Play Integrity.
  • Задержка при запуске: В большинстве случаев пользователи не будут испытывать задержек при обычном использовании, поскольку токены App Check кэшируются на устройстве. Система автоматически обновляет токены App Check в фоновом режиме перед истечением срока их действия для обеспечения бесперебойной работы. Однако, если действительный токен App Check отсутствует, пользователи вашего приложения будут испытывать некоторую задержку при запуске. Например, эта задержка возникает при холодном запуске, когда кэшированный токен просрочен или отсутствует.
  • Время жизни токена (TTL): Время жизни токена App Check определяет период, в течение которого он действителен до необходимости обновления. Вы можете настроить этот параметр в консоли Firebase от 30 минут до 7 дней. В качестве надежного базового значения рекомендуется установить значение в 1 час, но SDK автоматически пытается выполнить фоновое обновление примерно через половину времени жизни токена. Пошаговые инструкции по работе с консолью см. в документации Firebase App Check .

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

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

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

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

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

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

Добавьте зависимость App Check в файл build.gradle вашего приложения:

Groovy (build.gradle)

dependencies {
    // Import the Firebase BoM
    implementation platform('com.google.firebase:firebase-bom:34.17.0')
    // Add the dependency for the App Check library with Play Integrity
    implementation 'com.google.firebase:firebase-appcheck-playintegrity'
}

Выполните инициализацию проверки приложения в классе приложения или в главном окне активности:

Java

import com.google.firebase.FirebaseApp;
import com.google.firebase.appcheck.FirebaseAppCheck;
import com.google.firebase.appcheck.playintegrity.PlayIntegrityAppCheckProviderFactory;

// Initialize Firebase App
FirebaseApp.initializeApp(/* context= */ this);

// Initialize App Check
FirebaseAppCheck firebaseAppCheck = FirebaseAppCheck.getInstance();
firebaseAppCheck.installAppCheckProviderFactory(
    PlayIntegrityAppCheckProviderFactory.getInstance());

Котлин

import com.google.firebase.Firebase
import com.google.firebase.appcheck.appCheck
import com.google.firebase.appcheck.playintegrity.PlayIntegrityAppCheckProviderFactory
import com.google.firebase.initialize

// Initialize Firebase App
Firebase.initialize(context = this)

// Initialize App Check
Firebase.appCheck.installAppCheckProviderFactory(
    PlayIntegrityAppCheckProviderFactory.getInstance(),
)

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

Создайте реализацию интерфейса MapsAppCheckTokenProvider . Этот провайдер асинхронно получает токены App Check из Firebase App Check и передает их в сетевой стек Navigation SDK для Android, используя MapsAppCheckTokenCallback :

Java

import com.google.android.gms.maps.MapsAppCheckTokenCallback;
import com.google.android.gms.maps.MapsAppCheckTokenProvider;
import com.google.firebase.appcheck.FirebaseAppCheck;

public class NavigationTokenProvider implements MapsAppCheckTokenProvider {
  @Override
  public void fetchToken(MapsAppCheckTokenCallback callback) {
    FirebaseAppCheck.getInstance()
        .getAppCheckToken(false) // forcingRefresh = false
        .addOnSuccessListener(
            tokenResult -> {
              String token = tokenResult.getToken();
              callback.onSuccess(token);
            })
        .addOnFailureListener(
            e -> {
              callback.onFailure();
            });
  }
}

Котлин

import com.google.android.gms.maps.MapsAppCheckTokenCallback
import com.google.android.gms.maps.MapsAppCheckTokenProvider
import com.google.firebase.appcheck.FirebaseAppCheck

class NavigationTokenProvider : MapsAppCheckTokenProvider {
    override fun fetchToken(callback: MapsAppCheckTokenCallback) {
        FirebaseAppCheck.getInstance()
            .getAppCheckToken(false)
            .addOnSuccessListener { tokenResult ->
                callback.onSuccess(tokenResult.token)
            }
            .addOnFailureListener {
                callback.onFailure()
            }
    }
}

Шаг 4: Инициализация API навигации и проверки приложений.

Инициализируйте SDK навигации для Android и зарегистрируйте экземпляр вашего унифицированного поставщика токенов, используя MapsApiSettings.setAppCheckTokenProvider() :

Java

import com.google.android.gms.maps.MapsApiSettings;

// Register your App Check token provider before initializing Navigation SDK for Android
MapsApiSettings.setAppCheckTokenProvider(context, new NavigationTokenProvider());

Котлин

import com.google.android.gms.maps.MapsApiSettings

// Register your App Check token provider before initializing Navigation SDK for Android
MapsApiSettings.setAppCheckTokenProvider(context, NavigationTokenProvider())

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

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

  1. Добавьте зависимость отладчика в файл build.gradle вашего приложения:

    Groovy (build.gradle)

    dependencies {
        implementation 'com.google.firebase:firebase-appcheck-debug'
    }
  2. Настройте проверку приложения, чтобы использовать фабрику поставщиков отладки в ваших отладочных сборках:

    Java

    import com.google.firebase.appcheck.debug.DebugAppCheckProviderFactory;
    import com.google.firebase.appcheck.playintegrity.PlayIntegrityAppCheckProviderFactory;
    
    if (BuildConfig.DEBUG) {
        firebaseAppCheck.installAppCheckProviderFactory(
            DebugAppCheckProviderFactory.getInstance()
        );
    } else {
        firebaseAppCheck.installAppCheckProviderFactory(
            PlayIntegrityAppCheckProviderFactory.getInstance()
        );
    }

    Котлин

    import com.google.firebase.Firebase
    import com.google.firebase.appcheck.appCheck
    import com.google.firebase.appcheck.debug.DebugAppCheckProviderFactory
    import com.google.firebase.appcheck.playintegrity.PlayIntegrityAppCheckProviderFactory
    
    if (BuildConfig.DEBUG) {
        Firebase.appCheck.installAppCheckProviderFactory(
            DebugAppCheckProviderFactory.getInstance(),
        )
    } else {
        Firebase.appCheck.installAppCheckProviderFactory(
            PlayIntegrityAppCheckProviderFactory.getInstance(),
        )
    }
  3. Запустите приложение на эмуляторе или отладочном устройстве. App Check выведет локальный отладочный токен в вывод logcat.
  4. Скопируйте и зарегистрируйте этот отладочный токен в консоли Firebase. Для получения более подробной информации обратитесь к документации по отладочному провайдеру Firebase App Check .

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

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

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