Mengaktifkan, menonaktifkan, dan menggunakan kebijakan sandi

Dokumen ini menunjukkan cara menggunakan kebijakan sandi untuk meningkatkan kekuatan sandi bagi pengguna baru dan lama.

Ringkasan

Dengan kebijakan sandi, Anda dapat meningkatkan keamanan akun dengan menerapkan persyaratan kerumitan sandi. Kebijakan sandi mendukung persyaratan sandi berikut:

  • Diperlukan karakter huruf kecil
  • Diperlukan karakter huruf besar
  • Diperlukan karakter numerik
  • Diperlukan karakter non-alfanumerik
  • Panjang sandi minimum (rentang dari 6 hingga 30 karakter; default hingga 6)
  • Panjang sandi maksimum (panjang maksimum 4096 karakter)

Karakter berikut memenuhi persyaratan karakter non-alfanumerik jika dikonfigurasi:

^ $ * . [ ] { } ( ) ? " ! @ # % & / \ , > < ' : ; | _ ~ `

Sebelum memulai

Mode penerapan

Anda dapat mengaktifkan penerapan kebijakan sandi dalam dua mode:

  • Wajibkan: Upaya login akan gagal sampai pengguna menggunakan sandi yang sesuai dengan kebijakan Anda.
  • Beri tahu: Pengguna diizinkan login dengan sandi yang tidak mematuhi kebijakan. Semua kriteria yang tidak ada dan diperlukan untuk memenuhi kebijakan akan ditampilkan. Kriteria yang ditampilkan meliputi:

    • MISSING_LOWERCASE_CHARACTER
    • MISSING_UPPERCASE_CHARACTER
    • MISSING_NUMERIC_CHARACTER
    • MISSING_NON_ALPHANUMERIC_CHARACTER
    • MINIMUM_PASSWORD_LENGTH
    • MAXIMUM_PASSWORD_LENGTH

    Anda dapat mengirimkan informasi ini kepada pengguna untuk memberi tahu mereka agar memperbarui sandi. Contoh berikut menunjukkan respons yang berisi kriteria sandi yang tidak ada:

    {
      "kind": "identitytoolkit#VerifyPasswordResponse",
      "localId": "CJL1i2",
      "email": "cloudysanfrancisco@gmail.com",
      "displayName": "",
      "idToken": "ID_TOKEN",
      "registered": true,
      "userNotifications": [
        {
          "notificationCode": "MISSING_NUMERIC_CHARACTER",
          "notificationMessage": "Password must contain a numeric character"
        },
        {
          "notificationCode": "MISSING_NON_ALPHANUMERIC_CHARACTER",
          "notificationMessage": "Password must contain a non-alphanumeric character"
        }
      ]
    }
    

Pengguna baru wajib memilih sandi yang sesuai dengan kebijakan Anda. Jika Anda memiliki pengguna aktif, sebaiknya jangan aktifkan mode wajib kecuali jika Anda ingin segera menerapkan kebijakan sandi. Sebagai gantinya, gunakan mode notifikasi, yang memungkinkan pengguna login dengan sandi mereka saat ini dan mengirimkan notifikasi yang menjelaskan persyaratan yang tidak dimiliki sandi mereka.

Saat Anda mengaktifkan penerapan, tetapkan forceUpgradeOnSignin ke true untuk mengaktifkan penerapan dalam mode wajib. Setel ke false untuk mengaktifkan penegakan dalam mode beri tahu.

Aktifkan penerapan

Untuk menerapkan kebijakan sandi, lakukan hal berikut:

  1. Jika Anda belum melakukannya, konfigurasikan login dengan email dan sandi.
  2. Untuk menerapkan kebijakan sandi di level project, jalankan hal berikut:

    import { getAuth } from 'firebase-admin/auth';
    
    // Update project config with password policy config
    getAuth().projectConfigManager().updateProjectConfig({
      passwordPolicyConfig: {
        enforcementState: 'ENFORCE',
        forceUpgradeOnSignin: true,
        constraints: {
          requireUppercase: true,
          requireLowercase: true,
          requireNonAlphanumeric: true,
          requireNumeric: true,
          minLength: MIN_PASSWORD_LENGTH,
          maxLength: MAX_PASSWORD_LENGTH,
        },
      },
    })
    

    Ganti kode berikut:

    • MIN_PASSWORD_LENGTH: panjang sandi minimum yang disyaratkan
    • MAX_PASSWORD_LENGTH: panjang sandi maksimum yang diperlukan
  3. Untuk menerapkan kebijakan sandi di level tenant, jalankan hal berikut:

    import { getAuth } from 'firebase-admin/auth';
    
    // Update project config with password policy config
    getAuth().tenantConfigManager().createTenant({
      displayName: "admin-tenant",
      passwordPolicyConfig: {
        enforcementState: 'ENFORCE',
        forceUpgradeOnSignin: true,
        constraints: {
          requireUppercase: true,
          requireLowercase: true,
          requireNonAlphanumeric: true,
          requireNumeric: true,
          minLength: MIN_PASSWORD_LENGTH,
          maxLength: MAX_PASSWORD_LENGTH,
        },
      },
    })
    

Nonaktifkan penerapan

  1. Untuk menonaktifkan penerapan kebijakan sandi di level project, jalankan perintah berikut:

    import { getAuth } from 'firebase-admin/auth';
    
    // Update project config with password policy config
    getAuth().projectConfigManager().updateProjectConfig({
      passwordPolicyConfig: {
        enforcementState: 'OFF',
      },
    })
    
  2. Untuk menonaktifkan penerapan kebijakan sandi di level tenant, jalankan perintah berikut:

    import { getAuth } from 'firebase-admin/auth';
    
    // Update tenant config with password policy config
    getAuth().tenantConfigManager().updateTenant(TENANT-ID, {
      passwordPolicyConfig: {
        enforcementState: 'OFF',
      },
    })
    

    Ganti TENANT-ID dengan ID tenant yang ingin Anda nonaktifkan kebijakan sandinya.

Menegakkan di sisi klien

Sandi dapat divalidasi berdasarkan kebijakan sandi untuk project atau tenant di sisi klien sebelum pengiriman.

import { getAuth, validatePassword } from 'firebase/auth';

const auth = getAuth();
auth.tenantId = TENANT-ID;

const status = await validatePassword(auth, 'password').catch((error) => {
  // Password could not be validated.
});
const policy = status.passwordPolicy;

// Use the status and policy to show what requirements are met and which are missing.