Реализация пользовательского поставщика проверки приложений.

App Check имеет встроенную поддержку нескольких поставщиков: DeviceCheck и App Attest на платформах Apple, Play Integrity на Android и reCAPTCHA Enterprise в веб-приложениях ( обзор ). Это хорошо известные поставщики, которые должны удовлетворить потребности большинства разработчиков. Однако вы также можете реализовать собственные поставщики App Check . Использование собственного поставщика необходимо в следующих случаях:

  • Вы хотите использовать поставщика, отличного от встроенного.

  • Вы хотите использовать встроенные поставщики неподдерживаемыми способами.

  • Вам необходимо проверять устройства на платформах, отличных от Apple, Android и веб-платформ. Например, вы можете создать поставщиков App Check для настольных ОС или устройств Интернета вещей.

  • Вы хотите реализовать собственные методы проверки на любой платформе.

Обзор

Для реализации собственного поставщика App Check вам потребуется безопасная бэкэнд-среда, поддерживающая Node.js Firebase Admin SDK . Это может быть Cloud Functions , контейнерная платформа, например Cloud Run , или ваш собственный сервер.

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

Обычно вы предоставляете эту службу как конечную точку REST или gRPC, но эти детали остаются на ваше усмотрение.

Создайте конечную точку получения токенов

  1. Установите и инициализируйте Admin SDK .

  2. Создайте доступную по сети конечную точку, которая сможет получать данные о подлинности от ваших клиентов. Например, с помощью Cloud Functions :

    // Create endpoint at https://example-app.cloudfunctions.net/fetchAppCheckToken
    exports.fetchAppCheckToken = functions.https.onRequest((request, response) => {
      // ...
    });
    
  3. Добавьте к конечной точке логику, проверяющую подлинность данных. Это базовая логика вашего поставщика App Check , которую вам нужно будет написать самостоятельно.

  4. Если вы определили, что клиент является подлинным, используйте Admin SDK для создания токена App Check и верните его вместе со сроком его действия клиенту:

    const admin = require('firebase-admin');
    admin.initializeApp();
    
    // ...
    
    admin.appCheck().createToken(appId)
        .then(function (appCheckToken) {
          // Token expires in an hour.
          const expiresAt = Math.floor(Date.now() / 1000) + 60 * 60;
    
          // Return appCheckToken and expiresAt to the client.
        })
       .catch(function (err) {
         console.error('Unable to create App Check token.');
         console.error(err);
       });
    

    Если вы не можете проверить подлинность клиента, верните ошибку (например, верните ошибку HTTP 403).

  5. Необязательно : задайте время жизни (TTL) для токенов App Check выдаваемых вашим поставщиком, передав объект AppCheckTokenOptions методу createToken() . Вы можете задать любое значение TTL от 30 минут до 7 дней. При установке этого значения учитывайте следующие компромиссы:

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

    Значение TTL по умолчанию, равное 1 часу, является приемлемым для большинства приложений.

Следующие шаги

Теперь, когда вы реализовали серверную логику своего поставщика, узнайте, как использовать ее в клиентах Apple , Android и веб- клиентах.