В этой статье рассказывается, как включить 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.
В консоли Firebase выберите Security (Безопасность) > App Check (Проверка приложений).
На вкладке Apps (Приложения) зарегистрируйте приложения, которые будут использовать App Check с поставщиком App Attest.
Обычно требуется зарегистрировать все приложения проекта, поскольку после включения принудительного применения для продукта Firebase доступ к его внутренним ресурсам смогут получить только зарегистрированные приложения.
Необязательно. Установите время жизни токена (TTL).
В настройках регистрации приложения задайте пользовательское время жизни (TTL) для токенов App Check, выпущенных поставщиком. Вы можете задать любое значение TTL в диапазоне от 30 минут до 7 дней. При изменении этого значения учитывайте следующее:
- Безопасность. Более короткие TTL обеспечивают более надежную защиту, поскольку они сокращают окно, в котором злоумышленник может использовать утекший или перехваченный токен.
- Производительность. Чем меньше TTL, тем чаще приложение будет выполнять проверку. Поскольку процесс проверки приложения добавляет задержку к сетевым запросам при каждом выполнении, короткий TTL может повлиять на производительность вашего приложения.
- Квота и стоимость. Короткие TTL и частая повторная аттестация быстрее расходуют квоту и могут повысить стоимость платных сервисов. Подробнее о квотах и лимитах…
Значение TTL по умолчанию (1 час) подходит для большинства приложений. Обратите внимание, что библиотека App Check обновляет токены примерно через половину времени TTL.
2. Добавьте библиотеку App Check в приложение
Для установки зависимостей Firebase и управления ими используйте Swift Package Manager.
Откройте проект приложения в Xcode и перейдите в меню File (Файл) > Add Packages (Добавить пакеты). Добавьте хранилище Firebase SDK для платформ Apple (
https://github.com/firebase/firebase-ios-sdk) и выберите библиотеку FirebaseAppCheck.В Xcode добавьте в приложение функцию App Attest.
В файле
.entitlementsпроекта задайте для среды App Attest значениеproduction.
3. Инициализация App Check
Прежде чем использовать другие SDK Firebase, необходимо инициализировать App Check.
Сначала реализуйте AppCheckProviderFactory. Особенности реализации будут зависеть от вашего варианта использования.
Например, если у вас есть пользователи только с iOS 14 и более поздними версиями, вы можете просто всегда создавать объекты AppAttestProvider:
Swift
Примечание. Эта функция 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.
Swift
Примечание. Эта функция 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 для его использования:
Swift
Примечание. Эта функция 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, SQL Connect, Realtime Database, Cloud Firestore, Cloud Storage, Authentication, Google Identity для iOS, Maps JavaScript API и Places API (New).
- Отслеживайте показатели запросов 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 для iOS, Maps JavaScript API и Places API (New).
- Включите принудительное применение App Check для Cloud Functions.
Используйте App Check в средах отладки
Если после регистрации приложения в App Check вы хотите запустить его в среде, которую App Check обычно не классифицирует как действительную, например в симуляторе во время разработки или в среде непрерывной интеграции, вы можете создать отладочную сборку приложения, которая использует отладочный поставщик App Check вместо реального поставщика аттестации.
Подробнее о том, как использовать App Check с отладочным поставщиком на платформах Apple…