Используйте App Check для защиты вашего API-ключа.
Firebase App Check обеспечивает защиту запросов вашего приложения к платформе Google Maps, блокируя трафик, поступающий из источников, отличных от легитимных приложений. Это достигается за счет проверки наличия токена от поставщика аттестации, такого как App Attest . Интеграция ваших приложений с App Check помогает защититься от вредоносных запросов, поэтому с вас не будет взиматься плата за несанкционированные вызовы API.
Подходит ли мне приложение App Check?
В большинстве случаев рекомендуется использовать проверку приложений (App Check), однако в следующих случаях проверка приложений не требуется или не поддерживается:
- Вы используете оригинальный Places SDK. Функция проверки приложений (App Check) поддерживается только для Places SDK (новая версия) .
- Частные или экспериментальные приложения. Если ваше приложение недоступно для публичного доступа, проверка приложений не требуется.
- Если ваше приложение используется только для взаимодействия между серверами, App Check не требуется. Однако, если сервер, взаимодействующий с GMP, используется общедоступными клиентами (например, мобильными приложениями), рассмотрите возможность использования App Check для защиты этого сервера вместо GMP.
- Рекомендуемые App Check поставщики аттестации не будут работать на устройствах, которые ваш поставщик аттестации сочтет скомпрометированными или ненадежными. Если вам необходимо поддерживать такие устройства, вы можете развернуть собственную службу аттестации. Для получения дополнительной информации см. инструкции .
Обзор этапов реализации
В общих чертах, для интеграции вашего приложения с App Check вам необходимо выполнить следующие шаги:
- Добавьте Firebase в свое приложение.
- Добавьте и инициализируйте библиотеку App Check.
- Добавьте поставщика токенов в свое приложение.
- Инициализируйте API для проверки мест и приложений.
- Включить отладку.
- Отслеживайте запросы вашего приложения и принимайте решения об их принудительном выполнении.
После интеграции с App Check вы сможете просматривать метрики трафика бэкэнда в консоли Firebase. Эти метрики показывают разбивку запросов по наличию или отсутствию у них действительного токена App Check. Дополнительную информацию см. в документации Firebase App Check .
Когда вы убедитесь, что большинство запросов поступает из легитимных источников и что пользователи обновили ваше приложение до последней версии, включающей вашу реализацию App Check, вы можете включить принудительное применение правил. После включения принудительного применения App Check будет отклонять весь трафик без действительного токена App Check.
Что следует учитывать при планировании интеграции с App Check
Вот несколько моментов, которые следует учесть при планировании интеграции:
Рекомендуемые нами сервисы аттестации, Device Check или App Attest , подчиняются квотам и ограничениям, установленным Apple.
Вы можете использовать собственный поставщик аттестации, хотя это более сложный вариант использования. Дополнительную информацию см. в документации Firebase App Check .
Пользователи вашего приложения могут заметить некоторую задержку при запуске. Однако впоследствии периодическая повторная аттестация будет происходить в фоновом режиме, и пользователи больше не должны испытывать задержек. Точная величина задержки при запуске зависит от выбранного вами поставщика аттестации.
Время действия токена App Check ( время жизни , или TTL) определяет частоту повторных подтверждений. Этот параметр можно настроить в консоли Firebase. Повторное подтверждение происходит, когда истекает примерно половина времени жизни токена (TTL). Для получения дополнительной информации см. документацию Firebase для вашего поставщика подтверждения.
Интегрируйте свое приложение с App Check.
Предварительные условия и требования
- Для работы требуется приложение с установленным SDK Places версии 9.2 или более поздней.
- Идентификатор пакета приложения .
- Идентификатор вашей команды можно найти в Центре для участников Apple в разделе «Участие».
- Если вы планируете использовать Device Check, вам потребуется файл закрытого ключа и идентификатор ключа .
- Вы должны быть владельцем приложения в Cloud Console.
- Вам потребуется идентификатор проекта приложения из облачной консоли.
Шаг 1: Добавьте Firebase в ваше приложение.
Чтобы добавить Firebase в ваше приложение, следуйте инструкциям в документации для разработчиков Firebase .
При регистрации приложения вы получите конфигурационный файл GoogleService-Info.plist . Добавьте этот файл без изменений в корневую директорию вашего приложения.
SDK Swift для iOS
import FirebaseCore import FirebaseAppCheck import GooglePlacesSwift
Быстрый
import FirebaseCore import FirebaseAppCheck import GooglePlaces
Objective-C
@import FirebaseCore; @import FirebaseAppCheck; @import GooglePlaces;
Шаг 2: Добавьте библиотеку App Check и инициализируйте App Check.
Firebase предоставляет инструкции для каждого поставщика аттестации по умолчанию. Эти инструкции показывают, как настроить проект Firebase и добавить библиотеку App Check в ваше приложение. Следуйте приведенным примерам кода, чтобы инициализировать App Check.
- Следуйте инструкциям Firebase, чтобы добавить библиотеку App Check:
- Инициализация проверки приложения.
- Если вы используете App Attest, следуйте документации для разработчиков Firebase по App Attest.
Следуйте инструкциям Firebase App Check , чтобы создать реализацию
AppCheckProviderFactoryи добавить её в файлAppDelegate.SDK Swift для iOS
let providerFactory = YourAppCheckProviderFactory() AppCheck.setAppCheckProviderFactory(providerFactory)
Быстрый
let providerFactory = YourAppCheckProviderFactory() AppCheck.setAppCheckProviderFactory(providerFactory)
Objective-C
YourAppCheckProviderFactory *providerFactory = [[YourAppCheckProviderFactory alloc] init]; [FIRAppCheck setAppCheckProviderFactory:providerFactory];
- Если вы используете проверку устройств (Device Check), добавьте следующее в свой
AppDelegate:SDK Swift для iOS
AppCheck.setAppCheckProviderFactory(DeviceCheckProviderFactory())
Быстрый
AppCheck.setAppCheckProviderFactory(DeviceCheckProviderFactory())
Objective-C
[FIRAppCheck setAppCheckProviderFactory:providerFactory];
- Если вы используете App Attest, следуйте документации для разработчиков Firebase по App Attest.
Шаг 3: Добавьте поставщика токенов.
Создайте файл с именем AppCheckTokenProvider (или, если вы используете Objective-C, два файла с именами AppCheckTokenProvider.h и AppCheckTokenProvider.m ) в корневой директории вашего приложения. Добавьте следующие операторы импорта и определение класса:
SDK Swift для iOS
// AppCheckTokenProvider.swift import FirebaseAppCheck import Foundation import GooglePlacesSwift struct TokenProvider: AppCheckTokenProvider { func fetchAppCheckToken() async throws -> String { return try await AppCheck.appCheck().token(forcingRefresh: false).token } }
Быстрый
// AppCheckTokenProvider.swift import FirebaseAppCheck import Foundation import GooglePlaces class AppCheckTokenProvider: NSObject, GMSPlacesAppCheckTokenProvider { func fetchAppCheckToken() async throws -> String { return try await AppCheck.appCheck().token(forcingRefresh: false).token } }
Objective-C
// AppCheckTokenProvider.h @import Foundation; @import GooglePlaces; @interface AppCheckTokenProvider : NSObject <GMSPlacesAppCheckTokenProvider> @end // AppCheckTokenProvider.m #import "AppCheckTokenProvider.h" @import FirebaseAppCheck; @implementation AppCheckTokenProvider - (void)fetchAppCheckTokenWithCompletion:(nonnull GMSAppCheckTokenCompletion)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 для проверки мест и приложений.
- В файле
AppDelegateинициализируйте Places API:SDK Swift для iOS
PlacesClient.provideAPIKey("YOUR_API_KEY")
Быстрый
GMSPlacesClient.provideAPIKey("YOUR_API_KEY")
Objective-C
[GMSPlacesClient provideAPIKey:@"YOUR_API_KEY"];
- Затем инициализируйте API проверки приложений:
SDK Swift для iOS
PlacesClient.setAppCheckTokenProvider(AppCheckTokenProvider())
Быстрый
GMSPlacesClient.setAppCheckTokenProvider(AppCheckTokenProvider())
Objective-C
[GMSPlacesClient setAppCheckTokenProvider:[[AppCheckTokenProvider alloc] init]];
Шаг 5: Включите отладку (необязательно)
Если вы хотите разрабатывать и тестировать свое приложение локально или запускать его в среде непрерывной интеграции (CI), вы можете создать отладочную сборку приложения, которая использует секретный ключ отладки для получения действительных токенов App Check. Это позволяет избежать использования реальных поставщиков аттестации в вашей отладочной сборке.
Чтобы протестировать ваше приложение в симуляторе или на тестовом устройстве:
Создайте и настройте фабрику поставщиков отладки App Check.
Этот пример кода охватывает как сценарий отладки, так и сценарий эксплуатации:SDK Swift для iOS
#if targetEnvironment(simulator) let providerFactory = AppCheckDebugProviderFactory() #else let providerFactory = YourAppCheckProviderFactory() #endif
Быстрый
#if targetEnvironment(simulator) let providerFactory = AppCheckDebugProviderFactory() #else let providerFactory = YourAppCheckProviderFactory() #endif
Objective-C
if (targetEnvironment == simulator){ FIRAppCheckDebugProviderFactory *providerFactory = [[FIRAppCheckDebugProviderFactory alloc] init]; [FIRAppCheck setAppCheckProviderFactory:providerFactory]; } else { YourAppCheckProviderFactory *providerFactory = [[YourAppCheckProviderFactory alloc] init]; [FIRAppCheck setAppCheckProviderFactory:providerFactory]; }
- Включите логирование в вашем проекте Xcode, запустите приложение и найдите локальный отладочный токен в журнале.
- Добавьте этот токен в консоль Firebase.
- Для получения дополнительной информации и инструкций см. документацию по проверке приложений .
Для запуска вашего приложения в среде непрерывной интеграции (CI):
- Создайте отладочный токен в консоли Firebase и добавьте его в защищенное хранилище ключей вашей системы CI.
- В Xcode добавьте в свою схему тестирования переменную окружения с именем
FIRAAppCheckDebugTokenи значением$(APP_CHECK_DEBUG_TOKEN)(или аналогичным). - В скрипте CI-тестирования передайте отладочный токен в качестве переменной окружения.
Создайте и настройте фабрику поставщиков отладки App Check.
Этот пример кода охватывает как сценарий отладки, так и сценарий эксплуатации:SDK Swift для iOS
#if DEBUG let providerFactory = AppCheckDebugProviderFactory() #else let providerFactory = YourAppCheckProviderFactory() #endif AppCheck.setAppCheckProviderFactory(providerFactory)
Быстрый
#if DEBUG let providerFactory = AppCheckDebugProviderFactory() #else let providerFactory = YourAppCheckProviderFactory() #endif AppCheck.setAppCheckProviderFactory(providerFactory)
Objective-C
#if DEBUG id<FIRAppCheckProviderFactory> providerFactory = [[FIRAppCheckDebugProviderFactory alloc] init]; #else // DEBUG id<FIRAppCheckProviderFactory> providerFactory = [[YourAppCheckProviderFactory alloc] init]; #endif // DEBUG AppCheck.setAppCheckProviderFactory(providerFactory)
- Для получения дополнительной информации и инструкций см. документацию по проверке приложений .
Шаг 6: Отслеживайте запросы вашего приложения и принимайте решения о применении мер принуждения.
Прежде чем начать проверку, убедитесь, что это не помешает работе легитимных пользователей вашего приложения. Для этого перейдите на экран метрик проверки приложения, чтобы увидеть, какой процент трафика вашего приложения является подтвержденным, устаревшим или нелегитимным. Как только вы убедитесь, что большая часть вашего трафика подтверждена, вы можете включить проверку.
Для получения дополнительной информации и инструкций см. документацию Firebase App Check .