Na tej stronie dowiesz się, jak włączyć Sprawdzanie aplikacji w aplikacji Apple przy użyciu 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 dokumentacją Sprawdzanie aplikacji za pomocą App Attest oraz Sprawdzanie aplikacji za pomocą DeviceCheck.
Zanim zaczniesz
Dodaj Firebase do swojego projektu Apple, jeśli jeszcze nie zostało to zrobione. jeśli już to zrobili.
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ć pakietu Swift, Menedżer.
Upewnij się też, że używasz najnowszej wersji dowolnej usługi Firebase. i kluczowe biblioteki klienta.
Uruchom
pod install
i otwórz utworzony plik.xcworkspace
.
2. Wdrażanie protokołów Sprawdzania aplikacji
Najpierw musisz utworzyć klasy, które implementują interfejsy AppCheckProvider
oraz
Protokoły AppCheckProviderFactory
.
Klasa AppCheckProvider
musi mieć metodę getToken(completion:)
, która
zbiera wszelkie informacje wymagane przez dostawcę Sprawdzania aplikacji,
potwierdza autentyczność i przesyła go do usługi pozyskiwania tokenów w
na token Sprawdzania aplikacji. Pakiet SDK Sprawdzania aplikacji obsługuje token
buforowanie, więc w swojej implementacji zawsze uzyskuj nowy token
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 Twoich danych
Implementacja 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 Sprawdzania 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ć zaktualizowane aplikacje.
Zaktualizowana aplikacja kliencka zacznie wysyłać tokeny Sprawdzania aplikacji i wysyła żądania do Firebase, ale usługi Firebase nie będą wymagać tokenów będzie ważne do momentu włączenia wymuszania w sekcji Sprawdzanie aplikacji konsoli Firebase.
Monitorowanie wskaźników i włączanie wymuszania
Zanim jednak włączysz wymuszanie, upewnij się, że nie zakłócać działanie istniejących prawidłowych użytkowników. Z drugiej strony, jeśli widzisz podejrzane wykorzystanie zasobów aplikacji, warto włączyć wymuszanie szybciej.
W podjęciu tej decyzji mogą pomóc dane funkcji Sprawdzanie aplikacji używanych usług:
- Monitorowanie danych żądań Sprawdzania aplikacji: Baza danych czasu rzeczywistego, Cloud Firestore, Cloud Storage i Uwierzytelnianie (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 zacząć możesz włączyć wymuszanie Sprawdzania aplikacji:
- Włącz wymuszanie Sprawdzania aplikacji dla Baza danych czasu rzeczywistego, Cloud Firestore, Cloud Storage i Uwierzytelnianie (beta).
- Włącz wymuszanie Sprawdzania aplikacji w Cloud Functions.
Używanie Sprawdzania aplikacji w środowiskach debugowania
Jeśli po zarejestrowaniu aplikacji w Sprawdzaniu aplikacji chcesz ją uruchomić w środowisku, którego Sprawdzanie aplikacji zwykle nie sklasyfikowałoby jako prawidłowe, takich jak symulator w fazie programowania lub w trybie ciągłej integracji (CI), możesz utworzyć kompilację do debugowania aplikacji wykorzystującą dostawca debugowania Sprawdzania aplikacji zamiast prawdziwego dostawcy atestu;
Zapoznaj się z artykułem na temat używania Sprawdzania aplikacji z dostawcą debugowania na platformach Apple.