Join us for Firebase Summit on November 10, 2021. Tune in to learn how Firebase can help you accelerate app development, release with confidence, and scale with ease. Register

Aktifkan Pemeriksaan Aplikasi dengan penyedia khusus di Android

Halaman ini menunjukkan Anda cara mengaktifkan App Periksa dalam sebuah aplikasi Android, menggunakan kustom App penyedia Periksa 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 Periksa dengan penyedia standar SafetyNet, lihat Mengaktifkan App Periksa dengan SafetyNet di Android .

Sebelum kamu memulai

1. Tambahkan perpustakaan App Check ke aplikasi Anda

Dalam modul Anda (app-tingkat) File Gradle (biasanya app/build.gradle ), menyatakan ketergantungan untuk App Periksa perpustakaan Android:

Jawa

dependencies {
    implementation 'com.google.firebase:firebase-appcheck:16.0.0-beta03'
}

Kotlin+KTX

dependencies {
    implementation 'com.google.firebase:firebase-appcheck:16.0.0-beta03'
}

2. Implementasikan antarmuka App Check

Pertama, Anda perlu membuat kelas yang mengimplementasikan AppCheckProvider dan AppCheckProviderFactory interface.

Anda AppCheckProvider kelas harus memiliki getToken() metode, yang mengumpulkan informasi apapun kustom App penyedia Periksa Anda membutuhkan sebagai bukti keaslian, dan mengirimkannya ke layanan akuisisi token Anda dalam pertukaran untuk App Periksa tanda. App Periksa SDK menangani caching token, sehingga selalu mendapatkan token baru dalam pelaksanaan Anda getToken() .

Jawa

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!
        }
}

Juga, menerapkan AppCheckProviderFactory kelas yang menciptakan contoh Anda AppCheckProvider pelaksanaan:

Jawa

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:

Jawa

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 kepada 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 penerapan di bagian App Check di Firebase console. Lihat dua bagian berikutnya untuk detailnya.

4. Pantau metrik permintaan

Setelah aplikasi Anda yang telah diperbarui berada 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 dan Penyimpanan Cloud

Alat penting yang dapat Anda gunakan untuk membuat keputusan ini untuk Realtime Database dan Cloud Storage adalah layar metrik permintaan App Check.

Untuk melihat App Periksa permintaan metrik untuk produk, buka Project Settings> App Periksa bagian dari konsol Firebase. Sebagai contoh:

Tangkapan layar halaman metrik Pemeriksaan Aplikasi

Metrik permintaan untuk setiap produk dipecah menjadi empat kategori:

  • Permintaan diverifikasi adalah mereka yang memiliki App valid Periksa tanda. Setelah Anda mengaktifkan penerapan App Check, hanya permintaan dalam kategori ini yang akan berhasil.

  • Permintaan klien usang adalah mereka yang hilang App Periksa tanda. Permintaan ini mungkin berasal dari versi Firebase SDK yang lebih lama sebelum App Check disertakan dalam aplikasi.

  • Permintaan yang tidak diketahui asalnya adalah mereka yang hilang App Periksa token, dan tidak terlihat seperti mereka datang dari Firebase SDK. Ini mungkin dari permintaan yang dibuat dengan kunci API curian atau permintaan palsu yang dibuat tanpa Firebase SDK.

  • Permintaan tidak valid adalah mereka yang memiliki App valid Periksa token, yang mungkin dari klien tidak otentik mencoba untuk meniru aplikasi Anda, atau dari lingkungan ditiru.

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 Cloud Console Google dengan menciptakan log berbasis kontra metrik dengan metrik filter berikut:

resource.type="cloud_function"
resource.labels.function_name="YOUR_CLOUD_FUNCTION"
resource.labels.region="us-central1"
labels.firebase-log-type="callable-request-verification"

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 dan Penyimpanan Cloud

Untuk mengaktifkan penerapan Realtime Database dan Cloud Storage:

  1. Buka Pengaturan Proyek> App Periksa bagian dari konsol Firebase.

  2. Perluas tampilan metrik produk yang penerapannya ingin Anda aktifkan.

  3. Klik Menegakkan dan mengkonfirmasikan pilihan Anda.

Perhatikan bahwa diperlukan waktu hingga 10 menit setelah Anda mengaktifkan penerapan agar penerapannya dapat diterapkan.

Fungsi Cloud

Lihat Aktifkan App Periksa penegakan untuk Fungsi Cloud .