Join us in person and online for Firebase Summit on October 18, 2022. Learn how Firebase can help you accelerate app development, release your app with confidence, and scale with ease. Register now

Chroń zasoby inne niż Firebase za pomocą funkcji App Check na platformach Apple

Zadbaj o dobrą organizację dzięki kolekcji Zapisuj i kategoryzuj treści zgodnie ze swoimi preferencjami.

Za pomocą Sprawdzania aplikacji możesz chronić zasoby aplikacji inne niż Firebase, takie jak backendy z własnym hostingiem. Aby to zrobić, musisz wykonać obie następujące czynności:

Zanim zaczniesz

Dodaj App Check do swojej aplikacji za pomocą App Attest , DeviceCheck lub niestandardowego dostawcy .

Wysyłaj tokeny App Check z żądaniami zaplecza

Aby upewnić się, że żądania zaplecza zawierają prawidłowy, niewygasły token App Check, owiń każde żądanie wywołaniem AppCheck.token() . Biblioteka App Check odświeży token w razie potrzeby i możesz uzyskać dostęp do tokenu w bloku uzupełniania metody.

Po uzyskaniu prawidłowego tokena wyślij go wraz z żądaniem do swojego zaplecza. To, jak to zrobisz, zależy od Ciebie, ale nie wysyłaj tokenów App Check jako części adresów URL , w tym w parametrach zapytania, ponieważ naraża to je na przypadkowe wycieki i przechwycenie. Poniższy przykład wysyła token w niestandardowym nagłówku HTTP, co jest zalecanym podejściem.

Szybki

AppCheck.appCheck().token(forcingRefresh: false) { token, error in
    guard error == nil else {
        // Handle any errors if the token was not retrieved.
        print("Unable to retrieve App Check token: \(error!)")
        return
    }
    guard let token = token else {
        print("Unable to retrieve App Check token.")
        return
    }

    // 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()
}

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