Используйте App Check для обеспечения безопасности Navigation SDK для iOS.
Firebase App Check обеспечивает защиту вызовов из вашего приложения к платформе Google Maps, блокируя трафик, поступающий из источников, отличных от ваших легитимных приложений. Это достигается путем запроса оценки подлинности приложения или устройства у поставщика аттестации, такого как App Attest . Интеграция вашего приложения с App Check обеспечивает дополнительную защиту от вредоносных и несанкционированных запросов, что, в свою очередь, защищает ваши счета от несанкционированных списаний. App Check также значительно улучшает отчетность о сбоях в режиме реального времени в экосистеме приложений вашего автопарка, что приносит пользу всем водителям, использующим ваше приложение. Для получения дополнительной информации см. раздел «Отчетность о сбоях ».
Зачем использовать App Check?
App Check защищает две отдельные области Navigation SDK для iOS: основную функциональность навигации и отчеты о сбоях.
Навигация
App Check помогает блокировать запросы к основному SDK навигации для iOS из вредоносных или неавторизованных источников. Это напрямую помогает защитить ваш проект от мошенничества с выставлением счетов и исчерпания квоты.
Сообщения о сбоях
Функция проверки приложений настоятельно рекомендуется, если ваше приложение поддерживает отчеты о сбоях в режиме реального времени и возможности голосования. Включение проверки приложений гарантирует, что ваши водители будут получать наиболее точные маршруты с учетом всей обратной связи в режиме реального времени.
Почему App Check важен для составления отчетов:
- Высокий уровень доверия к информации о перекрытиях дорог: события, влияющие на маршрут, такие как перекрытие дорог, могут существенно изменить поведение водителей при выборе маршрута. Для защиты карты от потенциального вандализма, спама или неточной информации инфраструктура модерации Google для сообщений о перекрытиях дорог опирается на надежные сигналы целостности устройств и приложений.
- Как App Check проверяет отчеты: Отчеты и голоса пользователей, отправляемые из Navigation SDK для iOS, содержат токен App Check, который используется бэкэндом Google для проверки достоверности обратной связи, повышая уровень доверия и позволяя оценить ее влияние на карту в реальном времени.
- Последствия отсутствия проверки приложения: Отчеты, отправленные без действительного токена проверки приложения, оцениваются по модели с более низким уровнем доверия и могут обрабатываться исключительно как скрытые сигналы. Это означает, что хотя ваши пользователи по-прежнему могут отправлять отчеты и голосовать за них, их отчеты с меньшей вероятностью будут видны на карте или повлияют на маршруты других водителей и потребуют дополнительной проверки.
Подходит ли мне приложение App Check?
В большинстве случаев рекомендуется использовать проверку приложений (App Check); однако проверка приложений не требуется или не поддерживается в следующих сценариях:
- Частные или экспериментальные приложения: если ваше приложение недоступно для публичного доступа, проверка приложений не требуется.
- Подозрительные устройства: Рекомендуемые поставщики аттестации предотвращают запуск Navigation SDK для iOS на ненадежных устройствах, таких как рутированные или взломанные телефоны. Для поддержки таких устройств разверните собственный поставщик аттестации .
Обзор этапов реализации
В общих чертах, для интеграции вашего приложения с App Check вам потребуется выполнить следующие шаги:
- Добавьте Firebase в свое приложение.
- Добавьте библиотеку App Check и инициализируйте App Check.
- Добавьте поставщика токенов. На этом шаге будет задействован выбранный вами поставщик аттестации для проверки целостности устройства или приложения.
- Инициализируйте API навигации и проверки приложений.
- Включите отладку. Это полезно во время разработки или в средах непрерывной интеграции (CI).
- Перед включением проверки приложений отслеживайте запросы к вашему приложению. Таким образом, вы сможете беспрепятственно применять проверку приложений, не мешая пользователям.
Что следует учитывать при планировании интеграции с App Check
- Квоты поставщиков услуг аттестации: На рекомендуемые нами поставщики услуг аттестации, DeviceCheck или App Attest, распространяются квоты и ограничения, установленные Apple .
- Задержка при запуске: В большинстве случаев пользователи не будут испытывать задержек при обычном использовании, поскольку токены App Check кэшируются на устройстве. Система автоматически обновляет токены App Check в фоновом режиме перед истечением срока их действия для обеспечения бесперебойной работы. Однако, если действительный токен App Check отсутствует, пользователи вашего приложения будут испытывать некоторую задержку при запуске. Например, эта задержка возникает при холодном запуске, когда кэшированный токен просрочен или отсутствует.
- Время жизни токена (TTL): Время жизни токена App Check определяет период, в течение которого он действителен до необходимости обновления. Вы можете настроить этот параметр в консоли Firebase от 30 минут до 7 дней. В качестве надежного базового значения рекомендуется установить значение в 1 час, но SDK автоматически пытается выполнить фоновое обновление примерно через половину времени жизни токена. Пошаговые инструкции по работе с консолью см. в документации Firebase App Check .
Интегрируйте свое приложение с App Check.
Предварительные условия и требования
- Приложение с установленным Navigation SDK для iOS версии 11.0 или более поздней.
- Идентификатор пакета приложения .
- Идентификатор вашей команды (Team ID) можно найти на вкладке «Участие» в консоли разработчика Apple.
- Если вы планируете использовать DeviceCheck, вам потребуется файл закрытого ключа и идентификатор ключа .
- Вы должны быть владельцем приложения в консоли Google Cloud.
- Идентификатор проекта вашего приложения из консоли Google Cloud.
Шаг 1: Добавьте Firebase в ваше приложение.
Следуйте инструкциям в документации для разработчиков Firebase , чтобы добавить Firebase в ваше приложение. Добавьте файл GoogleService-Info.plist без изменений в корневую директорию вашего проекта.
В файле AppDelegate импортируйте следующие модули:
Быстрый
import FirebaseCore import FirebaseAppCheck import GoogleNavigation
Objective-C
@import FirebaseCore; @import FirebaseAppCheck; @import GoogleNavigation;
Шаг 2: Добавьте библиотеку App Check и инициализируйте App Check.
Firebase предоставляет инструкции для каждого поставщика аттестации по умолчанию. Эти инструкции показывают, как настроить проект Firebase и добавить библиотеку App Check в ваше приложение. Следуйте приведенным примерам кода, чтобы инициализировать App Check.
- Следуйте инструкциям Firebase, чтобы добавить библиотеку App Check:
- Инициализируйте проверку приложения в вашем
AppDelegate:- Если вы используете App Attest, создайте реализацию
AppCheckProviderFactoryи зарегистрируйте её перед вызовомFirebaseApp.configure():Быстрый
class YourAppCheckProviderFactory: NSObject, AppCheckProviderFactory { func createProvider(with app: FirebaseApp) -> AppCheckProvider? { return AppAttestProvider(app: app) } } // In application(_:didFinishLaunchingWithOptions:) let providerFactory = YourAppCheckProviderFactory() AppCheck.setAppCheckProviderFactory(providerFactory) FirebaseApp.configure()
Objective-C
#import <FirebaseCore/FirebaseCore.h> #import <FirebaseAppCheck/FirebaseAppCheck.h> @interface YourAppCheckProviderFactory : NSObject <FIRAppCheckProviderFactory> @end @implementation YourAppCheckProviderFactory - (nullable id<FIRAppCheckProvider>)createProviderWithApp:(FIRApp *)app { return [[FIRAppAttestProvider alloc] initWithApp:app]; } @end // In application:didFinishLaunchingWithOptions: YourAppCheckProviderFactory *providerFactory = [[YourAppCheckProviderFactory alloc] init]; [FIRAppCheck setAppCheckProviderFactory:providerFactory]; [FIRApp configure];
- Если вы используете DeviceCheck, установите фабрику следующим образом:
Быстрый
AppCheck.setAppCheckProviderFactory(DeviceCheckProviderFactory())
Objective-C
FIRDeviceCheckProviderFactory *providerFactory = [[FIRDeviceCheckProviderFactory alloc] init]; [FIRAppCheck setAppCheckProviderFactory:providerFactory];
- Если вы используете App Attest, создайте реализацию
Шаг 3: Добавьте поставщика токенов.
Создайте файл с именем AppCheckTokenProvider (или, если вы используете Objective-C, два файла с именами AppCheckTokenProvider.h и AppCheckTokenProvider.m ) в корневой директории вашего приложения.
Этот класс должен соответствовать протоколу GMSAppCheckTokenProvider и реализовывать метод fetchAppCheckTokenWithCompletion .
Быстрый
import Foundation import FirebaseAppCheck import GoogleNavigation class AppCheckTokenProvider: NSObject, GMSAppCheckTokenProvider { func fetchAppCheckToken(completion: @escaping (String?, Error?) -> Void) { AppCheck.appCheck().token(forcingRefresh: false) { token, error in if let error = error { print("App Check Error: \(error)") completion(nil, error) return } guard let token = token else { completion(nil, NSError(domain: "AppCheck", code: -1, userInfo: [NSLocalizedDescriptionKey: "Token is nil"])) return } print("App Check Token: \(token.token)") completion(token.token, nil) } } }
Objective-C
// AppCheckTokenProvider.h #import <Foundation/Foundation.h> #import <GoogleNavigation/GoogleNavigation.h> NS_ASSUME_NONNULL_BEGIN @interface AppCheckTokenProvider : NSObject <GMSAppCheckTokenProvider> @end NS_ASSUME_NONNULL_END
// AppCheckTokenProvider.m #import "AppCheckTokenProvider.h" #import <FirebaseAppCheck/FirebaseAppCheck.h> @implementation AppCheckTokenProvider - (void)fetchAppCheckTokenWithCompletion:(void (^)(NSString * _Nullable token, NSError * _Nullable error))completion { [[FIRAppCheck appCheck] tokenForcingRefresh:NO completion:^(FIRAppCheckToken * _Nullable token, NSError * _Nullable error) { if (token) { completion(token.token, nil); } else { completion(nil, error); } }]; } @end
Шаг 4: Инициализация API навигации и проверки приложений.
Инициализируйте SDK навигации для iOS (используя GMSServices ) и зарегистрируйте экземпляр поставщика токенов, преобразовав дескриптор общих непрозрачных служб в GMSServices :
Быстрый
// In application(_:didFinishLaunchingWithOptions:) GMSServices.provideAPIKey("YOUR_API_KEY") // Register your App Check token provider before initializing Navigation SDK for iOS if let services = GMSServices.sharedServices() as? GMSServices { services.appCheckTokenProvider = AppCheckTokenProvider() }
Objective-C
// In application:didFinishLaunchingWithOptions: [GMSServices provideAPIKey:@"YOUR_API_KEY"]; // Register your App Check token provider before initializing Navigation SDK for iOS ((GMSServices *)[GMSServices sharedServices]).appCheckTokenProvider = [[AppCheckTokenProvider alloc] init];
Шаг 5: Включите отладку (необязательно)
После внедрения проверки App Check для Navigation SDK для iOS, функции вашего приложения, зависящие от Navigation SDK для iOS, не будут работать в симуляторе или в среде непрерывной интеграции (CI), поскольку эти среды не соответствуют критериям допустимых устройств. Для запуска приложения в этих средах во время разработки и тестирования необходимо создать отладочную сборку приложения, использующую отладочный поставщик App Check вместо производственного поставщика аттестации.
- Настройте фабрику поставщика отладки в вашем
AppDelegate:Быстрый
#if targetEnvironment(simulator) let providerFactory = AppCheckDebugProviderFactory() #else let providerFactory = YourAppCheckProviderFactory() #endif AppCheck.setAppCheckProviderFactory(providerFactory)
Objective-C
#if TARGET_OS_SIMULATOR id<FIRAppCheckProviderFactory> providerFactory = [[FIRAppCheckDebugProviderFactory alloc] init]; #else id<FIRAppCheckProviderFactory> providerFactory = [[YourAppCheckProviderFactory alloc] init]; #endif [FIRAppCheck setAppCheckProviderFactory:providerFactory];
- Включите логирование в вашем проекте Xcode, запустите приложение и найдите локальный отладочный токен в консоли.
- Скопируйте и добавьте этот отладочный токен в консоль Firebase. Для получения более подробной информации обратитесь к документации по отладочному провайдеру Firebase App Check .
Шаг 6: Отслеживайте запросы вашего приложения и принимайте решения о применении мер принуждения.
Прежде чем включать функцию принудительного применения ограничений, отслеживайте запросы вашего приложения, чтобы убедиться, что вы не будете мешать работе законных пользователей.
- Перейдите на экран метрик App Check в консоли Firebase, чтобы увидеть процент подтвержденного и неподтвержденного трафика.
- Как только вы убедитесь, что большая часть вашего трафика проверена и легитимные пользователи обновили приложение до версии, содержащей реализованную вами проверку App Check, включите принудительное применение проверки.
- После включения функции принудительного применения, App Check будет отклонять весь трафик без действительного токена App Check.