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 конечной точки, но этот момент остается на ваше усмотрение.
Создайте конечную точку для получения токенов.
Создайте доступную по сети конечную точку, которая сможет получать данные аутентификации от ваших клиентов. Например, используя Cloud Functions :
// Create endpoint at https://example-app.cloudfunctions.net/fetchAppCheckToken exports.fetchAppCheckToken = functions.https.onRequest((request, response) => { // ... });Добавьте в конечную точку логику, которая оценивает данные подлинности. Это основная логика вашего пользовательского поставщика App Check , которую вам нужно будет написать самостоятельно.
Если вы убедитесь в подлинности клиента, используйте 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).
Необязательно : установите время жизни (TTL) для токенов App Check выданных вашим собственным поставщиком, передав объект
AppCheckTokenOptionsв методcreateToken(). Вы можете установить TTL на любое значение от 30 минут до 7 дней. При установке этого значения учитывайте следующие компромиссы:- Безопасность: Более короткие значения TTL обеспечивают более высокую безопасность, поскольку сокращают период времени, в течение которого утечка или перехват токена могут быть использованы злоумышленником в корыстных целях.
- Производительность: Более короткие значения TTL означают, что ваше приложение будет выполнять аттестацию чаще. Поскольку процесс аттестации приложения каждый раз добавляет задержку к сетевым запросам, короткий TTL может повлиять на производительность вашего приложения.
Значение TTL по умолчанию, равное 1 часу, является разумным для большинства приложений.
Следующие шаги
Теперь, когда вы реализовали серверную логику своего пользовательского поставщика, узнайте, как использовать её в своих клиентах Apple , Android и веб- клиентах.