Ochrona zasobów spoza Firebase za pomocą Sprawdzania aplikacji na platformach Apple

Zasoby aplikacji spoza Firebase, takie jak własne backendy, możesz chronić za pomocą Sprawdzania aplikacji. Aby to zrobić, musisz wykonać obie te czynności:

Zanim zaczniesz

Dodaj do swojej aplikacji Sprawdzanie aplikacji za pomocą narzędzia App Attest, DeviceCheck lub dostawcy niestandardowego.

Wysyłaj tokeny Sprawdzania aplikacji z żądaniami backendu

Aby mieć pewność, że żądania backendu zawierają prawidłowy, niewygasły token Sprawdzania aplikacji, umieść każde żądanie w wywołaniu funkcji AppCheck.token(). W razie potrzeby biblioteka Sprawdzania aplikacji odświeży token i uzyskasz do niego dostęp w bloku realizacji metody.

Po uzyskaniu prawidłowego tokena wyślij go do backendu wraz z żądaniem. Szczegóły dotyczące tego, jak to zrobić, zależą od Ciebie. Nie wysyłaj tokenów Sprawdzania aplikacji w ramach adresów URL, w tym w parametrach zapytań, ponieważ naraża to je na przypadkowe wyciek i przechwycenie. Poniższy przykład wysyła token w niestandardowym nagłówku HTTP (zalecane).

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

Ochrona ponownego odtwarzania (beta)

Wysyłając żądanie do punktu końcowego, dla którego masz włączoną ochronę ponownego odtwarzania, umieść je w wywołaniu limitedUseToken() zamiast token():

Swift

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

Objective-C

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