Firebase hadir kembali di Google I/O pada 10 Mei. Daftar sekarang

Melindungi resource non-Firebase dengan App Check di Android

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

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

  • Ubah klien aplikasi Anda untuk mengirim token App Check beserta setiap permintaan ke backend, seperti yang dijelaskan di halaman ini.
  • Ubah backend Anda agar mewajibkan token App Check yang valid untuk setiap permintaan, seperti yang dijelaskan dalam Memverifikasi token App Check dari backend kustom.

Sebelum memulai

Tambahkan App Check ke aplikasi Anda menggunakan penyedia Play Integrity default atau penyedia kustom.

Mengirim token App Check dengan permintaan backend

Untuk memastikan permintaan backend Anda menyertakan token App Check yang valid dan belum habis masa berlakunya, gabungkan setiap permintaan dalam panggilan ke getAppCheckToken(). Jika diperlukan, library App Check akan memperbarui token dan Anda dapat mengakses token di pemroses peristiwa berhasil pada metode ini.

Setelah Anda memiliki token yang valid, kirimkan beserta permintaan ke backend Anda. Anda yang menentukan cara yang paling tepat untuk melakukannya, tetapi jangan kirim token App Check sebagai bagian dari URL, termasuk di parameter kueri. Hal ini akan membuat token rentan terhadap kebocoran dan intersepsi yang tidak sengaja. Pendekatan yang direkomendasikan adalah mengirim token dalam header HTTP kustom.

Misalnya, jika Anda menggunakan Retrofit:

Kotlin+KTX

class ApiWithAppCheckExample {
    interface YourExampleBackendService {
        @GET("yourExampleEndpoint")
        fun exampleData(
            @Header("X-Firebase-AppCheck") appCheckToken: String
        ): Call<List<String>>
    }

    var yourExampleBackendService: YourExampleBackendService = Retrofit.Builder()
        .baseUrl("https://yourbackend.example.com/")
        .build()
        .create(YourExampleBackendService::class.java)

    fun callApiExample() {
        FirebaseAppCheck.getInstance()
            .getAppCheckToken(false)
            .addOnSuccessListener { tokenResponse ->
                val appCheckToken = tokenResponse.token
                val apiCall = yourExampleBackendService.exampleData(appCheckToken)
                // ...
            }
    }
}

Java

public class ApiWithAppCheckExample {
    private interface YourExampleBackendService {
        @GET("yourExampleEndpoint")
        Call<List<String>> exampleData(
                @Header("X-Firebase-AppCheck") String appCheckToken);
    }

    YourExampleBackendService yourExampleBackendService = new Retrofit.Builder()
            .baseUrl("https://yourbackend.example.com/")
            .build()
            .create(YourExampleBackendService.class);

    public void callApiExample() {
        FirebaseAppCheck.getInstance()
                .getAppCheckToken(false)
                .addOnSuccessListener(new OnSuccessListener<AppCheckToken>() {
                    @Override
                    public void onSuccess(@NonNull AppCheckToken tokenResponse) {
                        String appCheckToken = tokenResponse.getToken();
                        Call<List<String>> apiCall =
                                yourExampleBackendService.exampleData(appCheckToken);
                        // ...
                    }
                });
    }
}