Z tej strony dowiesz się, jak włączyć Sprawdzanie aplikacji w aplikacji Apple za pomocą niestandardowego dostawcy Sprawdzania aplikacji. Gdy włączysz Sprawdzanie aplikacji, masz pewność, że tylko Twoja aplikacja ma dostęp do zasobów Firebase projektu.
Jeśli chcesz używać Sprawdzania aplikacji z wbudowanymi dostawcami, zapoznaj się z dokumentami Sprawdzanie aplikacji za pomocą atestu i Sprawdzanie aplikacji przy użyciu DeviceCheck.
Zanim zaczniesz
Dodaj Firebase do swojego projektu Apple, jeśli jeszcze go nie masz.
Zaimplementuj niestandardową logikę dostawcy Sprawdzania aplikacji po stronie serwera
1. Dodawanie biblioteki Sprawdzania aplikacji do aplikacji
Dodaj zależność Sprawdzania aplikacji do zasobu
Podfile
projektu:pod 'FirebaseAppCheck'
Możesz też użyć Swift Package Manager.
Upewnij się też, że używasz najnowszej wersji wszystkich bibliotek klienta usługi Firebase, na których Ci zależy.
Uruchom
pod install
i otwórz utworzony plik.xcworkspace
.
2. Wdrażanie protokołów Sprawdzania aplikacji
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ę Sprawdzania aplikacji w celu potwierdzenia autentyczności i wysyła ją do usługi pozyskiwania tokenów w zamian za token Sprawdzania aplikacji. Pakiet SDK Sprawdzania aplikacji obsługuje buforowanie tokenów, więc w swojej implementacji getToken(completion:)
zawsze należy uzyskać 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 wystąpienia Twojej 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 Sprawdzanie aplikacji
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
Gdy zainstalujesz w aplikacji bibliotekę Sprawdzanie aplikacji, zacznij rozpowszechniać zaktualizowaną aplikację wśród użytkowników.
Zaktualizowana aplikacja kliencka zacznie wysyłać tokeny Sprawdzania aplikacji wraz z każdym żądaniem do Firebase, ale usługi Firebase nie będą wymagały ważności tokenów, dopóki nie włączysz wymuszania w sekcji Sprawdzanie aplikacji w konsoli Firebase.
Monitorowanie wskaźników i włączanie wymuszania
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 tej decyzji, możesz przejrzeć wskaźniki Sprawdzania aplikacji dotyczące używanych przez Ciebie usług:
- Monitorowanie wskaźników żądań Sprawdzania aplikacji dotyczących Bazy danych czasu rzeczywistego, Cloud Firestore, Cloud Storage i uwierzytelniania (w wersji beta).
- Monitorowanie wskaźników żądań Sprawdzania aplikacji w Cloud Functions
Włącz wymuszanie Sprawdzania aplikacji
Gdy zrozumiesz, jak Sprawdzanie aplikacji wpłynie na Twoich użytkowników, możesz włączyć wymuszanie Sprawdzania aplikacji:
- Włącz wymuszanie Sprawdzania aplikacji w przypadku Bazy danych czasu rzeczywistego, Cloud Firestore, Cloud Storage i uwierzytelniania (w wersji beta).
- Włącz wymuszanie Sprawdzania aplikacji w Cloud Functions.
Używanie Sprawdzania aplikacji w środowiskach debugowania
Jeśli po zarejestrowaniu aplikacji na potrzeby Sprawdzania aplikacji chcesz uruchamiać ją w środowisku, które zwykle 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 Sprawdzania aplikacji zamiast prawdziwego dostawcy atestów.
Zapoznaj się z artykułem na temat używania Sprawdzania aplikacji z dostawcą debugowania na platformach Apple.