Na tej stronie dowiesz się, jak włączyć App Check w aplikacji Apple, korzystając z niestandardowego dostawcy App Check. Gdy włączysz App Check, pomożesz zapewnić, że tylko Twoja aplikacja będzie miała dostęp do zasobów Firebase w projekcie.
Jeśli chcesz używać App Check z wbudowanymi dostawcami, zapoznaj się z dokumentacją dotyczącą App Check z App Attest i App Check z DeviceCheck.
Zanim zaczniesz
Dodaj Firebase do projektu aplikacji na Apple, jeśli nie korzystasz w nim jeszcze z tej usługi.
Zaimplementuj logikę po stronie serwera niestandardowego dostawcy App Check.
1. Dodawanie biblioteki App Check do aplikacji
Do instalowania zależności Firebase i zarządzania nimi używaj Menedżera pakietów Swift.
W Xcode, gdy projekt aplikacji jest otwarty, kliknij File > Add Packages (Plik > Dodaj pakiety), dodaj repozytorium pakietu SDK Firebase na platformy Apple (
https://github.com/firebase/firebase-ios-sdk) i wybierz bibliotekę FirebaseAppCheck.
2. Wdrażanie protokołów App Check
Najpierw musisz utworzyć klasy, które implementują protokoły AppCheckProvider i AppCheckProviderFactory.
Klasa AppCheckProvider musi mieć metodę getToken(completion:), która zbiera informacje wymagane przez niestandardowego dostawcę App Check jako dowód 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 zawsze pobieraj nowy token w implementacji getToken(completion:).
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 App Check
Dodaj ten kod inicjujący do przedstawiciela aplikacji lub inicjatora aplikacji:
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 zacznij rozpowszechniać zaktualizowaną aplikację wśród użytkowników.
Zaktualizowana aplikacja kliencka zacznie wysyłać tokeny App Check wraz z każdym żądaniem wysyłanym do Firebase, ale usługi Firebase nie będą wymagać, aby tokeny były prawidłowe, dopóki nie włączysz egzekwowania w sekcji App Check konsoli Firebase.
Monitorowanie wskaźników i włączanie egzekwowania zasad
Zanim jednak włączysz egzekwowanie, upewnij się, że nie zakłóci to działania obecnych, uprawnionych użytkowników. Jeśli jednak zauważysz podejrzane wykorzystanie zasobów aplikacji, możesz wcześniej włączyć egzekwowanie.
Aby podjąć tę decyzję, możesz sprawdzić dane App Check dotyczące usług, z których korzystasz:
- Monitorowanie danych o żądaniach App Check w przypadku Firebase AI Logic, SQL Connect, Realtime Database, Cloud Firestore, Cloud Storage, Authentication, Google Identity na iOS, Maps JavaScript API i Places API (nowego).
- Monitorowanie danych żądań App Check dla Cloud Functions.
Włącz egzekwowanie zasad App Check
Gdy zrozumiesz, jak App Check wpłynie na użytkowników, i będziesz gotowy(-a) do dalszych działań, możesz włączyć egzekwowanie App Check:
- Włącz egzekwowanie zasad App Check w przypadku: Firebase AI Logic, SQL Connect, Realtime Database, Cloud Firestore, Cloud Storage, Authentication, Google Identity na iOS, Maps JavaScript API i Places API (nowy).
- Włącz egzekwowanie App Check dla: Cloud Functions.
Używanie App Check w środowiskach debugowania
Jeśli po zarejestrowaniu aplikacji w App Check chcesz uruchomić ją w środowisku, które App Check zwykle nie klasyfikuje jako prawidłowe, np. w symulatorze podczas programowania lub w środowisku trybu ciągłej integracji (CI), możesz utworzyć kompilację do debugowania aplikacji, która używa dostawcy debugowania App Check zamiast prawdziwego dostawcy atestów.
Zobacz Korzystanie z App Check z dostawcą debugowania na platformach Apple.