На этой странице показано, как включить App Check в приложении Apple, используя встроенный поставщик проверки приложений (App Attest). Включив App Check , вы гарантируете, что доступ к ресурсам Firebase вашего проекта будет только у вашего приложения. См. обзор этой функции.
App Check использует App Attest для проверки того, что запросы к сервисам Firebase поступают от вашего подлинного приложения. В настоящее время App Check не использует App Attest для анализа риска мошенничества .
Если вы хотите использовать App Check с собственным пользовательским поставщиком, см. раздел «Реализация пользовательского поставщика App Check .
1. Настройте свой проект Firebase.
Для использования App Attest вам потребуется Xcode версии 12.5 и выше.
Добавьте Firebase в свой проект Apple, если вы еще этого не сделали.
Зарегистрируйте свои приложения для использования App Check с помощью поставщика App Attest в разделе App Check консоли Firebase .
Обычно необходимо зарегистрировать все приложения вашего проекта, поскольку после включения принудительного применения правил для продукта Firebase доступ к ресурсам бэкэнда этого продукта будет иметь только зарегистрированные приложения.
Необязательно : В настройках регистрации приложения установите пользовательское время жизни (TTL) для токенов App Check выданных провайдером. Вы можете установить TTL на любое значение от 30 минут до 7 дней. При изменении этого значения следует учитывать следующие компромиссы:
- Безопасность: Более короткие значения TTL обеспечивают более высокую безопасность, поскольку сокращают период времени, в течение которого утечка или перехват токена могут быть использованы злоумышленником в корыстных целях.
- Производительность: Более короткие значения TTL означают, что ваше приложение будет выполнять аттестацию чаще. Поскольку процесс аттестации приложения каждый раз добавляет задержку к сетевым запросам, короткий TTL может повлиять на производительность вашего приложения.
- Квота и стоимость: Более короткие сроки действия TTL и частая повторная аттестация быстрее истощают вашу квоту, а для платных услуг могут стоить дороже. См. раздел «Квоты и лимиты» .
Значение TTL по умолчанию, равное 1 часу, является разумным для большинства приложений. Обратите внимание, что библиотека App Check обновляет токены примерно через половину времени TTL.
2. Добавьте библиотеку App Check в свое приложение.
Добавьте зависимость для App Check в
Podfileвашего проекта:pod 'FirebaseAppCheck'
Или же вы можете использовать Swift Package Manager .
Убедитесь также, что вы используете последнюю версию всех других SDK Firebase, от которых вы зависите.
Выполните команду
pod installи откройте созданный файл.xcworkspace.В Xcode добавьте в своё приложение функцию App Attest .
В файле
.entitlementsвашего проекта установите среду тестирования приложения вproduction.
3. Инициализация App Check
Перед использованием любых других SDK Firebase необходимо инициализировать App Check .
Сначала напишите реализацию AppCheckProviderFactory . Специфика вашей реализации будет зависеть от конкретного случая использования.
Например, если у вас есть пользователи только с iOS 14 и более поздних версий, вы можете просто всегда создавать объекты AppAttestProvider :
Быстрый
Примечание: Этот продукт Firebase недоступен на устройствах watchOS.
class YourSimpleAppCheckProviderFactory: NSObject, AppCheckProviderFactory { func createProvider(with app: FirebaseApp) -> AppCheckProvider? { return AppAttestProvider(app: app) } }
Objective-C
Примечание: Этот продукт Firebase недоступен на устройствах watchOS.
@interface YourSimpleAppCheckProviderFactory : NSObject <FIRAppCheckProviderFactory> @end @implementation YourSimpleAppCheckProviderFactory - (nullable id<FIRAppCheckProvider>)createProviderWithApp:(nonnull FIRApp *)app { return [[FIRAppAttestProvider alloc] initWithApp:app]; } @end
Или же вы можете создавать объекты AppAttestProvider в iOS 14 и более поздних версиях, а в более ранних версиях использовать DeviceCheckProvider :
Быстрый
Примечание: Этот продукт Firebase недоступен на устройствах watchOS.
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 для его использования:
Быстрый
Примечание: Этот продукт Firebase недоступен на устройствах watchOS.
let providerFactory = YourAppCheckProviderFactory() AppCheck.setAppCheckProviderFactory(providerFactory) FirebaseApp.configure()
Objective-C
Примечание: Этот продукт Firebase недоступен на устройствах watchOS.
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 , Data 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 , Data 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 обычно не классифицирует как допустимую, например, в симуляторе во время разработки или в среде непрерывной интеграции (CI), вы можете создать отладочную сборку вашего приложения, которая использует отладочный поставщик App Check вместо реального поставщика аттестации.
См. раздел «Использование App Check с помощью отладчика на платформах Apple» .