Z tej strony dowiesz się, jak włączyć App Check w aplikacji na Apple przy użyciu swojego niestandardowego dostawcy App Check. Gdy włączysz App Check, będziesz mieć pewność, że tylko Twoja aplikacja może uzyskiwać dostęp do zasobów Firebase w Twoim projekcie.
Jeśli chcesz używać App Check z wbudowanymi dostawcami, zapoznaj się z dokumentacją App Check z App Attest i App Check z DeviceCheck.
Zanim zaczniesz
Dodaj Firebase do projektu Apple, jeśli jeszcze tego nie zrobisz.
Zaimplementuj logikę po stronie serwera niestandardowego dostawcy App CheckSprawdzania aplikacji.
1. Dodaj bibliotekę App Check do aplikacji
Do instalacji zależności Firebase i do zarządzania nimi możesz używać menedżera pakietów Swift.
Po otwarciu projektu aplikacji wybierz w Xcode opcję File > Add Packages (Plik > Dodaj pakiety), dodaj repozytorium pakietu SDK Firebase dla platform Apple (
https://github.com/firebase/firebase-ios-sdk) i wybierz bibliotekę FirebaseAppCheck.
2. Zaimplementuj 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
zbiera wszystkie 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, dlatego w implementacji
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 App Check
Dodaj ten kod inicjujący do delegata 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
Gdy biblioteka App Check zostanie zainstalowana w aplikacji, zacznij rozpowszechniać zaktualizowaną aplikację wśród użytkowników.
Zaktualizowana aplikacja kliencka zacznie wysyłać App Check tokeny 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 w konsoli Firebase.
Monitoruj dane i włącz egzekwowanie
Zanim włączysz egzekwowanie, upewnij się, że nie zakłóci to działania dotychczasowych użytkowników. Z drugiej strony, jeśli zauważysz podejrzane korzystanie z zasobów aplikacji, możesz włączyć egzekwowanie wcześniej.
Aby ułatwić podjęcie decyzji, możesz sprawdzić dane App Check dotyczące używanych usług:
- Monitoruj dane żądań w przypadku Firebase AI Logic, SQL Connect, Realtime Database, Cloud Firestore, Cloud Storage, Authentication, Google Identity for iOS, Maps JavaScript API i Places API (nowa wersja).App Check
- Monitoruj dane żądań App Check w przypadku Cloud Functions.
Włącz egzekwowanie App Check
Gdy zrozumiesz, jak App Check wpłynie na użytkowników, i będziesz gotowy(-a) do kontynuowania, możesz włączyć egzekwowanie App Check:
- Włącz egzekwowanie w przypadku Firebase AI Logic, SQL Connect, Realtime Database, Cloud Firestore, Cloud Storage, Authentication, Google Identity for iOS, Maps JavaScript API i Places API (nowa wersja).App Check
- Włącz egzekwowanie w przypadku Cloud Functions.App Check
Używaj App Check w środowiskach debugowania
Jeśli po zarejestrowaniu aplikacji w App Check chcesz uruchomić swoją aplikację w środowisku, które App Check zwykle nie klasyfikuje jako prawidłowe, np. w symulatorze podczas programowania lub w środowisku ciągłej integracji (CI), możesz utworzyć kompilację debugowania aplikacji, która zamiast prawdziwego dostawcy potwierdzenia będzie używać dostawcy debugowania App Check.
Zobacz Używanie App Check z dostawcą debugowania na platformach Apple.