Menggunakan App Check dengan penyedia debug

Jika, setelah mendaftarkan aplikasi untuk App Check, Anda ingin menjalankan aplikasi di lingkungan yang biasanya tidak diklasifikasikan oleh App Check sebagai valid, seperti simulator selama pengembangan, atau dari continuous integration (CI) Anda dapat membuat build debug aplikasi yang menggunakan Penyedia debug App Check, bukan App Attest.

Menggunakan penyedia debug dalam simulator

Untuk menggunakan penyedia debug saat menjalankan aplikasi Anda di simulator secara interaktif (misalnya, selama pengembangan), lakukan hal berikut:

  1. Cari kunci API iOS untuk project Anda di Credentials halaman APIs & Services di Konsol Google Cloud.

  2. Dalam build debug, konfigurasikan App Check untuk menggunakan penyedia debug. Anda akan perlu menentukan kunci API yang didapatkan di langkah sebelumnya.

    #if targetEnvironment(simulator)
    GIDSignIn.sharedInstance.configureDebugProvider(withAPIKey: apiKey) { error in
      if let error {
        print("Error configuring `GIDSignIn` for App Check: \(error)")
      }
    }
    #else
    // Configure App Check for production.
    #endif
    
  3. Luncurkan aplikasi. Token debug lokal akan dicatat ke konsol Xcode saat SDK mencoba mengirim permintaan ke backend. Contoh:

    <Warning> [AppCheckCore][I-GAC004001] App Check debug token:
    '123a4567-b89c-12d3-e456-789012345678'.
    
  4. Di bagian App Check di Firebase console, pilih Manage debug tokens dari menu tambahan. Lalu, daftarkan token debug yang Anda catat di log sebelumnya langkah waktu ini.

    Screenshot item menu Manage Debug Tokens

Setelah Anda mendaftarkan token, endpoint OAuth 2.0 Google akan menerimanya sebagai valid untuk proyek Anda.

Karena token ini memungkinkan akses ke endpoint autentikasi Anda tanpa valid, Anda harus menjaga kerahasiaannya. Jangan melakukan commit untuk repositori publik lain, dan jika token yang terdaftar pernah disusupi, cabut token tersebut langsung di Firebase console.

Menggunakan penyedia debug di lingkungan CI

Untuk menggunakan penyedia debug di lingkungan continuous integration (CI), lakukan berikut ini:

  1. Di bagian App Check di Firebase console, pilih Manage debug tokens dari menu tambahan. Kemudian, buat token debug baru. Anda memerlukan token tersebut di langkah selanjutnya.

    Karena token ini mengizinkan akses ke endpoint autentikasi Anda tanpa perangkat yang valid, Anda harus merahasiakannya. Jangan melakukan commit untuk repositori publik lain, dan jika token yang terdaftar pernah disusupi, cabut token tersebut langsung di Firebase console.

    Screenshot item menu Manage Debug Tokens

  2. Menambahkan token debug yang baru saja dibuat ke penyimpanan kunci aman sistem CI Anda (misalnya, rahasia terenkripsi GitHub Actions atau variabel terenkripsi Travis CI).

  3. Jika perlu, konfigurasi sistem CI Anda untuk menyediakan token debug dalam lingkungan CI sebagai variabel lingkungan. Beri nama variabel sesuatu seperti APP_CHECK_DEBUG_TOKEN_FROM_CI.

  4. Di Xcode, tambahkan variabel lingkungan ke skema pengujian dengan nama FIRAAppCheckDebugToken dan $(APP_CHECK_DEBUG_TOKEN) sebagai nilai.

  5. Mengonfigurasi skrip pengujian CI Anda untuk meneruskan token debug sebagai lingkungan variabel. Contoh:

    xcodebuild test -scheme YourTestScheme -workspace YourProject.xcworkspace \
    APP_CHECK_DEBUG_TOKEN=$(APP_CHECK_DEBUG_TOKEN_FROM_CI)
  6. Cari kunci API iOS untuk project Anda di Credentials halaman APIs & Services di Konsol Google Cloud.

  7. Dalam build debug, konfigurasikan App Check untuk menggunakan penyedia debug. Anda akan perlu menentukan kunci API yang didapatkan di langkah sebelumnya.

    #if targetEnvironment(simulator)
    GIDSignIn.sharedInstance.configureDebugProvider(withAPIKey: apiKey) { error in
      if let error {
        print("Error configuring `GIDSignIn` for App Check: \(error)")
      }
    }
    #else
    // Configure App Check for production.
    #endif
    

Jika aplikasi Anda berjalan di lingkungan CI, endpoint OAuth 2.0 Google akan menerima token yang dikirimkannya sebagai valid untuk proyek Anda.