Используйте проверку приложений для защиты вашего ключа API (новинка)
Firebase App Check обеспечивает защиту вызовов из вашего приложения на платформу Google Maps, блокируя трафик, поступающий из источников, отличных от законных приложений. Это делается путем проверки токена у поставщика аттестации, такого как App Attest . Интеграция ваших приложений с App Check помогает защитить их от вредоносных запросов, поэтому с вас не будет взиматься плата за несанкционированные вызовы API.
Подходит ли мне App Check?
Проверка приложений рекомендуется в большинстве случаев, однако проверка приложений не требуется или не поддерживается в следующих случаях:
- Частные или экспериментальные приложения. Если ваше приложение не является общедоступным, проверка приложений не требуется.
- Если ваше приложение используется только между серверами, проверка приложений не требуется. Однако если сервер, который взаимодействует с GMP, используется общедоступными клиентами (например, мобильными приложениями), рассмотрите возможность использования проверки приложений для защиты этого сервера вместо GMP.
- Поставщики аттестации, рекомендованные App Check, не будут работать на устройствах, которые ваш провайдер аттестации считает скомпрометированными или ненадежными. Если вам необходимо поддерживать такие устройства, вы можете развернуть специальную службу аттестации. Более подробную информацию смотрите в инструкции .
Обзор этапов реализации
В общих чертах, это шаги, которые вы должны выполнить, чтобы интегрировать свое приложение с App Check:
- Добавьте Firebase в свое приложение.
- Добавьте и инициализируйте библиотеку проверки приложений.
- Добавьте поставщика токенов в свое приложение.
- Инициализируйте API-интерфейсы Places и App Check.
- Включите отладку.
- Отслеживайте запросы приложений и принимайте решения о принудительном исполнении.
После интеграции с App Check вы сможете видеть показатели внутреннего трафика на консоли Firebase. Эти метрики обеспечивают разбивку запросов по тому, сопровождаются ли они действительным токеном проверки приложений. Дополнительную информацию см. в документации Firebase App Check .
Если вы уверены, что большинство запросов поступает из законных источников и что пользователи обновились до последней версии вашего приложения, включающей реализацию проверки приложений, вы можете включить принудительное применение. После включения принудительного применения проверка приложений будет отклонять весь трафик без действующего токена проверки приложений.
Что следует учитывать при планировании интеграции App Check
Вот некоторые вещи, которые следует учитывать при планировании интеграции:
На рекомендуемых нами поставщиков аттестации ( Device Check или App Attest ) распространяются квоты и ограничения, установленные Apple.
Вы можете использовать собственный поставщик аттестации, хотя это расширенный вариант использования. Дополнительную информацию см. в документации Firebase App Check .
Пользователи вашего приложения будут испытывать некоторую задержку при запуске. Однако после этого любая периодическая повторная аттестация будет происходить в фоновом режиме, и у пользователей больше не будет задержек. Точная задержка при запуске зависит от выбранного вами поставщика аттестации.
Время, в течение которого токен проверки приложения действителен ( время жизни или TTL), определяет частоту повторных аттестаций. Эту продолжительность можно настроить в консоли Firebase. Повторная аттестация происходит по истечении примерно половины TTL. Дополнительную информацию см. в документации Firebase вашего провайдера аттестации.
Интегрируйте свое приложение с App Check
Предпосылки и требования
- Приложение с установленным Places SDK версии 9.2 или более поздней.
- Идентификатор пакета приложения .
- Ваш идентификатор команды из Apple Member Center в разделе «Членство».
- Если вы планируете использовать проверку устройства, файл вашего закрытого ключа и идентификатор ключа .
- Вы должны быть владельцем приложения в Cloud Console.
- Вам понадобится идентификатор проекта приложения из Cloud Console.
Шаг 1. Добавьте Firebase в свое приложение
Следуйте инструкциям в документации для разработчиков Firebase , чтобы добавить Firebase в свое приложение.
Когда вы зарегистрируете свое приложение, вы получите файл конфигурации GoogleService-Info.plist
. Добавьте этот файл без изменений на корневой уровень вашего приложения.
Быстрый
import FirebaseCore import FirebaseAppCheck import GooglePlaces
Цель-C
@import FirebaseCore; @import FirebaseAppCheck; @import GooglePlaces;
Шаг 2. Добавьте библиотеку проверки приложений и инициализируйте проверку приложений.
Firebase предоставляет инструкции для каждого поставщика аттестации по умолчанию. В этих инструкциях показано, как настроить проект Firebase и добавить библиотеку App Check в ваше приложение. Следуйте предоставленным примерам кода для инициализации проверки приложений.
- Следуйте инструкциям Firebase, чтобы добавить библиотеку проверки приложений:
- Инициализируйте проверку приложений.
- Если вы используете App Attest, следуйте документации разработчика Firebase для App Attest. .
Следуйте инструкциям Firebase App Check , чтобы создать реализацию
AppCheckProviderFactory
и добавить ее в свой файлAppDelegate
.Быстрый
let providerFactory = YourAppCheckProviderFactory() AppCheck.setAppCheckProviderFactory(providerFactory)
Цель-C
YourAppCheckProviderFactory *providerFactory = [[YourAppCheckProviderFactory alloc] init]; [FIRAppCheck setAppCheckProviderFactory:providerFactory];
- Если вы используете проверку устройства, добавьте в свой
AppDelegate
следующее:Быстрый
AppCheck.setAppCheckProviderFactory(DeviceCheckProviderFactory())
Цель-C
[FIRAppCheck setAppCheckProviderFactory:providerFactory];
- Если вы используете App Attest, следуйте документации разработчика Firebase для App Attest. .
Шаг 3. Добавьте поставщика токенов
Создайте файл с именем AppCheckTokenProvider
(или, если вы используете Objective-C, два файла с именами AppCheckTokenProvider.h
и AppCheckTokenProvider.m
) на корневом уровне вашего приложения. Добавьте следующие операторы импорта и определение класса:
Быстрый
// 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 } }
Цель-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-интерфейсы Places и App Check.
- В файле
AppDelegate
инициализируйте Places API:Быстрый
GMSPlacesClient.provideAPIKey("YOUR_API_KEY")
Цель-C
[GMSPlacesClient provideAPIKey:@"YOUR_API_KEY"];
- Затем инициализируйте API проверки приложений:
Быстрый
GMSPlacesClient.setAppCheckTokenProvider(AppCheckTokenProvider())
Цель-C
[GMSPlacesClient setAppCheckTokenProvider:[[AppCheckTokenProvider alloc] init]];
Шаг 5. Включите отладку (необязательно)
Если вы хотите разработать и протестировать свое приложение локально или запустить его в среде непрерывной интеграции (CI), вы можете создать отладочную сборку своего приложения, которая использует секрет отладки для получения действительных токенов проверки приложений. Это позволяет избежать использования реальных поставщиков аттестации в отладочной сборке.
Чтобы протестировать приложение в симуляторе или на тестовом устройстве:
Создайте и настройте фабрику поставщиков отладки App Check.
Этот пример кода обрабатывает как сценарии отладки, так и рабочие сценарии:Быстрый
#if targetEnvironment(simulator) let providerFactory = AppCheckDebugProviderFactory() #else let providerFactory = YourAppCheckProviderFactory() #endif
Цель-C
if (targetEnvironment == simulator){ FIRAppCheckDebugProviderFactory *providerFactory = [[FIRAppCheckDebugProviderFactory alloc] init]; [FIRAppCheck setAppCheckProviderFactory:providerFactory]; } else { YourAppCheckProviderFactory *providerFactory = [[YourAppCheckProviderFactory alloc] init]; [FIRAppCheck setAppCheckProviderFactory:providerFactory]; }
- Включите ведение журнала в своем проекте Xcode, запустите приложение и найдите в журнале локальный токен отладки.
- Добавьте этот токен в консоль Firebase.
- Дополнительную информацию и инструкции см. в документации App Check .
Чтобы запустить приложение в среде CI:
- Создайте токен отладки в консоли Firebase и добавьте его в безопасное хранилище ключей вашей системы CI.
- В Xcode добавьте переменную среды в вашу схему тестирования с именем
FIRAAppCheckDebugToken
и$(APP_CHECK_DEBUG_TOKEN)
(или чем-то подобным) в качестве значения. - В тестовом сценарии CI передайте токен отладки в качестве среды.
Создайте и настройте фабрику поставщиков отладки App Check.
Этот пример кода обрабатывает как сценарии отладки, так и рабочие сценарии:Быстрый
#if targetEnvironment(ci) let providerFactory = AppCheckDebugProviderFactory() AppCheck.setAppCheckProviderFactory(providerFactory) #else let providerFactory = YourAppCheckProviderFactory() #endif
Цель-C
if (targetEnvironment == ci) { FIRAppCheckDebugProviderFactory *providerFactory = [[FIRAppCheckDebugProviderFactory alloc] init]; [FIRAppCheck setAppCheckProviderFactory:providerFactory]; } else { YourAppCheckProviderFactory *providerFactory = [[YourAppCheckProviderFactory alloc] init]; [FIRAppCheck setAppCheckProviderFactory:providerFactory]; }
- Дополнительную информацию и инструкции см. в документации App Check .
Шаг 6. Отслеживайте запросы приложений и принимайте решения о принудительном исполнении.
Прежде чем приступить к принудительному исполнению, вам необходимо убедиться, что вы не будете мешать законным пользователям вашего приложения. Для этого посетите экран показателей проверки приложений, чтобы узнать, какой процент трафика вашего приложения является проверенным, устаревшим или незаконным. Как только вы увидите, что большая часть вашего трафика проверена, вы можете включить принудительное применение.
Дополнительную информацию и инструкции см. в документации Firebase App Check .