Schützen Sie Nicht-Firebase-Ressourcen mit App Check auf Apple-Plattformen

Mit App Check können Sie die Nicht-Firebase-Ressourcen Ihrer App, z. B. selbstgehostete Backends, schützen. Dazu müssen Sie beide der folgenden Schritte ausführen:

Bevor Sie beginnen

Fügen Sie App Check zu Ihrer App hinzu, indem Sie entweder App Attest , DeviceCheck oder einen benutzerdefinierten Anbieter verwenden.

Senden Sie App-Check-Tokens mit Backend-Anfragen

Um sicherzustellen, dass Ihre Backend-Anfragen ein gültiges, nicht abgelaufenes App Check-Token enthalten, schließen Sie jede Anfrage in einen Aufruf von AppCheck.token() ein. Die App Check-Bibliothek aktualisiert das Token bei Bedarf und Sie können im Abschlussblock der Methode auf das Token zugreifen.

Sobald Sie über ein gültiges Token verfügen, senden Sie es zusammen mit der Anfrage an Ihr Backend. Die Einzelheiten, wie Sie dies erreichen, liegen bei Ihnen, aber senden Sie App Check-Tokens nicht als Teil von URLs, auch nicht in Abfrageparametern, da sie dadurch anfällig für versehentliche Datenlecks und Abhörvorgänge sind. Im folgenden Beispiel wird das Token in einem benutzerdefinierten HTTP-Header gesendet. Dies ist die empfohlene Vorgehensweise.

Schnell

do {
  let token = try await AppCheck.appCheck().token(forcingRefresh: false)

  // Get the raw App Check token string.
  let tokenString = token.token

  // Include the App Check token with requests to your server.
  let url = URL(string: "https://yourbackend.example.com/yourApiEndpoint")!
  var request = URLRequest(url: url)
  request.httpMethod = "GET"
  request.setValue(tokenString, forHTTPHeaderField: "X-Firebase-AppCheck")

  let task = URLSession.shared.dataTask(with: request) { data, response, error in
      // Handle response from your backend.
  }
  task.resume()
} catch(let error) {
  print("Unable to retrieve App Check token: \(error)")
  return
}

Ziel c

[[FIRAppCheck appCheck] tokenForcingRefresh:NO
                                 completion:^(FIRAppCheckToken * _Nullable token,
                                              NSError * _Nullable error) {
    if (error != nil) {
        // Handle any errors if the token was not retrieved.
        NSLog(@"Unable to retrieve App Check token: %@", error);
        return;
    }
    if (token == nil) {
        NSLog(@"Unable to retrieve App Check token.");
        return;
    }

    // Get the raw App Check token string.
    NSString *tokenString = token.token;

    // Include the App Check token with requests to your server.
    NSURL *url = [[NSURL alloc] initWithString:@"https://yourbackend.example.com/yourApiEndpoint"];
    NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:url];
    [request setHTTPMethod:@"GET"];
    [request setValue:tokenString forHTTPHeaderField:@"X-Firebase-AppCheck"];

    NSURLSessionDataTask *task =
        [[NSURLSession sharedSession] dataTaskWithRequest:request
                                        completionHandler:^(NSData * _Nullable data,
                                                            NSURLResponse * _Nullable response,
                                                            NSError * _Nullable error) {
        // Handle response from your backend.
    }];
    [task resume];
}];

Wiedergabeschutz (Beta)

Wenn Sie eine Anfrage an einen Endpunkt stellen, für den Sie den Wiedergabeschutz aktiviert haben, schließen Sie die Anfrage in einen Aufruf von limitedUseToken() anstelle von token() ein:

Schnell

AppCheck.appCheck().limitedUseToken() { token, error in
  // ...
}

Ziel c

[[FIRAppCheck appCheck] limitedUseTokenWithCompletion:^(FIRAppCheckToken * _Nullable token,
                                                        NSError * _Nullable error) {
    // ...
}];