Anda dapat melindungi resource non-Firebase aplikasi, seperti backend yang dihosting sendiri dengan App Check. Untuk melaksanakannya, Anda harus 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 agar mewajibkan token App Check yang valid untuk setiap permintaan, seperti yang dijelaskan dalam artikel 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 yang berhasil pada metode ini.
Setelah Anda memiliki token yang valid, kirim token tersebut beserta permintaan ke backend Anda. Anda yang menentukan cara 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() { Firebase.appCheck.getAppCheckToken(false).addOnSuccessListener { appCheckToken -> val token = appCheckToken.token val apiCall = yourExampleBackendService.exampleData(token) // ... } } }
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 appCheckToken) { String token = appCheckToken.getToken(); Call<List<String>> apiCall = yourExampleBackendService.exampleData(token); // ... } }); } }
Perlindungan replay (beta)
Saat membuat permintaan ke endpoint untuk perlindungan replay yang telah diaktifkan, gabungkan permintaan dalam panggilan ke getLimitedUseAppCheckToken()
, bukan getAppCheckToken()
:
Kotlin+KTX
Firebase.appCheck.limitedUseAppCheckToken.addOnSuccessListener { // ... }
Java
FirebaseAppCheck.getInstance() .getLimitedUseAppCheckToken().addOnSuccessListener( new OnSuccessListener<AppCheckToken>() { @Override public void onSuccess(AppCheckToken appCheckToken) { String token = appCheckToken.getToken(); // ... } } );