Erste Schritte mit App Check mit einem benutzerdefinierten Anbieter auf Apple-Plattformen

Auf dieser Seite erfahren Sie, wie Sie App Check in einer Apple-Anwendung mit Ihrem benutzerdefinierten App Check-Anbieter aktivieren. Wenn Sie App Check aktivieren, können Sie dafür sorgen, dass nur Ihre App auf die Firebase-Ressourcen Ihres Projekts zugreifen kann.

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

1. App Check-Bibliothek zur App hinzufügen

  1. Verwenden Sie Swift Package Manager, um Firebase-Abhängigkeiten zu installieren und zu verwalten.

    Öffnen Sie Ihr App-Projekt und gehen Sie in Xcode 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 Bibliothek FirebaseAppCheck aus.

2. App Check-Protokolle implementieren

Zuerst müssen Sie Klassen erstellen, die die Protokolle AppCheckProvider und AppCheckProviderFactory implementieren.

Ihre AppCheckProvider-Klasse muss eine getToken(completion:)-Methode haben, die alle Informationen erfasst, die Ihr benutzerdefinierter App Check-Anbieter als Echtheitsnachweis benötigt, und sie im Austausch gegen ein App Check-Token an Ihren Token-Erfassungsdienst sendet. Das App Check SDK übernimmt 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 den folgenden Initialisierungscode in Ihren App-Delegaten oder App-Initialisierer ein:

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 dann bei jeder Anfrage an Firebase App Check-Tokens. Die Firebase-Produkte erfordern jedoch erst dann gültige Tokens, wenn Sie die Erzwingung im Bereich App Check der Firebase Console aktivieren.

Messwerte beobachten und Erzwingung aktivieren

Bevor Sie die Erzwingung aktivieren, sollten Sie jedoch sicherstellen, dass dadurch Ihre bestehenden legitimen Nutzer nicht beeinträchtigt werden. Wenn Sie jedoch eine verdächtige Nutzung Ihrer App-Ressourcen feststellen, sollten Sie die Erzwingung früher aktivieren.

Als Entscheidungshilfe können Sie sich die App Check-Messwerte für die von Ihnen verwendeten Dienste ansehen:

Erzwingung von App Check aktivieren

Wenn Sie wissen, wie sich App Check auf Ihre Nutzer auswirkt, und Sie bereit sind, fortzufahren, können Sie die Erzwingung von App Check aktivieren:

App Check in Debug-Umgebungen verwenden

Wenn Sie Ihre App für App Check registriert haben und sie 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 den App Check-Debug-Anbieter anstelle eines echten Attestierungsanbieters verwendet.

Weitere Informationen finden Sie unter App Check mit dem Debug-Anbieter auf Apple-Plattformen verwenden.