Erste Schritte mit App Check mit 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, können nur Ihre App und keine anderen Apps auf die Firebase-Ressourcen Ihres Projekts zugreifen.

Wenn Sie App Check mit den integrierten Anbietern verwenden möchten, lesen Sie die Dokumentationen zu App Check mit App Attest und App Check mit DeviceCheck.

Hinweis

1. App Check-Bibliothek zur App hinzufügen

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

    pod 'FirebaseAppCheck'

    Alternativ können Sie stattdessen den Swift-Paketmanager verwenden.

    Außerdem müssen Sie die neueste Version aller Firebase-Dienst-Clientbibliotheken verwenden, die Sie benötigen.

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

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 Authentizitätsnachweis benötigt, und sie im Austausch gegen ein App Check-Token an Ihren Tokenabrufdienst sendet. Das App Check SDK kümmert sich um das Token-Caching. Daher solltest du in deiner Implementierung von getToken(completion:) immer ein neues Token abrufen.

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-Delegate 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 Anwendung installiert ist, können Sie die aktualisierte Anwendung an Ihre Nutzer verteilen.

Die aktualisierte Client-App sendet dann mit jeder Anfrage an Firebase App Check-Token. Für Firebase-Produkte müssen die Token jedoch erst dann gültig sein, 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 darauf achten, dass dadurch Ihre legitimen Nutzer nicht gestört werden. Wenn Sie jedoch eine verdächtige Nutzung Ihrer App-Ressourcen feststellen, sollten Sie die Erzwingung früher aktivieren.

Bei der Entscheidung können dir App Check Messwerte für die von dir verwendeten Dienste helfen:

Erzwingung für App Check aktivieren

Wenn Sie wissen, wie sich App Check auf Ihre Nutzer auswirkt, und bereit sind, fortzufahren, können Sie die Durchsetzung 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 Umgebung für kontinuierliche Integration (CI), können Sie einen Debug-Build Ihrer App erstellen, der den App Check-Debuganbieter anstelle eines echten Attestierungsanbieters verwendet.

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