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

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

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

Если вы хотите использовать проверку приложений со своим собственным поставщиком, см. раздел «Реализация пользовательского поставщика проверки приложений» .

1. Настройте свой проект Firebase

  1. Для использования App Attest вам понадобится Xcode 12.5+.

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

  3. Зарегистрируйте свои приложения, чтобы использовать проверку приложений, у поставщика App Attest в разделе «Проверка приложений» консоли Firebase.

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

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

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

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

2. Добавьте библиотеку проверки приложений в свое приложение.

  1. Добавьте зависимость для проверки приложений в Podfile вашего проекта:

    pod 'FirebaseAppCheck'

    Или, альтернативно, вместо этого вы можете использовать Swift Package Manager .

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

  2. Запустите pod install и откройте созданный файл .xcworkspace .

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

  4. В файле .entitlements вашего проекта установите для среды App Attest значение production .

3. Инициализировать проверку приложения

Вам необходимо будет инициализировать проверку приложений, прежде чем использовать любые другие SDK Firebase.

Сначала напишите реализацию AppCheckProviderFactory . Специфика вашей реализации будет зависеть от вашего варианта использования.

Например, если у вас есть пользователи только на iOS 14 и более поздних версиях, вы всегда можете просто создать объекты AppAttestProvider :

Быстрый

Примечание. Этот продукт Firebase недоступен для целевых устройств watchOS.

class YourSimpleAppCheckProviderFactory: NSObject, AppCheckProviderFactory {
  func createProvider(with app: FirebaseApp) -> AppCheckProvider? {
    return AppAttestProvider(app: app)
  }
}

Цель-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)
    }
  }
}

Цель-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 настройте проверку приложений для его использования:

Быстрый

Примечание. Этот продукт Firebase недоступен для целевых устройств watchOS.

let providerFactory = YourAppCheckProviderFactory()
AppCheck.setAppCheckProviderFactory(providerFactory)

FirebaseApp.configure()

Цель-C

Примечание. Этот продукт Firebase недоступен для целевых устройств watchOS.

YourAppCheckProviderFactory *providerFactory =
        [[YourAppCheckProviderFactory alloc] init];
[FIRAppCheck setAppCheckProviderFactory:providerFactory];

[FIRApp configure];

Следующие шаги

После установки библиотеки App Check в ваше приложение начните распространять обновленное приложение среди своих пользователей.

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

Отслеживайте показатели и обеспечивайте принудительное соблюдение

Однако прежде чем включать принудительное применение, вы должны убедиться, что это не повредит работе существующих законных пользователей. С другой стороны, если вы заметили подозрительное использование ресурсов вашего приложения, возможно, вам захочется включить принудительное применение раньше.

Чтобы принять это решение, вы можете просмотреть показатели проверки приложений для используемых вами сервисов:

Включить принудительное выполнение проверки приложений

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

Используйте проверку приложений в средах отладки

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

См. раздел «Использование проверки приложений с поставщиком отладки на платформах Apple» .