На этой странице показано, как включить 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 } }
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 for 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 for iOS, Maps JavaScript API и Places API (новая функция).
- Включите принудительное применение App Check для Cloud Functions .
Используйте App Check в средах отладки.
Если после регистрации вашего приложения в App Check вы хотите запустить его в среде, которую App Check обычно не классифицирует как допустимую, например, в симуляторе во время разработки или в среде непрерывной интеграции (CI), вы можете создать отладочную сборку вашего приложения, которая использует отладочный поставщик App Check вместо реального поставщика аттестации.
См. раздел «Использование App Check с помощью отладчика на платформах Apple» .