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

Sie können mit App Check auch nicht Firebase-Ressourcen Ihrer App wie selbst gehostete Backends schützen. Dazu sind die folgenden beiden Schritte erforderlich:

Hinweis

Fügen Sie Ihrer App App Check hinzu. Verwenden Sie dazu entweder App Attest, DeviceCheck oder einen benutzerdefinierten Anbieter.

App Check Tokens mit Backend-Anfragen senden

Damit Ihre Backend-Anfragen ein gültiges, nicht abgelaufenes App Check-Token enthalten, Jede Anfrage in einen Aufruf von AppCheck.token() verpacken. Die App Check-Bibliothek aktualisiert das Token bei Bedarf. Sie können auf das Token in der Vervollständigungsblock der Methode.

Sobald du ein gültiges Token hast, sende es zusammen mit der Anfrage an dein Backend. Die darüber, wie Sie dies erreichen, liegt bei Ihnen. Senden Sie jedoch keine App Check-Tokens als Teil von URLs, auch in Abfrageparametern, da machen sie anfällig für versehentliches Datenleck und Abfangen. Die folgenden wird das Token in einem benutzerdefinierten HTTP-Header gesendet. Dies ist die empfohlene Ansatz.

Swift

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
}

Objective-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];
}];

Replay-Schutz (Beta)

Beim Senden einer Anfrage an einen Endpunkt, für den Sie die Option Replay-Schutz die Anfrage in einen Aufruf von limitedUseToken() anstelle von token() verpacken:

Swift

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

Objective-C

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