Mengimplementasikan Firebase App Check untuk melindungi API dari klien yang tidak sah

Saat Anda memanggil API secara langsung dari aplikasi seluler atau web (misalnya, API yang memungkinkan akses ke model AI generatif), API tersebut rentan disalahgunakan oleh klien yang tidak sah. Untuk membantu melindungi API ini, Anda dapat menggunakan Firebase App Check untuk memverifikasi bahwa semua panggilan API masuk berasal dari aplikasi Anda yang sebenarnya.

Firebase AI Logic menyediakan gateway proxy yang memungkinkan Anda berintegrasi dengan Firebase App Check dan melindungi API model AI generatif yang dipanggil oleh aplikasi seluler dan web Anda. Penggunaan App Check dengan SDK Firebase AI Logic mendukung semua konfigurasi kami:

  • Melindungi kedua penyedia "Gemini API": Gemini Developer API dan Vertex AI Gemini API.

  • Melindungi semua model yang didukung, baik model Gemini maupun model Imagen.

Ringkasan umum cara kerja App Check

Dengan App Check, perangkat yang menjalankan aplikasi Anda menggunakan penyedia pengesahan aplikasi atau perangkat yang memverifikasi salah satu atau kedua hal berikut:

  • Permintaan berasal dari aplikasi asli milik Anda
  • Permintaan berasal dari perangkat asli yang tidak dimodifikasi

Pengesahan ini dilampirkan pada setiap permintaan yang dibuat aplikasi Anda menggunakan SDK Firebase AI Logic. Saat Anda mengaktifkan penerapan App Check, permintaan dari klien tanpa pengesahan yang valid akan ditolak, begitu juga permintaan yang berasal dari aplikasi atau platform yang belum Anda beri otorisasi.

Sebaiknya saat Anda menyiapkan App Check, pastikan untuk bersiap menghadapi peningkatan perlindungan mendatang (yang dikenal sebagai perlindungan replay).

Anda dapat menemukan informasi mendetail tentang App Check dalam dokumentasinya, termasuk kuota dan batasnya.

Penyedia yang tersedia dan petunjuk penerapan

Dokumentasi App Check memberikan deskripsi penyedia pengesahan serta petunjuk penerapan.

  1. Pilih penyedia default, lalu ikuti petunjuk penerapan di link berikut:

    Perhatikan bahwa jika tidak ada penyedia default yang memadai untuk kebutuhan Anda, Anda dapat menerapkan penyedia kustom yang menggunakan penyedia pengesahan pihak ketiga atau teknik pengesahan Anda sendiri.

  2. (Direkomendasikan) Bersiaplah untuk perlindungan yang ditingkatkan yang akan datang mulai App Check (dikenal sebagai perlindungan replay).

  3. (Wajib) Sebelum merilis aplikasi kepada pengguna sebenarnya, aktifkan penerapan App Check.

Instansiasi khusus diperlukan untuk Flutter

Klik penyedia Gemini API untuk melihat konten dan kode khusus penyedia di halaman ini.

Saat menggunakan App Check dengan Firebase AI Logic di aplikasi Flutter, Anda harus meneruskan App Check secara eksplisit selama pembuatan instance, seperti berikut:

// ...

final ai = await FirebaseAI.googleAI(
  appCheck: FirebaseAppCheck.instance, // for Flutter, pass in App Check explicitly
);

// ...

Bersiap untuk perlindungan yang ditingkatkan mendatang

Penggunaan token penggunaan terbatas saat ini hanya tersedia untuk platform Apple (v12.2.0+), Android (v17.2.0+, BoM v34.2.0+), dan Web (v12.3.0+).
Dukungan untuk platform lain akan dirilis dalam beberapa minggu ke depan.

Secara default, App Check menggunakan token sesi yang memiliki time to live (TTL) yang dapat dikonfigurasi antara 30 menit dan 7 hari. Token sesi ini di-cache oleh SDK App Check dan dikirim bersama dengan permintaan dari aplikasi Anda.

Pada masa mendatang, App Check akan menambahkan opsi untuk mengaktifkan perlindungan replay untuk Firebase AI Logic (mirip dengan dukungan yang sudah ditawarkan App Check untuk beberapa resource lainnya). Jika perlindungan replay diaktifkan, perlindungan akan ditingkatkan dengan cara berikut:

  • App Check hanya akan mengizinkan permintaan jika disertai dengan jenis token khusus yang disebut token penggunaan terbatas.

  • Setelah token penggunaan terbatas diverifikasi, token tersebut akan digunakan sehingga hanya dapat digunakan satu kali, sehingga mencegah replay secara masif.

Untuk bersiap menghadapi perlindungan replay, sebaiknya aktifkan penggunaan token penggunaan terbatas sebagai bagian dari penyiapan App Check. Dengan begitu, saat perlindungan replay tersedia, Anda dapat mengaktifkannya lebih awal karena lebih banyak pengguna Anda akan menggunakan versi aplikasi yang mengirim token penggunaan terbatas.

Perhatikan hal berikut jika Anda mengaktifkan penggunaan token penggunaan terbatas di aplikasi Anda sekarang (saat perlindungan replay tidak tersedia):

  • App Check tidak memblokir penggunaan token sesi yang valid.

  • Sama seperti token sesi, token penggunaan terbatas di-cache oleh SDK App Check dan dikirim bersama dengan permintaan. Token penggunaan terbatas ini memberikan perlindungan tambahan dalam jumlah kecil dibandingkan token sesi default karena token penggunaan terbatas memiliki TTL yang lebih singkat (hanya 5 menit dan tidak dapat disesuaikan) dibandingkan dengan token sesi.

  • Meskipun token penggunaan terbatas berlaku selama 5 menit, SDK akan tetap membuat token baru untuk setiap permintaan. Proses ini dapat menambahkan beberapa latensi pada permintaan Anda.

Namun, jika perlindungan replay tersedia untuk Firebase AI Logic pada masa mendatang (dan Anda mengaktifkannya), penggunaan token sesi dan penggunaan kembali token penggunaan terbatas tidak akan memungkinkan. Perhatikan bahwa latensi tambahan untuk membuat token baru bagi setiap permintaan akan tetap terjadi.

Mengaktifkan penggunaan token penggunaan terbatas

Klik penyedia Gemini API untuk melihat konten dan kode khusus penyedia di halaman ini.

Berikut cara mengaktifkan penggunaan token penggunaan terbatas:

  1. Terapkan App Check, dan pastikan Anda telah mengaktifkan penerapan App Check untuk aplikasi Anda.

  2. Di aplikasi Anda selama instansiasi, aktifkan penggunaan token penggunaan terbatas dengan menetapkan parameter useLimitedUseAppCheckTokens ke true:

    Swift

    
    // ...
    
    // During instantiation, enable usage of limited-use tokens
    let ai = FirebaseAI.firebaseAI(
      backend: .googleAI(),
      useLimitedUseAppCheckTokens: true
    )
    
    // ...
    
    

    Kotlin

    
    // ...
    
    // During instantiation, enable usage of limited-use tokens
    val ai = Firebase.ai(
      backend = GenerativeBackend.googleAI(),
      useLimitedUseAppCheckTokens = true
    )
    
    // ...
    
    

    Java

    
    // ...
    
    // During instantiation, enable usage of limited-use tokens
    FirebaseAI ai = FirebaseAI.getInstance(
      /* backend: */ GenerativeBackend.googleAI(),
      /* useLimitedUseAppCheckTokens: */ true
    );
    
    // ...
    
    

    Web

    
    // ...
    
    // During instantiation, enable usage of limited-use tokens
    const ai = getAI(firebaseApp, {
      backend: new GoogleAIBackend(),
      useLimitedUseAppCheckTokens: true
    });
    
    // ...
    
    

    Dart

    Penggunaan token penggunaan terbatas dengan aplikasi Flutter akan didukung dalam rilis mendatang. Periksa kembali nanti!

    Unity

    Penggunaan token penggunaan terbatas dengan game Unity akan didukung dalam rilis mendatang. Periksa kembali nanti!

Memahami cara Firebase AI Logic berintegrasi dengan App Check

Untuk menggunakan SDK Firebase AI Logic, API Firebase AI Logic (firebasevertexai.googleapis.com) harus diaktifkan di project Firebase Anda. Hal ini karena permintaan yang dibuat oleh SDK Firebase AI Logic dikirimkan terlebih dahulu ke server Firebase AI Logic, yang bertindak sebagai gateway proxy tempat verifikasi Firebase App Check dilakukan sebelum permintaan diizinkan untuk dilanjutkan ke backend penyedia "Gemini API" yang Anda pilih dan API untuk mengakses model Gemini dan Imagen.