Beginnen Sie mit der Verwendung von App Check bei einem benutzerdefinierten Anbieter auf Apple-Plattformen

Auf dieser Seite erfahren Sie, wie Sie App Check in einer Apple-App mithilfe Ihres benutzerdefinierten App Check-Anbieters aktivieren. Wenn Sie App Check aktivieren, stellen Sie sicher, 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 Dokumente zu App Check mit App Attest und App Check mit DeviceCheck .

Bevor Sie beginnen

1. Fügen Sie die App Check-Bibliothek zu Ihrer App hinzu

  1. Fügen Sie die Abhängigkeit für App Check zur Podfile Ihres Projekts hinzu:

    pod 'FirebaseAppCheck'

    Alternativ können Sie auch den Swift Package Manager verwenden.

    Stellen Sie außerdem sicher, dass Sie die neueste Version aller Clientbibliotheken des Firebase-Dienstes verwenden, auf die Sie angewiesen sind.

  2. Führen Sie pod install und öffnen Sie die erstellte .xcworkspace Datei.

2. Implementieren Sie die App Check-Protokolle

Zunächst müssen Sie Klassen erstellen, die die Protokolle AppCheckProvider und AppCheckProviderFactory implementieren.

Ihre AppCheckProvider Klasse muss über eine getToken(completion:) Methode verfügen, die alle Informationen sammelt, die Ihr benutzerdefinierter App Check-Anbieter als Authentizitätsnachweis benötigt, und diese im Austausch gegen ein App Check-Token an Ihren Token-Erwerbsdienst sendet. Das App Check SDK übernimmt das Token-Caching. Besorgen Sie sich daher immer ein neues Token in Ihrer Implementierung von getToken(completion:) .

Schnell

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
  }

}

Ziel 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:

Schnell

class YourCustomAppCheckProviderFactory: NSObject, AppCheckProviderFactory {
  func createProvider(with app: FirebaseApp) -> AppCheckProvider? {
    return YourCustomAppCheckProvider(withFirebaseApp: app)
  }
}

Ziel 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:

Schnell

let providerFactory = YourAppCheckProviderFactory()
AppCheck.setAppCheckProviderFactory(providerFactory)

FirebaseApp.configure()

Ziel c

YourAppCheckProviderFactory *providerFactory =
        [[YourAppCheckProviderFactory alloc] init];
[FIRAppCheck setAppCheckProviderFactory:providerFactory];

[FIRApp configure];

Nächste Schritte

Sobald die App Check-Bibliothek in Ihrer App installiert ist, beginnen Sie mit der Verteilung der aktualisierten App an Ihre Benutzer.

Die aktualisierte Client-App beginnt mit dem Senden von App Check-Tokens zusammen mit jeder Anfrage an Firebase. Für Firebase-Produkte müssen die Token jedoch erst dann gültig sein, wenn Sie die Durchsetzung im Abschnitt „App Check“ der Firebase-Konsole aktivieren.

Überwachen Sie Metriken und aktivieren Sie die Durchsetzung

Bevor Sie die Durchsetzung aktivieren, sollten Sie jedoch sicherstellen, dass Ihre vorhandenen legitimen Benutzer dadurch nicht beeinträchtigt werden. Wenn Sie jedoch feststellen, dass Ihre App-Ressourcen verdächtig genutzt werden, sollten Sie die Durchsetzung möglicherweise früher aktivieren.

Um diese Entscheidung zu treffen, können Sie sich die App Check-Metriken für die von Ihnen genutzten Dienste ansehen:

Aktivieren Sie die Durchsetzung der App-Prüfung

Wenn Sie verstehen, wie sich App Check auf Ihre Benutzer auswirkt, und Sie bereit sind, fortzufahren, können Sie die Durchsetzung von App Check aktivieren:

Verwenden Sie App Check in Debug-Umgebungen

Wenn Sie Ihre App nach der Registrierung für App Check in einer Umgebung ausführen möchten, die App Check normalerweise nicht als gültig einstufen würde, z. B. in einem Simulator während der Entwicklung oder in einer CI-Umgebung (Continuous Integration), können Sie dies tun Erstellen Sie einen Debug-Build Ihrer App, der den App Check-Debug-Anbieter anstelle eines echten Nachweisanbieters verwendet.

Siehe Verwenden von App Check mit dem Debug-Anbieter auf Apple-Plattformen .