Как начать использовать App Check с App Attest на платформах Apple

На этой странице рассказывается, как включить App Check в приложении Apple, используя встроенного поставщика App Attest. Включив App Check, вы сможете ограничить доступ к ресурсам Firebase в своем проекте, чтобы их могло использовать только ваше приложение. Ознакомьтесь с общими сведениями об этой функции.

App Check использует App Attest, чтобы проверять, исходят ли запросы к сервисам Firebase из вашего настоящего приложения. В настоящее время App Check не использует App Attest для анализа риска мошенничества.

Если вы хотите использовать App Check с собственным поставщиком, ознакомьтесь со статьей Как реализовать собственного поставщика App Check.

1. Как настроить проект Firebase

  1. Для использования App Attest требуется Xcode 12.5 или более поздней версии.

  2. Если вы ещё этого не сделали, добавьте Firebase в проект для Apple.

  3. В консоли Firebase выберите Безопасность > Проверка приложений.

  4. На вкладке Приложения зарегистрируйте свои приложения, чтобы использовать App Check с поставщиком App Attest.

    Обычно нужно регистрировать все приложения проекта, поскольку после включения принудительного применения для продукта Firebase доступ к серверным ресурсам продукта будет предоставляться только зарегистрированным приложениям.

  5. Необязательно. Установите время жизни токена (TTL).

    В настройках регистрации приложения задайте собственное время жизни (TTL) для токенов App Check, выпущенных поставщиком. Вы можете задать любое значение TTL в диапазоне от 30 минут до 7 дней. При изменении этого значения учитывайте следующие компромиссы:

    • Безопасность. Чем меньше срок жизни, тем выше уровень безопасности, поскольку злоумышленник не сможет долго использовать украденный или перехваченный токен.
    • Производительность. Чем меньше значение TTL, тем чаще приложение будет выполнять аттестацию. Поскольку процесс подтверждения приложения добавляет задержку к сетевым запросам каждый раз, когда он выполняется, короткий срок жизни может повлиять на производительность приложения.
    • Квота и стоимость. Более короткие значения TTL и частая повторная аттестация быстрее исчерпывают квоту, а для платных сервисов могут привести к дополнительным расходам. Подробнее о квотах и лимитах…

    Для большинства приложений подходит значение TTL по умолчанию – 1 час. Обратите внимание, что библиотека App Check обновляет токены примерно за половину срока жизни.

2. Как добавить библиотеку App Check в приложение

  1. Для установки зависимостей Firebase и управления ими используйте Swift Package Manager.

    Откройте проект приложения в Xcode и перейдите в меню File (Файл) > Add Packages (Добавить пакеты), добавьте хранилище Firebase SDK для платформ Apple (https://github.com/firebase/firebase-ios-sdk) и выберите библиотеку FirebaseAppCheck.

  2. В Xcode добавьте в приложение возможность App Attest.

  3. В файле .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

Когда вы поймете, как App Check повлияет на пользователей, и будете готовы к переходу, включите принудительное применение App Check:

Используйте App Check в среде отладки

Если после регистрации приложения для использования App Check вы хотите запустить его в среде, которую App Check обычно не считает действительной, например в симуляторе во время разработки или в среде непрерывной интеграции (CI), вы можете создать отладочную сборку приложения, в которой вместо реального поставщика аттестации используется отладочный поставщик App Check.

Подробнее о том, как использовать App Check с поставщиком отладочной информации на платформах Apple…