Mengintegrasikan Identity Platform dengan reCAPTCHA Enterprise API

Dokumen ini menunjukkan cara menggunakan integrasi Identity Platform dengan reCAPTCHA Enterprise API untuk meningkatkan keamanan bagi pengguna Anda. Fitur ini membuat aplikasi Anda lebih tangguh terhadap spam, penyalahgunaan, dan aktivitas penipuan lainnya.

Integrasi ini membuat penilaian reCAPTCHA Enterprise atas nama Anda untuk memvalidasi permintaan pengguna. Untuk mengetahui informasi harga, lihat harga reCAPTCHA.

Ringkasan

Saat menyiapkan integrasi Identity Platform dengan reCAPTCHA Enterprise API, Anda mengaktifkan fitur perlindungan default reCAPTCHA—perlindungan bot reCAPTCHA. Dengan perlindungan bot, Identity Platform menyediakan kunci reCAPTCHA berbasis skor di project Anda atas nama Anda. Saat pengguna mengakses aplikasi atau situs Anda menggunakan salah satu operasi berikut, SDK klien akan memuat reCAPTCHA saat penyedia yang sesuai diaktifkan.

Penyedia Operasi Metode
passwordProvider Login dengan email dan sandi signInWithPassword
Pendaftaran dengan email dan sandi signUpPassword
Login dengan link email getOobCode
Reset sandi getOobCode
phoneProvider Pendaftaran atau login dengan nomor telepon sendVerificationCode
Pendaftaran nomor telepon MFA mfaSmsEnrollment
Login dengan nomor telepon MFA mfaSmsSignIn

Kemudian, reCAPTCHA memberikan skor ke Identity Platform yang menilai risiko permintaan berdasarkan konfigurasi dan toleransi risiko Anda.

Untuk mengetahui informasi selengkapnya, lihat Ringkasan reCAPTCHA.

Sebelum memulai

Berdasarkan jenis alur autentikasi yang ingin Anda lindungi dengan reCAPTCHA, pastikan Anda telah menyiapkan hal berikut:

Membuat akun layanan

Integrasi Identity Platform dengan reCAPTCHA Enterprise API memerlukan akun layanan Identity Platform untuk setiap project yang akan menggunakan reCAPTCHA. Hal ini memungkinkan Identity Platform mengelola kunci reCAPTCHA atas nama Anda. Jika Anda sudah membuat akun layanan, beri akun layanan tersebut akses ke reCAPTCHA.

Jika Anda belum membuat akun layanan atau memiliki project tambahan yang ingin dilindungi dengan reCAPTCHA, lakukan hal berikut:

  1. Gunakan Google Cloud CLI untuk membuat akun layanan:

    gcloud beta services identity create \
        --service=identitytoolkit.googleapis.com \
        --project=PROJECT_ID
    

    Ganti PROJECT_ID dengan ID project.

  2. Beri akses akun layanan ke reCAPTCHA:

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-identitytoolkit.iam.gserviceaccount.com \
        --role=roles/identitytoolkit.serviceAgent
    

    Ganti kode berikut:

    • PROJECT_ID: the project ID
    • PROJECT_NUMBER: nomor akun project

Mode perlindungan bot reCAPTCHA

Perlindungan bot reCAPTCHA memiliki dua mode yang membantu Anda melindungi pengguna: audit dan terapkan. Perilaku mode ini berbeda-beda berdasarkan penyedia identitas.

Penyedia email-sandi

Mode audit dan penerapan berperilaku sebagai berikut untuk alur autentikasi email-sandi.

Mode audit

Saat Anda menyetel penegakan sandi email ke mode audit, Identity Platform akan membuat satu atau beberapa kunci reCAPTCHA di project Anda yang digunakan untuk menilai traffic ke Identity Platform API tanpa memblokir permintaan apa pun. Gunakan metrik yang dikeluarkan selama mode audit untuk menentukan apakah Anda harus mengaktifkan penerapan reCAPTCHA.

Mode terapkan

Saat Anda menyetel penegakan sandi email ke mode penegakan, Identity Platform akan membuat satu atau beberapa kunci reCAPTCHA di project Anda yang digunakan untuk menilai traffic ke Identity Platform API. Permintaan API yang tidak menyertakan token reCAPTCHA akan ditolak. Aktifkan penerapan hanya setelah Anda memigrasikan semua klien ke SDK dengan dukungan reCAPTCHA.

Penyedia telepon

Mode audit dan penegakan berperilaku sebagai berikut untuk alur autentikasi telepon.

Mode audit

Saat Anda menyetel penerapan autentikasi telepon ke mode audit, Identity Platform menggunakan perlindungan bot reCAPTCHA untuk verifikasi aplikasi. Jika permintaan pengguna lulus penilaian penipuan pulsa, kode verifikasi SMS akan dikirim. Jika permintaan pengguna gagal dalam penilaian penipuan pulsa dan Anda menggunakan SDK klien, Identity Platform akan memicu metode verifikasi pengganti untuk menyelesaikan alur autentikasi telepon. Metode penggantian yang diterima bergantung pada platform aplikasi Anda.

SDK klien memicu metode verifikasi penggantian dalam skenario berikut:

  • Token reCAPTCHA tidak ada.
  • Token reCAPTCHA tidak valid atau sudah tidak berlaku.
  • Token reCAPTCHA tidak melewati nilai minimum.
  • reCAPTCHA tidak dikonfigurasi dengan benar.

Pastikan metode verifikasi penggantian untuk platform aplikasi Anda disiapkan dan siap dipicu oleh SDK klien jika diperlukan.

Web

Jika penilaian perlindungan bot awal gagal, mode audit mengandalkan reCAPTCHA v2 untuk verifikasi. Oleh karena itu, Anda harus menyiapkan pemverifikasi reCAPTCHA (RecaptchaVerifier) dan meneruskannya ke operasi autentikasi telepon berikut:

  • verifyPhoneNumber
  • signInWithPhoneNumber
  • linkWithPhoneNumber
  • reauthenticateWithPhoneNumber
Tanpa pemverifikasi reCAPTCHA, Identity Platform tidak dapat memulai reCAPTCHA v2 dan akan menampilkan auth/argument-error. Untuk mengetahui informasi selengkapnya tentang cara menyiapkan pemverifikasi reCAPTCHA, lihat Menyiapkan pemverifikasi reCAPTCHA dalam dokumentasi Firebase.

Android

Jika penilaian perlindungan bot awal gagal, mode audit akan memverifikasi aplikasi Anda terhadap Play Integrity API. Jika verifikasi ini gagal, reCAPTCHA v2 akan dipicu. reCAPTCHA v2 dapat dipicu dalam skenario berikut:

  • Jika perangkat pengguna akhir tidak menginstal layanan Google Play.
  • Jika aplikasi tidak didistribusikan melalui Google Play Store (di Authentication SDK v21.2.0 dan yang lebih baru).
  • Jika token SafetyNet yang diperoleh tidak valid (di Authentication SDK versi sebelum v21.2.0).
Untuk mengetahui informasi selengkapnya tentang cara menyiapkan verifikasi aplikasi Android, lihat Mengaktifkan verifikasi aplikasi dalam dokumentasi Firebase.

iOS

Jika penilaian perlindungan bot awal gagal, mode audit mengandalkan notifikasi push senyap untuk verifikasi. Metode verifikasi ini melibatkan pengiriman token ke aplikasi Anda di perangkat yang meminta dengan notifikasi push senyap. Jika aplikasi Anda berhasil menerima notifikasi, alur autentikasi telepon akan dilanjutkan. Jika aplikasi Anda tidak menerima notifikasi push, reCAPTCHA v2 akan dipicu. reCAPTCHA v2 dapat dipicu jika notifikasi push diam tidak dikonfigurasi dengan benar.

Untuk mengetahui informasi selengkapnya tentang penyiapan verifikasi aplikasi iOS, lihat Mengaktifkan verifikasi aplikasi dalam dokumentasi Firebase.

Mode terapkan

Saat Anda menyetel penerapan autentikasi telepon ke mode penerapan, Identity Platform menggunakan perlindungan bot reCAPTCHA untuk verifikasi aplikasi. Jika permintaan pengguna lulus penilaian penipuan pulsa, kode verifikasi SMS akan dikirim. Jika permintaan pengguna gagal dalam penilaian penipuan melalui telepon, Identity Platform akan memblokir permintaan tersebut dan tidak mengirimkan pesan SMS yang berisi kode verifikasi.

Tidak ada verifikasi penggantian yang diperlukan dalam mode terapkan, Anda tidak perlu menyiapkan metode verifikasi tambahan untuk aplikasi Anda. Namun, sebaiknya siapkan pemverifikasi reCAPTCHA untuk aplikasi web guna memastikan reCAPTCHA v2 diaktifkan jika Anda memutuskan untuk mengubah mode reCAPTCHA aplikasi Anda menjadi AUDIT atau OFF.

Menyiapkan integrasi Identity Platform dengan reCAPTCHA Enterprise API

Untuk menyiapkan integrasi Identity Platform dengan reCAPTCHA Enterprise API, Anda harus melakukan tugas berikut:

  • Gunakan Admin SDK untuk menetapkan status penerapan reCAPTCHA dan mengaktifkan perlindungan bot.
  • Konfigurasi SDK klien untuk platform aplikasi Anda.

Sebaiknya aktifkan terlebih dahulu penerapan reCAPTCHA dalam mode audit dan pantau metrik reCAPTCHA yang dipancarkan project Anda untuk memastikan alur autentikasi dilindungi dengan tepat. Anda melakukan hal ini agar tidak mengganggu traffic pengguna saat Anda mengaudit penggunaan reCAPTCHA oleh mereka. Setelah Anda memverifikasi bahwa alur autentikasi Anda dilindungi, tetapkan perlindungan bot ke ENFORCE.

Mengaktifkan perlindungan bot reCAPTCHA

Penyedia email-sandi

Untuk mengaktifkan perlindungan bot reCAPTCHA untuk alur autentikasi email-sandi, lakukan hal berikut:

  1. Jika Anda belum melakukannya, aktifkan reCAPTCHA Enterprise API di project Anda.

  2. Untuk mengaktifkan perlindungan bot untuk project, gunakan Admin SDK. Dukungan reCAPTCHA tersedia di Admin SDK Node.js versi 11.7.0 dan yang lebih baru.

    Contoh:

    // Update project config with reCAPTCHA config
    const updateConfigRequest = {
      recaptchaConfig: {
        emailPasswordEnforcementState:  'ENFORCE_MODE',
        managedRules: [{
          endScore: END_SCORE,
          action: 'BLOCK'
        }]
      }
    };
    const updateProjectConfigWithRecaptcha = () => {
      getAuth().projectConfigManager().updateProjectConfig(updateConfigRequest).then((response) => {
        console.log('Updated reCAPTCHA config for project: ', response.recaptchaConfig);
      }).catch((error) => {
        console.log('Error updating project config:', error);
      });
    }
    

    Ganti kode berikut:

    • ENFORCE_MODE: mode yang ingin Anda tetapkan untuk penerapan autentikasi email-sandi reCAPTCHA. Nilai yang valid adalah OFF, AUDIT, dan ENFORCE. Untuk mengaktifkan perlindungan bot, parameter ini harus ditetapkan ke AUDIT atau ENFORCE. Saat Anda mengaktifkan perlindungan bot untuk pertama kalinya, sebaiknya tetapkan parameter ini ke AUDIT dan pastikan alur autentikasi Anda dilindungi sebelum menetapkannya ke ENFORCE. Untuk mengetahui informasi selengkapnya tentang cara kerja mode, lihat Mode perlindungan bot reCAPTCHA.
    • END_SCORE: skor penilaian perlindungan bot terendah yang dapat dimiliki permintaan sebelum gagal. Anda dapat menetapkan skor ini antara 0.0 dan 1.0. Misalnya, jika Anda menetapkan nilai minimum 0.6, reCAPTCHA akan gagal memproses permintaan dengan nilai 0.5 atau lebih rendah. Oleh karena itu, semakin tinggi skor yang Anda tetapkan, semakin ketat aturannya.

    Anda juga dapat mengaktifkan perlindungan bot dengan metode konfigurasi yang sama untuk tenant menggunakan Admin SDK. Untuk mengetahui informasi selengkapnya tentang cara memperbarui tenant, lihat Memperbarui tenant.

  3. Jika Anda menggunakan Identity Platform di iOS atau Android, Anda harus mendaftarkan aplikasi dari Firebase console:

    Jika menggunakan Identity Platform di web, Anda harus menambahkan domain yang diizinkan untuk setiap domain yang menggunakan reCAPTCHA. Untuk menambahkan domain yang diizinkan, lakukan hal berikut:

    1. Di konsol Google Cloud , buka halaman Identity Platform.

      Buka Identity Platform

    2. Buka Setelan > Keamanan.

    3. Klik Tambahkan domain.

    4. Masukkan nama domain, lalu klik Tambahkan untuk menyimpan domain.

    Penyediaan kunci reCAPTCHA dapat memerlukan waktu beberapa menit untuk diselesaikan.

  4. Jika Anda telah menyetel penerapan ke mode audit, sebaiknya pantau metrik reCAPTCHA untuk perlindungan bot guna memastikan alur Anda dilindungi.

Penyedia telepon

Untuk mengaktifkan perlindungan bot reCAPTCHA untuk alur autentikasi berbasis SMS, lakukan hal berikut:

  1. Jika Anda belum melakukannya, aktifkan reCAPTCHA Enterprise API di project Anda.

  2. Untuk mengaktifkan perlindungan bot untuk project, gunakan Admin SDK. Dukungan reCAPTCHA tersedia di Admin SDK Node.js versi 12.7.0 dan yang lebih baru.

    Contoh:

    // Update project config with reCAPTCHA config
    const updateProjectConfigRequest = {
      recaptchaConfig: {
        phoneEnforcementState: 'ENFORCE_MODE',
        managedRules: [{ endScore: END_SCORE, action: 'BLOCK' }],
        useSmsBotScore: 'true',
      }
    }
    let projectConfig = await getAuth().projectConfigManager().updateProject(updateProjectConfigRequest);
    

    Ganti kode berikut:

    • ENFORCE_MODE: mode yang ingin Anda tetapkan untuk penerapan autentikasi telepon reCAPTCHA. Nilai yang valid adalah OFF, AUDIT, dan ENFORCE. Untuk mengaktifkan perlindungan bot untuk alur berbasis SMS, parameter ini harus ditetapkan ke AUDIT atau ENFORCE dan useSmsBotScore harus ditetapkan ke true.

      Saat mengaktifkan perlindungan bot untuk pertama kalinya, sebaiknya setel parameter ini ke AUDIT dan pastikan alur autentikasi Anda dilindungi sebelum menyetelnya ke ENFORCE. Untuk mengetahui informasi selengkapnya tentang cara kerja mode, lihat Mode perlindungan bot reCAPTCHA.

    • END_SCORE: skor penilaian perlindungan bot terendah yang dapat dimiliki permintaan sebelum gagal. Anda dapat menetapkan skor ini antara 0.0 dan 1.0. Misalnya, jika Anda menetapkan nilai minimum 0.6, reCAPTCHA akan gagal memproses permintaan dengan nilai 0.5 atau lebih rendah. Oleh karena itu, semakin tinggi skor yang Anda tetapkan, semakin ketat aturannya.

    Anda juga dapat mengaktifkan perlindungan bot dengan metode konfigurasi yang sama untuk tenant menggunakan Admin SDK. Untuk mengetahui informasi selengkapnya tentang memperbarui tenant, lihat Memperbarui tenant.

  3. Jika Anda menggunakan Identity Platform di iOS atau Android, Anda harus mendaftarkan aplikasi dari Firebase console:

    Jika menggunakan Identity Platform di web, Anda harus menambahkan domain yang diotorisasi untuk setiap domain yang menggunakan reCAPTCHA. Untuk menambahkan domain resmi, lakukan hal berikut:

    1. Di konsol Google Cloud , buka halaman Identity Platform.

      Buka Identity Platform

    2. Buka Setelan > Keamanan.

    3. Klik Tambahkan domain.

    4. Masukkan nama domain, lalu klik Tambahkan untuk menyimpan domain.

    Penyediaan kunci reCAPTCHA dapat memerlukan waktu beberapa menit untuk diselesaikan.

  4. Jika Anda telah menyetel penerapan ke mode audit, sebaiknya pantau metrik reCAPTCHA untuk perlindungan bot guna memastikan alur Anda dilindungi.

Mengonfigurasi SDK klien

Konfigurasi SDK klien sesuai dengan platform aplikasi Anda.

Web

  1. Update ke versi terbaru Web SDK.

    • Dukungan reCAPTCHA untuk autentikasi email dan sandi di aplikasi web tersedia di JavaScript SDK versi 9.20.0 dan yang lebih baru.
    • Dukungan reCAPTCHA untuk autentikasi telepon di aplikasi web tersedia di JavaScript SDK versi 11 dan yang lebih baru.

    Setelah Anda mengintegrasikan SDK web dengan aplikasi, SDK akan otomatis mengambil konfigurasi reCAPTCHA Anda dan mengaktifkan perlindungan untuk penyedia yang telah Anda konfigurasi.

  2. Jika diperlukan, Anda dapat memaksa pengambilan sinyal reCAPTCHA sebagai berikut:

    import { initializeRecaptchaConfig } from '@firebase/auth';
    
    // Initialize Firebase Authentication
    const auth = getAuth();
    initializeRecaptchaConfig(auth)
      .then(() => {
        console.log("Recaptcha Enterprise Config Initialization successful.")
      })
      .catch((error) => {
        console.error("Recaptcha Enterprise Config Initialization failed with " + error)
      });
    

Android

  1. Update ke Android SDK versi terbaru. Dukungan reCAPTCHA untuk autentikasi email dan sandi serta autentikasi telepon di aplikasi Android tersedia di Android SDK versi 23.1.0 dan yang lebih baru.

    Selain itu, dukungan reCAPTCHA memerlukan level API 23 (Marshmallow) atau yang lebih tinggi dan Android 6 atau yang lebih tinggi.

    Setelah mengintegrasikan Android SDK dengan aplikasi, SDK akan otomatis mengambil konfigurasi reCAPTCHA dan mengaktifkan perlindungan untuk penyedia yang telah Anda konfigurasi.

  2. Tambahkan aturan build berikut ke bagian dependensi file build.gradle tingkat aplikasi Anda:

    implementation 'com.google.android.recaptcha:recaptcha:18.5.1'
    

    Pastikan untuk menggunakan reCAPTCHA SDK versi 18.5.1 atau yang lebih baru.

  3. Jika diperlukan, Anda dapat memaksa pengambilan sinyal reCAPTCHA sebagai berikut:

    • Kotlin:
    // Initialize Firebase Authentication
    auth = Firebase.auth
    
    auth.initializeRecaptchaConfig().addOnCompleteListener(this) { task ->
        if (task.isSuccessful) {
            Log.d(TAG, "Recaptcha Enterprise Initialization successful.")
        } else {
            Log.w(TAG, "Recaptcha Enterprise Initialization failed.")
        }
    }
    
    • Java:
    // Initialize Firebase Authentication
    auth = FirebaseAuth.getInstance();
    auth.initializeRecaptchaConfig().addOnCompleteListener(
      this, new OnCompleteListener<void>() {
      @Override
      public void onComplete(@NonNull Task<void> task) {
        if (task.isSuccessful()) {
          Log.d(TAG, "Recaptcha Enterprise Initialization successful.");
        } else {
          Log.w(TAG, "Recaptcha Enterprise Initialization failed.");
        }
      }
    });
    

iOS

  1. Update ke iOS SDK versi 11.6.0 atau yang lebih baru. Setelah Anda mengintegrasikan iOS SDK dengan aplikasi, SDK akan otomatis mengambil konfigurasi reCAPTCHA Anda dan mengaktifkan perlindungan untuk penyedia yang telah Anda konfigurasi.

  2. Untuk mengintegrasikan reCAPTCHA iOS SDK ke aplikasi Anda, lihat Menyiapkan lingkungan Anda.

  3. Pastikan -ObjC tercantum dalam flag linker Anda. Buka Target > Build Settings > All > Linking dan pastikan Other Linker Flags menampilkan -ObjC.

  4. Jika diperlukan, Anda dapat memaksa pengambilan sinyal reCAPTCHA sebagai berikut:

    • Swift:
    // Initialize Firebase Authentication
    try await Auth.auth().initializeRecaptchaConfig()
    
    • Objective-C:
    // Initialize Firebase Authentication
    [[FIRAuth auth] initializeRecaptchaConfigWithCompletion:^(NSError * _Nullable error) {
      // Firebase Authentication initialization finished
    }];
    

Memantau metrik reCAPTCHA untuk perlindungan dari bot

Sebelum Anda menyetel penerapan reCAPTCHA ke mode penerapan, sebaiknya gunakan mode audit dan pantau metrik reCAPTCHA yang dipancarkan project Anda untuk memastikan alur autentikasi terlindungi. Misalnya, metrik ini dapat membantu Anda menentukan apakah Anda telah menyiapkan integrasi Identity Platform dengan reCAPTCHA Enterprise API dengan benar. Metrik ini juga dapat membantu Anda menyesuaikan nilai minimum skor untuk traffic pengguna. Jika penyediaan kunci reCAPTCHA gagal atau jika akun layanan yang diperlukan tidak dibuat, upaya autentikasi reCAPTCHA akan tetap berhasil secara normal.

Pastikan autentikasi reCAPTCHA berfungsi dengan memeriksa metrik berikut yang dipancarkan project Anda ke Cloud Monitoring:

Untuk mengetahui informasi selengkapnya, lihat Memantau metrik reCAPTCHA.

Menerapkan perlindungan bot reCAPTCHA

Setelah Anda memverifikasi bahwa aplikasi Anda menerima traffic pengguna yang dapat diterima, Anda dapat mengaktifkan penerapan reCAPTCHA untuk melindungi pengguna Anda. Pastikan Anda tidak mengganggu pengguna lama, termasuk pengguna yang mungkin menggunakan aplikasi versi lama.

Penyedia email-sandi

Untuk mengaktifkan penerapan reCAPTCHA untuk alur autentikasi email-sandi di project atau tenant, gunakan Admin SDK untuk menjalankan perintah berikut:

const enforceRequest = {
  recaptchaConfig: {
    emailPasswordEnforcementState:  'ENFORCE',
    }]
  }
};

Penyedia telepon

Untuk mengaktifkan penerapan reCAPTCHA untuk alur autentikasi berbasis SMS di project atau tenant, gunakan Admin SDK untuk menjalankan perintah berikut:

const enforceRequest = {
  recaptchaConfig: {
    phoneEnforcementState:  'ENFORCE',
    useSmsBotScore: 'true'
    }]
  }
};

Menonaktifkan perlindungan bot reCAPTCHA

Penyedia email-sandi

Untuk menonaktifkan perlindungan bot untuk alur autentikasi email-sandi, gunakan Admin SDK untuk menjalankan perintah berikut:

const disableRequest = {
  recaptchaConfig: {
    emailPasswordEnforcementState:  'OFF',
  }
};

Penyedia telepon

Untuk menonaktifkan perlindungan bot untuk alur autentikasi berbasis SMS, gunakan Admin SDK untuk menjalankan perintah berikut:

const disableRequest = {
  recaptchaConfig: {
    phoneEnforcementState:  'OFF',
    useSmsBotScore: 'false'
  }
};

Mengganti putusan reCAPTCHA dengan fungsi Cloud Run

Selain mengonfigurasi nilai minimum skor, Anda dapat mengganti putusan reCAPTCHA untuk token tertentu menggunakan fungsi pemblokiran Cloud Run kustom. Hal ini berguna jika skor reCAPTCHA untuk login pengguna tertentu mungkin rendah, tetapi pengguna tersebut tepercaya atau telah diverifikasi melalui cara lain dan oleh karena itu diizinkan untuk menyelesaikan login.

Untuk mempelajari lebih lanjut cara mengonfigurasi fungsi pemblokiran dengan reCAPTCHA, lihat Memperluas Firebase Authentication dengan fungsi pemblokiran Cloud Functions.

Langkah berikutnya