Z tej strony dowiesz się, jak włączyć usługę App Check w aplikacji Apple za pomocą niestandardowego dostawcy App Check. Włączenie usługi App Check sprawi, że tylko Twoja aplikacja będzie miała dostęp do zasobów Firebase projektu.
Jeśli z wbudowanymi dostawcami chcesz używać App Check, zapoznaj się z dokumentacją App Check z aplikacją App Attest i App Check z DeviceCheck.
Zanim zaczniesz
Dodaj Firebase do projektu Apple, jeśli nie zostało to jeszcze zrobione.
Wdróż niestandardową logikę dostawcy App Check po stronie serwera.
1. Dodawanie biblioteki App Check do aplikacji
Dodaj zależność App Check do
Podfile
w projekcie:pod 'FirebaseAppCheck'
Możesz też użyć Swift Package Manager.
Sprawdź też, czy używasz najnowszej wersji bibliotek klienta usług Firebase, od których zależysz.
Uruchom
pod install
i otwórz utworzony plik.xcworkspace
.
2. Wdróż protokoły App Check
Najpierw musisz utworzyć klasy, które implementują protokoły AppCheckProvider
i AppCheckProviderFactory
.
Klasa AppCheckProvider
musi mieć metodę getToken(completion:)
, która gromadzi informacje wymagane przez niestandardowego dostawcę App Check w celu potwierdzenia autentyczności i wysyła je do usługi pozyskiwania tokenów w zamian za token App Check. Pakiet SDK App Check obsługuje buforowanie tokenów, więc w implementacji pakietu getToken(completion:)
zawsze pobieraj nowy token.
Swift
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
Zaimplementuj też klasę AppCheckProviderFactory
, która tworzy instancje implementacji AppCheckProvider
:
Swift
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. Zainicjuj instancję App Check
Dodaj ten kod inicjowania do osoby, która przekazała dostęp do aplikacji lub do jej inicjatora:
Swift
let providerFactory = YourAppCheckProviderFactory() AppCheck.setAppCheckProviderFactory(providerFactory) FirebaseApp.configure()
Objective-C
YourAppCheckProviderFactory *providerFactory = [[YourAppCheckProviderFactory alloc] init]; [FIRAppCheck setAppCheckProviderFactory:providerFactory]; [FIRApp configure];
Dalsze kroki
Po zainstalowaniu biblioteki App Check w aplikacji rozpocznij dystrybucję zaktualizowanej aplikacji do użytkowników.
Zaktualizowana aplikacja kliencka zacznie wysyłać tokeny App Check wraz z każdą prośbą wysyłaną do Firebase, ale usługi Firebase nie będą wymagać, aby tokeny były prawidłowe, dopóki nie włączysz wymuszania w sekcji App Check w konsoli Firebase.
Monitorowanie danych i włączanie egzekwowania
Zanim jednak włączysz egzekwowanie, upewnij się, że nie zakłóci to działania istniejących prawidłowych użytkowników. Jeśli natomiast zauważysz podejrzane wykorzystanie zasobów aplikacji, możesz szybciej włączyć egzekwowanie.
Aby ułatwić sobie podjęcie decyzji, możesz sprawdzić dane App Check dotyczące usług, których używasz:
- Monitoruj dane żądań App Check w przypadku Realtime Database, Cloud Firestore, Cloud Storage, Authentication (beta) i Vertex AI in Firebase.
- Monitoruj dane dotyczące żądań (App Check) związanych z Cloud Functions.
Włączanie wymuszania zasad App Check
Gdy ustalisz, jak App Check wpłynie na użytkowników, i chcesz kontynuować, możesz włączyć egzekwowanie zasad App Check:
- Włącz egzekwowanie App Check na urządzeniach Realtime Database, Cloud Firestore, Cloud Storage, Authentication (beta) i Vertex AI in Firebase.
- Włącz wymuszanie App Check w Cloud Functions.
Używanie App Check w środowiskach debugowania
Jeśli po zarejestrowaniu aplikacji w usłudze App Check chcesz ją uruchamiać w środowisku, które normalnie nie zostałoby sklasyfikowane jako prawidłowe, np. w symulatorze podczas programowania lub w środowisku ciągłej integracji (CI), możesz utworzyć kompilację do debugowania aplikacji, która korzysta z dostawcy debugowania App Check zamiast prawdziwego dostawcy atestów.App Check
Zobacz Korzystanie z App Check z dostawcą usług debugowania na platformach Apple.