Halaman ini menunjukkan kepada Anda cara mengaktifkan App Check di aplikasi Android, menggunakan penyedia App Check kustom Anda . Saat mengaktifkan App Check, Anda membantu memastikan bahwa hanya aplikasi Anda yang dapat mengakses sumber daya Firebase proyek Anda.
Jika Anda ingin menggunakan App Check dengan penyedia Play Integrity default, lihat Mengaktifkan App Check dengan Play Integrity di Android .
Sebelum kamu memulai
Tambahkan Firebase ke proyek Android Anda jika Anda belum melakukannya.
Terapkan logika sisi server penyedia App Check kustom Anda .
1. Tambahkan perpustakaan App Check ke aplikasi Anda
Dalam file Gradle modul (tingkat aplikasi) Anda (biasanya app/build.gradle
), nyatakan dependensi untuk pustaka Android App Check:
Java
dependencies {
implementation 'com.google.firebase:firebase-appcheck:16.0.0'
}
Kotlin+KTX
dependencies {
implementation 'com.google.firebase:firebase-appcheck:16.0.0'
}
2. Implementasikan antarmuka App Check
Pertama, Anda perlu membuat kelas yang mengimplementasikan antarmuka AppCheckProvider
dan AppCheckProviderFactory
.
Kelas AppCheckProvider
Anda harus memiliki metode getToken()
, yang mengumpulkan informasi apa pun yang dibutuhkan oleh penyedia App Check kustom Anda sebagai bukti keaslian, dan mengirimkannya ke layanan akuisisi token Anda sebagai ganti token App Check. App Check SDK menangani caching token, jadi selalu dapatkan token baru dalam implementasi getToken()
Anda.
Java
public class YourCustomAppCheckToken extends AppCheckToken {
private String token;
private long expiration;
YourCustomAppCheckToken(String token, long expiration) {
this.token = token;
this.expiration = expiration;
}
@NonNull
@Override
public String getToken() {
return token;
}
@Override
public long getExpireTimeMillis() {
return expiration;
}
}
public class YourCustomAppCheckProvider implements AppCheckProvider {
@Override
public Task<AppCheckToken> getToken() {
// Logic to exchange proof of authenticity for an App Check token and
// expiration time.
// ...
// Refresh the token early to handle clock skew.
long expMillis = expirationFromServer * 1000 - 60000;
// Create AppCheckToken object.
AppCheckToken appCheckToken =
YourCustomAppCheckToken(tokenFromServer, expMillis);
return appCheckToken;
}
}
Kotlin+KTX
class YourCustomAppCheckToken(
private val token: String,
private val expiration: Long
) : AppCheckToken() {
override fun getToken(): String {
return token
}
override fun getExpireTimeMillis(): Long {
return expiration
}
}
class YourCustomAppCheckProvider : AppCheckProvider {
val token: Task<AppCheckToken>
get() {
// Logic to exchange proof of authenticity for an App Check token.
// ...
// Refresh the token early to handle clock skew.
val expMillis: Long = expirationFromServer * 1000 - 60000
// Create AppCheckToken object.
val appCheckToken: AppCheckToken =
YourCustomAppCheckToken(tokenFromServer, expMillis)
return appCheckToken!
}
}
Selain itu, terapkan kelas AppCheckProviderFactory
yang membuat instance implementasi AppCheckProvider
Anda:
Java
public class YourCustomAppCheckProviderFactory implements AppCheckProviderFactory {
@Override
public AppCheckProvider create(FirebaseApp firebaseApp) {
// Create and return an AppCheckProvider object.
return new YourCustomAppCheckProvider(firebaseApp);
}
}
Kotlin+KTX
class YourCustomAppCheckProviderFactory : AppCheckProviderFactory {
fun create(firebaseApp: FirebaseApp): AppCheckProvider {
// Create and return an AppCheckProvider object.
return YourCustomAppCheckProvider(firebaseApp)
}
}
3. Inisialisasi Pemeriksaan Aplikasi
Tambahkan kode inisialisasi berikut ke aplikasi Anda agar dapat berjalan sebelum Anda menggunakan SDK Firebase lainnya:
Java
FirebaseApp.initializeApp(/*context=*/ this);
FirebaseAppCheck firebaseAppCheck = FirebaseAppCheck.getInstance();
firebaseAppCheck.installAppCheckProviderFactory(
YourCustomAppCheckProviderFactory.getInstance());
Kotlin+KTX
FirebaseApp.initializeApp(/*context=*/ this)
val firebaseAppCheck = FirebaseAppCheck.getInstance()
firebaseAppCheck.installAppCheckProviderFactory(
YourCustomAppCheckProviderFactory.getInstance())
Setelah pustaka App Check dipasang di aplikasi Anda, mulailah mendistribusikan aplikasi yang diperbarui ke pengguna Anda.
Aplikasi klien yang diperbarui akan mulai mengirimkan token App Check bersama dengan setiap permintaan yang dibuatnya ke Firebase, tetapi produk Firebase tidak akan mengharuskan token valid sampai Anda mengaktifkan penegakan di bagian App Check di Firebase console. Lihat dua bagian berikutnya untuk detailnya.
4. Pantau metrik permintaan
Setelah aplikasi Anda yang diperbarui ada di tangan pengguna, Anda dapat mengaktifkan penerapan App Check untuk produk Firebase yang Anda gunakan. Namun, sebelum Anda melakukannya, Anda harus memastikan bahwa hal itu tidak akan mengganggu pengguna sah Anda yang sudah ada.
Database Realtime, Cloud Firestore, dan Cloud Storage
Alat penting yang dapat Anda gunakan untuk membuat keputusan ini untuk Realtime Database, Cloud Firestore, dan Cloud Storage adalah layar metrik permintaan App Check.
Untuk melihat metrik permintaan App Check untuk suatu produk, buka bagian App Check di Firebase console. Sebagai contoh:
Metrik permintaan untuk setiap produk dipecah menjadi empat kategori:
Permintaan terverifikasi adalah permintaan yang memiliki token App Check yang valid. Setelah Anda mengaktifkan penerapan App Check, hanya permintaan dalam kategori ini yang akan berhasil.
Permintaan klien yang kedaluwarsa adalah permintaan yang tidak memiliki token App Check. Permintaan ini mungkin berasal dari versi Firebase SDK yang lebih lama sebelum App Check disertakan dalam aplikasi.
Permintaan asal tidak diketahui adalah permintaan yang tidak memiliki token App Check, dan sepertinya tidak berasal dari Firebase SDK. Ini mungkin dari permintaan yang dibuat dengan kunci API curian atau permintaan palsu yang dibuat tanpa Firebase SDK.
Permintaan yang tidak valid adalah permintaan yang memiliki token App Check yang tidak valid, yang mungkin berasal dari klien tidak autentik yang mencoba meniru aplikasi Anda, atau dari lingkungan yang diemulasi.
Distribusi kategori ini untuk aplikasi Anda harus memberi tahu saat Anda memutuskan untuk mengaktifkan penegakan. Berikut adalah beberapa pedoman:
Jika hampir semua permintaan terbaru berasal dari klien terverifikasi, pertimbangkan untuk mengaktifkan penegakan untuk mulai melindungi sumber daya backend Anda.
Jika sebagian besar permintaan terbaru berasal dari klien yang kemungkinan sudah usang, untuk menghindari mengganggu pengguna, pertimbangkan untuk menunggu lebih banyak pengguna mengupdate aplikasi Anda sebelum mengaktifkan penerapan. Menerapkan App Check pada aplikasi yang dirilis akan merusak versi aplikasi sebelumnya yang tidak terintegrasi dengan App Check SDK.
Jika aplikasi Anda belum diluncurkan, Anda harus segera mengaktifkan penerapan App Check, karena tidak ada klien lama yang digunakan.
Fungsi Cloud
Untuk Cloud Functions, Anda bisa mendapatkan metrik App Check dengan memeriksa log fungsi Anda. Setiap pemanggilan fungsi yang dapat dipanggil memancarkan entri log terstruktur seperti contoh berikut:
{
"severity": "INFO", // INFO, WARNING, or ERROR
"logging.googleapis.com/labels": {"firebase-log-type": "callable-request-verification"},
"jsonPayload": {
"message": "Callable header verifications passed.",
"verifications": {
// ...
"app": "MISSING", // VALID, INVALID, or MISSING
}
}
}
Anda dapat menganalisis metrik ini di Google Cloud Console dengan membuat metrik penghitung berbasis log dengan filter metrik berikut:
resource.type="cloud_function" resource.labels.function_name="YOUR_CLOUD_FUNCTION" resource.labels.region="us-central1" labels.firebase-log-type="callable-request-verification"
Beri label metrik menggunakan bidang jsonPayload.verifications.appCheck
.
5. Aktifkan penegakan
Untuk mengaktifkan penegakan, ikuti petunjuk untuk setiap produk di bawah. Setelah Anda mengaktifkan penegakan untuk suatu produk, semua permintaan yang belum diverifikasi ke produk tersebut akan ditolak.
Database Realtime, Cloud Firestore, dan Cloud Storage
Untuk mengaktifkan penerapan Realtime Database, Cloud Firestore (iOS dan Android), dan Cloud Storage:
Buka bagian App Check di Firebase console.
Perluas tampilan metrik produk yang penerapannya ingin Anda aktifkan.
Klik Terapkan dan konfirmasikan pilihan Anda.
Perhatikan bahwa diperlukan waktu hingga 15 menit setelah Anda mengaktifkan penerapan agar penerapannya dapat diterapkan.
Fungsi Cloud
Lihat Mengaktifkan penerapan Pemeriksaan Aplikasi untuk Cloud Functions .