Auf dieser Seite erfahren Sie, wie Sie App Check in einer Apple-App mit Ihrem benutzerdefinierten App Check Anbieter aktivieren. Wenn Sie App Check, aktivieren, können nur Ihre Apps auf die Firebase-Ressourcen Ihres Projekts zugreifen.
Wenn Sie App Check mit den integrierten Anbietern verwenden möchten, lesen Sie die Dokumentation zu App Check mit App Attest und App Check mit DeviceCheck.
Hinweis
Fügen Sie Ihrem Apple-Projekt Firebase hinzu, falls noch nicht geschehen.
Implementieren Sie die serverseitige Logik Ihres benutzerdefinierten App Check Anbieters.
1. App Check-Bibliothek zu Ihrer App hinzufügen
Verwenden Sie Swift Package Manager, um Firebase-Abhängigkeiten zu installieren und zu verwalten.
Öffnen Sie Ihr App-Projekt in Xcode und gehen Sie zu File > Add Packages (Datei > Pakete hinzufügen). Fügen Sie das Firebase Apple Platforms SDK-Repository (
https://github.com/firebase/firebase-ios-sdk) hinzu und wählen Sie die FirebaseAppCheck -Bibliothek aus.
2. Die App Check Protokolle implementieren
Zuerst müssen Sie Klassen erstellen, die die AppCheckProvider und
AppCheckProviderFactory Protokolle implementieren.
Ihre AppCheckProvider-Klasse muss eine getToken(completion:)-Methode haben, die
alle Informationen erfasst, die Ihr benutzerdefinierter App Check-Anbieter als
Authentizitätsnachweis benötigt, und sie an Ihren Token-Abrufdienst sendet, um ein App Check-Token zu erhalten. Das App Check SDK verarbeitet das Token
Caching. Rufen Sie daher in Ihrer Implementierung von
getToken(completion:) immer ein neues Token ab.
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
Implementieren Sie außerdem eine AppCheckProviderFactory-Klasse, die Instanzen Ihrer
AppCheckProvider-Implementierung erstellt:
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. App Check initialisieren
Fügen Sie Ihrem App-Delegaten oder App-Initialisierer den folgenden Initialisierungscode hinzu:
Swift
let providerFactory = YourAppCheckProviderFactory() AppCheck.setAppCheckProviderFactory(providerFactory) FirebaseApp.configure()
Objective-C
YourAppCheckProviderFactory *providerFactory = [[YourAppCheckProviderFactory alloc] init]; [FIRAppCheck setAppCheckProviderFactory:providerFactory]; [FIRApp configure];
Nächste Schritte
Sobald die App Check Bibliothek in Ihrer App installiert ist, können Sie die aktualisierte App für Ihre Nutzer bereitstellen.
Die aktualisierte Client-App sendet mit jeder Anfrage an Firebase App Check Tokens. Die Firebase-Produkte erfordern jedoch erst dann gültige Tokens, wenn Sie die Erzwingung im App Check Bereich der Firebase-Konsole aktivieren.
Messwerte beobachten und Erzwingung aktivieren
Bevor Sie die Erzwingung aktivieren, sollten Sie prüfen, ob dies Ihre bestehenden legitimen Nutzer beeinträchtigt. Wenn Sie andererseits eine verdächtige Nutzung Ihrer App-Ressourcen feststellen, sollten Sie die Erzwingung möglicherweise früher aktivieren.
Um diese Entscheidung zu treffen, können Sie sich die App Check Messwerte für die Dienste ansehen, die Sie verwenden:
- Beobachten Sie die Messwerte für App CheckAnfragen für Firebase AI Logic, Data Connect, Realtime Database, Cloud Firestore, Cloud Storage, Authentication, Google Identity for iOS, Maps JavaScript API und Places API (neu).
- Beobachten Sie die Messwerte für App Check Anfragen für Cloud Functions.
Erzwingung aktivierenApp Check
Wenn Sie wissen, wie sich App Check auf Ihre Nutzer auswirkt, und bereit sind, fortzufahren, können Sie die App Check Erzwingung aktivieren:
- Aktivieren Sie die App Check Erzwingung für Firebase AI Logic, Data Connect, Realtime Database, Cloud Firestore, Cloud Storage, Authentication, Google Identity for iOS, Maps JavaScript API und Places API (neu).
- Aktivieren Sie die App Check Erzwingung für Cloud Functions.
App Check in Debugging-Umgebungen verwenden
Wenn Sie Ihre App nach der Registrierung für App Check in einer Umgebung ausführen möchten, die von App Check normalerweise nicht als gültig eingestuft wird, z. B. in einem Simulator während der Entwicklung oder in einer CI-Umgebung (Continuous Integration), können Sie einen Debug-Build Ihrer App erstellen, der anstelle eines echten Attestierungsanbieters den App Check Debug-Anbieter verwendet.
Weitere Informationen finden Sie unter Verwenden Sie App Check mit dem Debugging-Anbieter auf Apple-Plattformen.