This page shows you how to enable App Check in an Apple app, using the built-in App Attest provider. When you enable App Check , you help ensure that only your app can access your project's Firebase resources. See an Overview of this feature.
App Check uses App Attest to verify that requests to Firebase services are coming from your authentic app. App Check currently does not use App Attest to analyze fraud risk .
If you want to use App Check with your own custom provider, see Implement a custom App Check provider .
1. Настройте свой проект Firebase.
Для использования App Attest вам потребуется Xcode версии 12.5 и выше.
Add Firebase to your Apple project if you haven't already done so.
В консоли Firebase перейдите в раздел Безопасность > Проверка приложений .
In the Apps tab, register your apps to use App Check with the App Attest provider.
Обычно необходимо зарегистрировать все приложения вашего проекта, поскольку после включения принудительного применения правил для продукта Firebase доступ к ресурсам бэкэнда этого продукта будет иметь только зарегистрированные приложения.
Необязательно : В настройках регистрации приложения установите пользовательское время жизни (TTL) для токенов App Check выданных провайдером. Вы можете установить TTL на любое значение от 30 минут до 7 дней. При изменении этого значения следует учитывать следующие компромиссы:
- Безопасность: Более короткие значения TTL обеспечивают более высокую безопасность, поскольку сокращают период времени, в течение которого утечка или перехват токена могут быть использованы злоумышленником в корыстных целях.
- Производительность: Более короткие значения TTL означают, что ваше приложение будет выполнять аттестацию чаще. Поскольку процесс аттестации приложения каждый раз добавляет задержку к сетевым запросам, короткий TTL может повлиять на производительность вашего приложения.
- Квота и стоимость: Более короткие сроки действия TTL и частая повторная аттестация быстрее истощают вашу квоту, а для платных услуг могут стоить дороже. См. раздел «Квоты и лимиты» .
Значение TTL по умолчанию, равное 1 часу, является разумным для большинства приложений. Обратите внимание, что библиотека App Check обновляет токены примерно через половину времени TTL.
2. Добавьте библиотеку App Check в свое приложение.
Используйте Swift Package Manager для установки и управления зависимостями Firebase.
In Xcode, with your app project open, navigate to File > Add Packages , add the Firebase Apple platforms SDK repository (
https://github.com/firebase/firebase-ios-sdk), and choose the FirebaseAppCheck library.В Xcode добавьте в своё приложение функцию App Attest .
В файле
.entitlementsвашего проекта установите среду тестирования приложения вproduction.
3. Инициализация App Check
Перед использованием любых других SDK Firebase необходимо инициализировать App Check .
Сначала напишите реализацию AppCheckProviderFactory . Специфика вашей реализации будет зависеть от конкретного случая использования.
For example, If you only have users on iOS 14 and later, you can simply always create AppAttestProvider objects:
Быстрый
Примечание: Этот продукт Firebase недоступен на устройствах watchOS.
class YourSimpleAppCheckProviderFactory: NSObject, AppCheckProviderFactory { func createProvider(with app: FirebaseApp) -> AppCheckProvider? { return AppAttestProvider(app: app) } }
Objective-C
Note: This Firebase product is not available on watchOS targets.
@interface YourSimpleAppCheckProviderFactory : NSObject <FIRAppCheckProviderFactory> @end @implementation YourSimpleAppCheckProviderFactory - (nullable id<FIRAppCheckProvider>)createProviderWithApp:(nonnull FIRApp *)app { return [[FIRAppAttestProvider alloc] initWithApp:app]; } @end
Или же вы можете создавать объекты AppAttestProvider в iOS 14 и более поздних версиях, а в более ранних версиях использовать DeviceCheckProvider :
Быстрый
Note: This Firebase product is not available on watchOS targets.
class YourAppCheckProviderFactory: NSObject, AppCheckProviderFactory { func createProvider(with app: FirebaseApp) -> AppCheckProvider? { if #available(iOS 14.0, *) { return AppAttestProvider(app: app) } else { return DeviceCheckProvider(app: app) } } }
Objective-C
Примечание: Этот продукт Firebase недоступен на устройствах watchOS.
@interface YourAppCheckProviderFactory : NSObject <FIRAppCheckProviderFactory> @end @implementation YourAppCheckProviderFactory - (nullable id<FIRAppCheckProvider>)createProviderWithApp:(nonnull FIRApp *)app { if (@available(iOS 14.0, *)) { return [[FIRAppAttestProvider alloc] initWithApp:app]; } else { return [[FIRDeviceCheckProvider alloc] initWithApp:app]; } } @end
После реализации класса AppCheckProviderFactory настройте App Check для его использования:
Быстрый
Note: This Firebase product is not available on watchOS targets.
let providerFactory = YourAppCheckProviderFactory() AppCheck.setAppCheckProviderFactory(providerFactory) FirebaseApp.configure()
Objective-C
Note: This Firebase product is not available on watchOS targets.
YourAppCheckProviderFactory *providerFactory = [[YourAppCheckProviderFactory alloc] init]; [FIRAppCheck setAppCheckProviderFactory:providerFactory]; [FIRApp configure];
Следующие шаги
После установки библиотеки App Check в ваше приложение, начните распространять обновленное приложение среди пользователей.
Обновленное клиентское приложение начнет отправлять токены App Check вместе с каждым запросом в Firebase, но для продуктов Firebase не потребуется, чтобы токены были действительными, пока вы не включите проверку в разделе App Check консоли Firebase.
Отслеживайте показатели и обеспечьте соблюдение требований.
Однако, прежде чем включать функцию принудительного применения, следует убедиться, что это не нарушит работу существующих законных пользователей. С другой стороны, если вы наблюдаете подозрительное использование ресурсов вашего приложения, возможно, стоит включить функцию принудительного применения раньше.
Чтобы помочь вам принять это решение, вы можете ознакомиться с показателями App Check для используемых вами сервисов:
- Отслеживайте метрики запросов App Check для Firebase AI Logic , SQL Connect , Realtime Database , Cloud Firestore , Cloud Storage , Authentication , Google Identity for iOS, Maps JavaScript API и Places API (новая функция).
- Отслеживайте метрики запросов App Check для Cloud Functions .
Включить принудительное выполнение App Check
Когда вы поймете, как App Check повлияет на ваших пользователей, и будете готовы продолжить, вы можете включить принудительное применение App Check :
- Включите App Check ) для Firebase AI Logic , SQL Connect , Realtime Database , Cloud Firestore , Cloud Storage , Authentication , Google Identity for iOS, Maps JavaScript API и Places API (новая функция).
- Включите принудительное применение App Check для Cloud Functions .
Используйте App Check в средах отладки.
If, after you have registered your app for App Check , you want to run your app in an environment that App Check would normally not classify as valid, such as a simulator during development, or from a continuous integration (CI) environment, you can create a debug build of your app that uses the App Check debug provider instead of a real attestation provider.
См. раздел «Использование App Check с помощью отладчика на платформах Apple» .