Menerapkan penyedia App Check kustom

App Check memiliki dukungan bawaan untuk beberapa penyedia: DeviceCheck dan App Attest di platform Apple, Play Integrity dan SafetyNet di Android, serta reCAPTCHA Enterprise di aplikasi web. (ringkasan). Penyedia tersebut sudah dikenal dengan baik dan akan memenuhi kebutuhan sebagian besar developer. Namun, Anda juga dapat menerapkan penyedia App Check kustom Anda sendiri. Menggunakan penyedia kustom diperlukan jika:

  • Anda ingin menggunakan penyedia selain penyedia bawaan.

  • Anda ingin menggunakan penyedia bawaan dengan cara yang tidak didukung.

  • Anda ingin memverifikasi perangkat menggunakan platform selain Apple, Android, dan web. Misalnya, Anda dapat membuat penyedia App Check untuk OS desktop atau perangkat Internet of Things.

  • Anda ingin menerapkan teknik verifikasi Anda sendiri pada platform apa pun.

Ringkasan

Untuk menerapkan penyedia App Check kustom, Anda memerlukan lingkungan backend aman yang dapat menjalankan Firebase Admin SDK Node.js. Lingkungan tersebut bisa berupa Cloud Functions, platform container seperti Cloud Run, atau server Anda sendiri.

Dari lingkungan ini, Anda akan memberikan layanan yang dapat diakses jaringan yang menerima bukti keaslian dari klien aplikasi Anda. Jika bukti autentikasi lulus penilaian keaslian, layanan akan menampilkan token App Check. Indikator spesifik yang Anda gunakan sebagai bukti keaslian akan bergantung pada penyedia pihak ketiga yang Anda gunakan atau indikator yang Anda tetapkan sendiri, jika menerapkan logika kustom.

Umumnya, layanan ini dapat Anda ekspos sebagai endpoint REST atau gRPC, sesuai pilihan Anda.

Membuat endpoint akuisisi token

  1. Instal dan lakukan inisialisasi Admin SDK.

  2. Buat endpoint yang dapat diakses jaringan yang dapat menerima data keaslian dari klien Anda. Misalnya, menggunakan Cloud Functions:

    // Create endpoint at https://example-app.cloudfunctions.net/fetchAppCheckToken
    exports.fetchAppCheckToken = functions.https.onRequest((request, response) => {
      // ...
    });
    
  3. Tambahkan ke logika endpoint yang menilai data keaslian. Ini adalah logika inti dari penyedia App Check kustom, yang harus Anda tulis sendiri.

  4. Jika Anda telah memastikan bahwa klien tersebut asli, gunakan Admin SDK untuk membuat token App Check dan menampilkan token tersebut beserta masa berlakunya ke klien:

    const admin = require('firebase-admin');
    admin.initializeApp();
    
    // ...
    
    admin.appCheck().createToken(appId)
        .then(function (appCheckToken) {
          // Token expires in an hour.
          const expiresAt = Math.floor(Date.now() / 1000) + 60 * 60;
    
          // Return appCheckToken and expiresAt to the client.
        })
       .catch(function (err) {
         console.error('Unable to create App Check token.');
         console.error(err);
       });
    

    Jika Anda tidak dapat memverifikasi keaslian klien, tampilkan error (misalnya, tampilkan error HTTP 403).

  5. Opsional: Tetapkan time to live (TTL) untuk token App Check yang dikeluarkan oleh penyedia kustom dengan meneruskan objek AppCheckTokenOptions ke createToken(). Anda dapat menetapkan TTL ke semua nilai dalam rentang 30 menit hingga 7 hari. Saat menetapkan nilai ini, perhatikan pertimbangan berikut:

    • Keamanan: TTL yang lebih singkat memberikan keamanan yang lebih kuat karena mengurangi periode penyalahgunaan oleh penyerang atas token yang bocor atau diintersepsi.
    • Performa: TTL yang lebih singkat membuat aplikasi Anda akan lebih sering melakukan pengesahan. Karena proses pengesahan aplikasi meningkatkan latensi ke permintaan jaringan setiap kali dilakukan, TTL yang singkat dapat memengaruhi performa aplikasi Anda.

    TTL default selama 1 jam termasuk wajar untuk sebagian besar aplikasi.

Langkah berikutnya

Setelah Anda menerapkan logika sisi server penyedia kustom, pelajari cara menggunakannya dari klien Apple, Android, dan web.