На этой странице показано, как включить App Check в приложении Apple с помощью вашего поставщика App Check . Включение App Check гарантирует, что доступ к ресурсам Firebase вашего проекта будет иметь только ваше приложение.
Если вы хотите использовать App Check со встроенными поставщиками, см. документацию по App Check с App Attest и App Check с DeviceCheck .
Прежде чем начать
Добавьте Firebase в свой проект Apple, если вы еще этого не сделали.
Реализуйте серверную логику вашего собственного поставщика App Check .
1. Добавьте библиотеку App Check в свое приложение.
Добавьте зависимость для App Check в
Podfileвашего проекта:pod 'FirebaseAppCheck'
Или, в качестве альтернативы, вы можете использовать Swift Package Manager .
Кроме того, убедитесь, что вы используете последнюю версию всех клиентских библиотек службы Firebase, от которых вы зависите.
Запустите
pod installи откройте созданный файл.xcworkspace.
2. Внедрите протоколы App Check
Сначала необходимо создать классы, реализующие протоколы AppCheckProvider и AppCheckProviderFactory .
Ваш класс AppCheckProvider должен иметь метод getToken(completion:) , который собирает всю информацию, необходимую вашему поставщику App Check для подтверждения подлинности, и отправляет её в ваш сервис получения токенов в обмен на токен App Check . App Check SDK обрабатывает кэширование токенов, поэтому всегда получайте новый токен в своей реализации getToken(completion:) .
Быстрый
class YourCustomAppCheckProvider: NSObject, AppCheckProvider { var app: FirebaseApp init(withFirebaseApp app: FirebaseApp) { self.app = app super.init() } func getToken() async throws -> AppCheckToken { let getTokenTask = Task { () -> AppCheckToken in // ... // Create AppCheckToken object. let exp = Date(timeIntervalSince1970: expirationFromServer) let token = AppCheckToken( token: tokenFromServer, expirationDate: exp ) if Date() > exp { throw NSError(domain: "ExampleError", code: 1, userInfo: nil) } return token } return try await getTokenTask.value } }
Objective-C
@interface YourCustomAppCheckProvider : NSObject <FIRAppCheckProvider> @property FIRApp *app; - (id)initWithApp:(FIRApp *)app; @end @implementation YourCustomAppCheckProvider - (id)initWithApp:app { self = [super init]; if (self) { self.app = app; } return self; } - (void)getTokenWithCompletion:(nonnull void (^)(FIRAppCheckToken * _Nullable, NSError * _Nullable))handler { dispatch_async(dispatch_get_main_queue(), ^{ // Logic to exchange proof of authenticity for an App Check token. // ... // Create FIRAppCheckToken object. NSTimeInterval exp = expirationFromServer; FIRAppCheckToken *token = [[FIRAppCheckToken alloc] initWithToken:tokenFromServer expirationDate:[NSDate dateWithTimeIntervalSince1970:exp]]; // Pass the token or error to the completion handler. handler(token, nil); }); } @end
Также реализуйте класс AppCheckProviderFactory , который создает экземпляры вашей реализации AppCheckProvider :
Быстрый
class YourCustomAppCheckProviderFactory: NSObject, AppCheckProviderFactory { func createProvider(with app: FirebaseApp) -> AppCheckProvider? { return YourCustomAppCheckProvider(withFirebaseApp: app) } }
Objective-C
@interface YourCustomAppCheckProviderFactory : NSObject <FIRAppCheckProviderFactory> @end @implementation YourCustomAppCheckProviderFactory - (nullable id<FIRAppCheckProvider>)createProviderWithApp:(FIRApp *)app { return [[YourCustomAppCheckProvider alloc] initWithApp:app]; } @end
3. Инициализируйте App Check
Добавьте следующий код инициализации в делегат приложения или инициализатор приложения:
Быстрый
let providerFactory = YourAppCheckProviderFactory() AppCheck.setAppCheckProviderFactory(providerFactory) FirebaseApp.configure()
Objective-C
YourAppCheckProviderFactory *providerFactory = [[YourAppCheckProviderFactory alloc] init]; [FIRAppCheck setAppCheckProviderFactory:providerFactory]; [FIRApp configure];
Следующие шаги
После установки библиотеки App Check в ваше приложение начните распространять обновленное приложение среди своих пользователей.
Обновленное клиентское приложение начнет отправлять токены App Check вместе с каждым запросом, который оно делает в Firebase, но продукты Firebase не будут требовать, чтобы токены были действительными, пока вы не включите принудительное применение в разделе App Check консоли Firebase.
Мониторинг показателей и обеспечение соблюдения правил
Однако, прежде чем включить принудительное применение, следует убедиться, что это не помешает работе ваших законных пользователей. С другой стороны, если вы замечаете подозрительное использование ресурсов вашего приложения, возможно, стоит включить принудительное применение раньше.
Чтобы принять решение, вы можете изучить показатели App Check для используемых вами сервисов:
- Отслеживайте метрики запросов App Check для Firebase AI Logic , Data Connect , Realtime Database , Cloud Firestore , Cloud Storage , Authentication , Google Identity для iOS, Maps JavaScript API и Places API (новое).
- Мониторинг метрик запросов App Check для Cloud Functions .
Включить принудительное выполнение App Check
Когда вы поймете, как App Check повлияет на ваших пользователей, и будете готовы продолжить, вы можете включить принудительное применение App Check :
- Включить принудительное App Check для Firebase AI Logic , Data Connect , Realtime Database , Cloud Firestore , Cloud Storage , Authentication , Google Identity для iOS, Maps JavaScript API и Places API (новое).
- Включить принудительное выполнение App Check для Cloud Functions .
Используйте App Check в средах отладки
Если после регистрации приложения в App Check вы хотите запустить его в среде, которую App Check обычно не классифицирует как допустимую, например, в симуляторе во время разработки или в среде непрерывной интеграции (CI), вы можете создать отладочную сборку своего приложения, которая использует поставщик отладки App Check вместо настоящего поставщика аттестации.
См. раздел Использование App Check с поставщиком отладки на платформах Apple .