Bergabunglah dengan kami secara langsung dan online di Firebase Summit pada 18 Oktober 2022. Pelajari cara Firebase dapat membantu Anda mempercepat pengembangan aplikasi, merilis aplikasi dengan percaya diri, dan menentukan skala dengan mudah. Daftar sekarang

Lindungi sumber daya non-Firebase dengan App Check di platform Apple

Tetap teratur dengan koleksi Simpan dan kategorikan konten berdasarkan preferensi Anda.

Anda dapat melindungi sumber daya non-Firebase aplikasi Anda, seperti backend yang dihosting sendiri, dengan App Check. Untuk melakukannya, Anda perlu melakukan kedua hal berikut:

  • Ubah klien aplikasi Anda untuk mengirim token App Check bersama dengan setiap permintaan ke backend Anda, seperti yang dijelaskan di halaman ini.
  • Ubah backend Anda agar memerlukan token App Check yang valid dengan setiap permintaan, seperti yang dijelaskan dalam Verifikasi token App Check dari backend khusus .

Sebelum kamu memulai

Tambahkan App Check ke aplikasi Anda, menggunakan App Attest , DeviceCheck , atau penyedia khusus .

Kirim token App Check dengan permintaan backend

Untuk memastikan permintaan backend Anda menyertakan token App Check yang valid dan belum kedaluwarsa, bungkus setiap permintaan dalam panggilan ke AppCheck.token() . Pustaka App Check akan menyegarkan token jika perlu, dan Anda dapat mengakses token di blok penyelesaian metode.

Setelah Anda memiliki token yang valid, kirimkan bersama dengan permintaan ke backend Anda. Spesifik tentang bagaimana Anda melakukannya terserah Anda, tetapi jangan mengirim token App Check sebagai bagian dari URL , termasuk dalam parameter kueri, karena ini membuatnya rentan terhadap kebocoran dan intersepsi yang tidak disengaja. Contoh berikut mengirimkan token dalam header HTTP khusus, yang merupakan pendekatan yang disarankan.

Cepat

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

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