На этой странице показано, как включить 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 . SDK App Check занимается кэшированием токенов, поэтому всегда получайте новый токен в своей реализации 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 } }
Цель-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) } }
Цель-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()
Цель-C
YourAppCheckProviderFactory *providerFactory = [[YourAppCheckProviderFactory alloc] init]; [FIRAppCheck setAppCheckProviderFactory:providerFactory]; [FIRApp configure];
Следующие шаги
После установки библиотеки App Check в ваше приложение начните распространять обновленное приложение среди своих пользователей.
Обновленное клиентское приложение начнет отправлять токены App Check вместе с каждым запросом, который оно отправляет в Firebase, но продукты Firebase не будут требовать, чтобы токены были действительными, пока вы не включите принудительное применение в разделе App Check консоли Firebase.
Отслеживайте показатели и обеспечивайте принудительное применение
Однако прежде чем включать принудительное применение, вы должны убедиться, что это не повредит работе существующих законных пользователей. С другой стороны, если вы заметили подозрительное использование ресурсов вашего приложения, возможно, вам захочется включить принудительное применение раньше.
Чтобы принять это решение, вы можете просмотреть показатели App Check для используемых вами сервисов:
- Отслеживайте показатели запросов App Check для Realtime Database , Cloud Firestore , Cloud Storage и Authentication (бета-версия).
- Отслеживайте метрики запросов App Check для Cloud Functions .
Включить принудительное выполнение App Check
Когда вы поймете, как App Check повлияет на ваших пользователей, и будете готовы продолжить, вы сможете включить принудительное выполнение App Check :
- Включите принудительное выполнение App Check для Realtime Database , Cloud Firestore , Cloud Storage и Authentication (бета-версия).
- Включите принудительное применение App Check для Cloud Functions .
Используйте App Check в средах отладки
Если после регистрации приложения для App Check вы хотите запустить его в среде, которую App Check обычно не классифицирует как допустимую, например, в симуляторе во время разработки или в среде непрерывной интеграции (CI), вы можете создайте отладочную сборку вашего приложения, которая использует поставщика отладки App Check вместо реального поставщика аттестации.
См . раздел «Использование App Check с поставщиком отладки на платформах Apple» .