Catch up on everthing we announced at this year's Firebase Summit. Learn more

Внедрить настраиваемый провайдер проверки приложений

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

  • Вы хотите использовать поставщика, отличного от DeviceCheck или App Attest на Apple, SafetyNet на Android или reCAPTCHA в веб-приложениях.

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

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

Обзор

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

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

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

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

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

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

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

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

    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 Проверить лексем , выдаваемых вашим поставщиком, передавая AppCheckTokenOptions объект в createToken() . Вы можете установить TTL на любое значение от 30 минут до 7 дней. При установке этого значения помните о следующих компромиссах:

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

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

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

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