Реализация пользовательского поставщика проверки приложений.
Оптимизируйте свои подборки
Сохраняйте и классифицируйте контент в соответствии со своими настройками.
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, но эти детали остаются на ваше усмотрение.
Создайте конечную точку получения токенов
Установите и инициализируйте Admin SDK .
Создайте доступную по сети конечную точку, которая сможет получать данные о подлинности от ваших клиентов. Например, с помощью 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 и веб- клиентах.
Если не указано иное, контент на этой странице предоставляется по лицензии Creative Commons "С указанием авторства 4.0", а примеры кода – по лицензии Apache 2.0. Подробнее об этом написано в правилах сайта. Java – это зарегистрированный товарный знак корпорации Oracle и ее аффилированных лиц.
Последнее обновление: 2025-08-22 UTC.
[null,null,["Последнее обновление: 2025-08-22 UTC."],[],[],null,["App Check has built-in support for several providers: DeviceCheck and App\nAttest on Apple platforms, Play Integrity on Android, and reCAPTCHA Enterprise\nin web apps ([overview](/docs/app-check)). These are well-understood providers\nthat should meet the needs of most developers. You can, however, also implement\nyour own custom App Check providers. Using a custom provider is necessary\nwhen:\n\n- You want to use a provider other than the built-in ones.\n\n- You want to use the built-in providers in unsupported ways.\n\n- You want to verify devices using platforms other than Apple, Android, and the\n web. For example, you could create App Check providers for desktop OSes or\n Internet-of-Things devices.\n\n- You want to implement your own verification techniques on any platform.\n\nOverview\n\nTo implement a custom App Check provider, you need a secure backend\nenvironment that can run the Node.js [Firebase Admin SDK](/docs/admin/setup).\nThis can be Cloud Functions, a container platform such as\n[Cloud Run](https://cloud.google.com/run), or your own server.\n\nFrom this environment, you will provide a network-accessible service that\nreceives proof of authenticity from your app clients, and---if the proof of\nauthenticity passes your authenticity assessment---returns an App Check\ntoken. The specific indicators you use as proof of authenticity will depend on\neither the third-party provider you're using, or the indicators of your own\ninvention, if you're implementing custom logic.\n\nUsually, you expose this service as a REST or gRPC endpoint, but this detail is\nup to you.\n\nCreate the token acquisition endpoint\n\n1. [Install and initialize the Admin SDK](/docs/admin/setup).\n\n2. Create a network-accessible endpoint that can receive authenticity data from\n your clients. For example, using Cloud Functions:\n\n // Create endpoint at https://example-app.cloudfunctions.net/fetchAppCheckToken\n exports.fetchAppCheckToken = functions.https.onRequest((request, response) =\u003e {\n // ...\n });\n\n3. Add to the endpoint logic that assesses the authenticity data. This is the\n core logic of your custom App Check provider, which you will need to\n write yourself.\n\n4. If you determine the client to be authentic, use the Admin SDK to mint\n an App Check token and return it and its expiration time to the client:\n\n const admin = require('firebase-admin');\n admin.initializeApp();\n\n // ...\n\n admin.appCheck().createToken(appId)\n .then(function (appCheckToken) {\n // Token expires in an hour.\n const expiresAt = Math.floor(Date.now() / 1000) + 60 * 60;\n\n // Return appCheckToken and expiresAt to the client.\n })\n .catch(function (err) {\n console.error('Unable to create App Check token.');\n console.error(err);\n });\n\n | **Note:** If you encounter a token signing error while creating a new token, make sure your service account has the required permissions. See the [Admin SDK troubleshooting guide](/docs/auth/admin/create-custom-tokens#troubleshooting).\n\n If you can't verify the client's authenticity, return an error (for example,\n return an HTTP 403 error).\n5. **Optional** : Set the time-to-live (TTL) for App Check tokens issued by\n your custom provider by passing an `AppCheckTokenOptions` object to\n `createToken()`. You can set the TTL to any value between 30 minutes and 7\n days. When setting this value, be aware of the following tradeoffs:\n\n - Security: Shorter TTLs provide stronger security, because it reduces the window in which a leaked or intercepted token can be abused by an attacker.\n - Performance: Shorter TTLs mean your app will perform attestation more frequently. Because the app attestation process adds latency to network requests every time it's performed, a short TTL can impact the performance of your app.\n\n The default TTL of 1 hour is reasonable for most apps.\n\nNext steps\n\nNow that you've implemented your custom provider's server-side logic, learn how\nto use it from your [Apple](/docs/app-check/ios/custom-provider),\n[Android](/docs/app-check/android/custom-provider), and [web](/docs/app-check/web/custom-provider) clients."]]