Catch up on everthing we announced at this year's Firebase Summit. Learn more

Lindungi sumber daya non-Firebase dengan App Check di Android

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.
  • Memodifikasi backend Anda memerlukan App valid Periksa tanda dengan setiap permintaan, seperti yang dijelaskan dalam Verifikasi App Periksa token dari backend kustom .

Sebelum kamu memulai

Menambahkan App Periksa untuk aplikasi Anda, baik menggunakan default penyedia SafetyNet , atau penyedia kustom .

Kirim token App Check dengan permintaan backend

Untuk memastikan permintaan backend Anda termasuk valid, belum berakhir, App Periksa token, membungkus setiap permintaan dalam panggilan untuk getAppCheckToken() . Pustaka App Check akan menyegarkan token jika perlu, dan Anda dapat mengakses token di pemroses sukses metode.

Setelah Anda memiliki token yang valid, kirimkan bersama dengan permintaan ke backend Anda. Secara spesifik tentang bagaimana Anda mencapai hal ini adalah terserah Anda, tetapi tidak mengirimkan App Periksa token sebagai bagian dari URL, termasuk dalam parameter query, karena hal ini membuat mereka rentan terhadap kebocoran disengaja dan intersepsi. Pendekatan yang disarankan adalah mengirim token dalam header HTTP khusus.

Misalnya, jika Anda menggunakan Retrofit:

Jawa

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

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