Ikuti semua informasi yang diumumkan di Firebase Summit, dan pelajari bagaimana Firebase dapat membantu Anda mempercepat pengembangan aplikasi dan menjalankan aplikasi dengan percaya diri. Pelajari Lebih Lanjut

Lindungi sumber daya non-Firebase dengan App Check di Android

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

Anda dapat melindungi sumber daya non-Firebase aplikasi, 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 beserta setiap permintaan ke backend Anda, seperti yang dijelaskan di halaman ini.
  • Ubah backend Anda untuk mewajibkan token App Check yang valid dengan setiap permintaan, seperti yang dijelaskan dalam Memverifikasi token App Check dari backend khusus .

Sebelum kamu memulai

Tambahkan App Check ke aplikasi Anda, menggunakan penyedia Integritas Play default , atau penyedia khusus .

Kirim token App Check dengan permintaan backend

Untuk memastikan permintaan backend Anda menyertakan token App Check yang valid dan belum kedaluwarsa, gabungkan setiap permintaan dalam panggilan ke getAppCheckToken() . Pustaka App Check akan menyegarkan token jika perlu, dan Anda bisa mengakses token di pemroses sukses metode.

Setelah Anda memiliki token yang valid, kirimkan beserta permintaan ke backend Anda. Anda dapat menentukan secara spesifik cara melakukannya, tetapi jangan mengirim token App Check sebagai bagian dari URL , termasuk dalam parameter kueri, karena hal ini membuat token rentan terhadap kebocoran dan penyadapan yang tidak disengaja. Pendekatan yang disarankan adalah mengirim token dalam header HTTP khusus.

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);
                        // ...
                    }
                });
    }
}