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 (berkisar antara 6 hingga 30 karakter; defaultnya adalah 6 karakter)
- Panjang sandi maksimum (panjang maksimum 4.096 karakter)
Karakter berikut memenuhi persyaratan karakter non-alfanumerik jika dikonfigurasi:
^ $ * . [ ] { } ( ) ? " ! @ # % & / \ , > < ' : ; | _ ~ `
Sebelum memulai
- Menginstal admin SDK
Mode penerapan
Terdapat dua mode untuk mengaktifkan penerapan kebijakan sandi:
- Wajib: Upaya pendaftaran akan gagal sampai pengguna menggunakan sandi yang sesuai dengan kebijakan Anda.
Beri tahu: Pengguna diizinkan untuk mendaftar dengan sandi yang tidak mematuhi kebijakan. Setiap kriteria yang tidak terpenuhi 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 mereka. 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 diwajibkan untuk memilih sandi yang mematuhi kebijakan Anda. Jika memiliki pengguna aktif, sebaiknya jangan aktifkan fitur upgrade paksa saat login kecuali jika Anda ingin segera menerapkan kebijakan sandi. Sebagai gantinya, gunakan mode beri tahu, yang memungkinkan pengguna login dengan sandi saat ini dan mengirim notifikasi yang menjelaskan persyaratan yang tidak dimiliki oleh sandi mereka.
Saat Anda mengaktifkan penerapan, tetapkan forceUpgradeOnSignin
ke true
untuk mengaktifkan penerapan
dalam mode wajib. Tetapkan ke false
untuk mengaktifkan penerapan dalam mode notifikasi.
Mengaktifkan penerapan
Untuk menerapkan kebijakan sandi, lakukan hal berikut:
- Jika Anda belum melakukannya, konfigurasikan login dengan email dan sandi.
Untuk menerapkan kebijakan sandi di tingkat project, jalankan perintah 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 diperlukanMAX_PASSWORD_LENGTH
: panjang sandi maksimum yang diperlukan
Untuk menerapkan kebijakan sandi di tingkat tenant, jalankan perintah berikut:
import { getAuth } from 'firebase-admin/auth'; // Update project config with password policy config getAuth().tenantManager().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, }, }, })
Menonaktifkan penerapan
Untuk menonaktifkan penerapan kebijakan sandi di tingkat project, jalankan perintah berikut:
import { getAuth } from 'firebase-admin/auth'; // Update project config with password policy config getAuth().projectConfigManager().updateProjectConfig({ passwordPolicyConfig: { enforcementState: 'OFF', }, })
Untuk menonaktifkan penerapan kebijakan sandi di tingkat tenant, jalankan perintah berikut:
import { getAuth } from 'firebase-admin/auth'; // Update tenant config with password policy config getAuth().tenantManager().updateTenant(TENANT-ID, { passwordPolicyConfig: { enforcementState: 'OFF', }, })
Ganti
TENANT-ID
dengan ID tenant yang ingin Anda nonaktifkan kebijakan sandinya.
Menerapkan di sisi klien
Sandi dapat divalidasi berdasarkan kebijakan sandi untuk project atau tenant di sisi klien sebelum dikirim.
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.