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

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 и веб- клиентах.