Na tej stronie znajdziesz instrukcje włączania funkcji App Check w aplikacji Apple przy użyciu własnego dostawcy App Check. Gdy włączysz App Check, masz pewność, że dostęp do zasobów Firebase w Twoim projekcie będzie mieć tylko Twoja aplikacja.
Jeśli chcesz używać App Check z wbudowanymi dostawcami, zapoznaj się z dokumentacją dotyczącą App Check z Apple App Attest i App Check z DeviceCheck.
Zanim zaczniesz
Dodaj Firebase do projektu Apple, jeśli nie zostało to jeszcze zrobione.
Wdróż logikę po stronie serwera niestandardowego dostawcy App Check.
1. Dodawanie biblioteki App Check do aplikacji
Dodaj zależność App Check do
Podfile
w projekcie:pod 'FirebaseAppCheck'
Możesz też użyć menedżera pakietów Swift.
Sprawdź też, czy używasz najnowszych wersji bibliotek klienta usług Firebase, od których zależysz.
Uruchom
pod install
i otwórz utworzony plik.xcworkspace
.
2. Wdrożenie protokołów App Check
Najpierw musisz utworzyć klasy, które implementują protokoły AppCheckProvider
i AppCheckProviderFactory
.
Klasa AppCheckProvider
musi zawierać metodę getToken(completion:)
, która zbiera informacje wymagane przez niestandardowego dostawcę App Check jako dowód autentyczności, a następnie 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. Inicjowanie App Check
Dodaj ten kod inicjalizacji do swojego 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
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 zasad, upewnij się, że nie zakłóci to działania dotychczasowych prawidłowych użytkowników. Jeśli jednak zauważysz podejrzane wykorzystanie zasobów aplikacji, możesz wcześniej włączyć egzekwowanie.
Aby ułatwić sobie podjęcie decyzji, możesz sprawdzić dane App Check dotyczące usług, których używasz:
- Monitorowanie danych o żądaniach App Check w przypadku interfejsów Data Connect, Vertex AI in Firebase, Realtime Database, Cloud Firestore, Cloud Storage, Authentication, Google Identity for iOS, Maps JavaScript API i Places API (nowy).
- Monitoruj dane App Check dotyczące żądań w przypadku Cloud Functions.
Włącz wymuszanie App Check
Gdy zrozumiesz, jak App Check wpłynie na użytkowników i będziesz gotowy do dalszych działań, możesz włączyć egzekwowanie App Check:
- Włącz wymuszanie App Check w przypadku interfejsów Data Connect, Vertex AI in Firebase, Realtime Database, Cloud Firestore, Cloud Storage, Authentication, Google Identity for iOS, Map JavaScript API i Places API (nowy).
- 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 uruchomić ją w środowisku, które App Check normalnie nie uzna za ważne, np. w symulatorze podczas tworzenia lub w środowisku ciągłej integracji (CI), możesz utworzyć wersję debugową aplikacji, która używa dostawcy debugowania App Check zamiast prawdziwego dostawcy uwierzytelniania.
Zobacz artykuł Korzystanie z App Check z dostawcą usług debugowania na platformach Apple.