Mengaktifkan, menonaktifkan, dan menggunakan kebijakan sandi
Dokumen ini menunjukkan cara menetapkan kebijakan sandi untuk meningkatkan kekuatan sandi bagi pengguna baru dan lama.
Jika Anda ingin menetapkan kebijakan sandi dari Firebase console, lihat Menetapkan kebijakan sandi.
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 dari 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:
^ $ * . [ ] { } ( ) ? " ! @ # % & / \ , > < ' : ; | _ ~ `
Mode penerapan
Terdapat dua mode untuk mengaktifkan penerapan kebijakan sandi:
- Wajib: Upaya login akan gagal sampai pengguna menggunakan sandi yang sesuai dengan kebijakan Anda.
Beri Tahu: Pengguna diizinkan untuk mendaftar dengan sandi yang tidak mematuhi kebijakan. Kriteria yang tidak ada dan diperlukan untuk memenuhi kebijakan akan ditampilkan. Kriteria yang ditampilkan mencakup:
MISSING_LOWERCASE_CHARACTERMISSING_UPPERCASE_CHARACTERMISSING_NUMERIC_CHARACTERMISSING_NON_ALPHANUMERIC_CHARACTERMINIMUM_PASSWORD_LENGTHMAXIMUM_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. Setel ke false untuk mengaktifkan penegakan dalam mode
pemberitahuan.
Mengaktifkan penerapan
Untuk menerapkan kebijakan sandi, ikuti langkah-langkah berikut:
- Jika Anda belum melakukannya, konfigurasikan login dengan email dan sandi.
Untuk menerapkan kebijakan sandi di tingkat project, ikuti langkah-langkah berikut:
Firebase console
Di Firebase console, buka halaman Authentication Settings.
Pilih tab Kebijakan sandi.
Konfigurasi persyaratan kekuatan sandi yang Anda pilih.
Pilih mode penegakan Anda (Wajibkan atau Beri tahu) dan apakah akan mewajibkan upgrade sandi saat login.
Klik Simpan.
REST
Di konsol Google Cloud , cetak token akses untuk ID project Anda menggunakan perintah
gcloud auth print-access-token:gcloud auth print-access-token --project=PROJECT_IDAktifkan kebijakan sandi menggunakan Identity Toolkit API:
curl -X PATCH -d "{'passwordPolicyConfig':{'enforcementState':'ENFORCE','forceUpgradeOnSignin':true,'constraints':{'requireUppercase':true,'requireLowercase':true,'requireNonAlphanumeric':true,'requireNumeric':true,'minLength':MIN_PASSWORD_LENGTH,'maxLength':MAX_PASSWORD_LENGTH}}}" \ -H 'Authorization: Bearer ACCESS_TOKEN' \ -H 'Content-Type: application/json' \ -H 'X-Goog-User-Project: PROJECT_ID' \ "https://identitytoolkit.googleapis.com/admin/v2/projects/PROJECT_ID/config?updateMask=passwordPolicyConfig"Ganti kode berikut:
ACCESS_TOKEN: token akses yang Anda buat sebelumnyaPROJECT_ID: project ID AndaMIN_PASSWORD_LENGTH: panjang sandi minimum yang diperlukanMAX_PASSWORD_LENGTH: panjang sandi maksimum yang diperlukan
Untuk menerapkan kebijakan sandi di tingkat tenant, ikuti langkah-langkah berikut:
REST
Di konsol Google Cloud , cetak token akses untuk ID project Anda menggunakan perintah
gcloud auth print-access-token:gcloud auth print-access-token --project=PROJECT_IDAktifkan kebijakan sandi untuk tenant menggunakan Identity Toolkit API:
curl -X PATCH -d "{'passwordPolicyConfig':{'enforcementState':'ENFORCE','forceUpgradeOnSignin':true,'constraints':{'requireUppercase':true,'requireLowercase':true,'requireNonAlphanumeric':true,'requireNumeric':true,'minLength':MIN_PASSWORD_LENGTH,'maxLength':MAX_PASSWORD_LENGTH}}}" \ -H 'Authorization: Bearer ACCESS_TOKEN' \ -H 'Content-Type: application/json' \ -H 'X-Goog-User-Project: PROJECT_ID' \ "https://identitytoolkit.googleapis.com/admin/v2/projects/PROJECT_ID/tenants/TENANT_ID?updateMask=passwordPolicyConfig"Ganti kode berikut:
ACCESS_TOKEN: token akses yang Anda buat sebelumnyaPROJECT_ID: project ID AndaTENANT_ID: ID tenant tempat Anda ingin menerapkan kebijakan sandiMIN_PASSWORD_LENGTH: panjang sandi minimum yang diperlukanMAX_PASSWORD_LENGTH: panjang sandi maksimum yang diperlukan
Menonaktifkan penerapan
Untuk menonaktifkan penerapan kebijakan sandi di tingkat project, ikuti langkah-langkah berikut:
Firebase console
Di Firebase console, buka halaman Authentication Settings.
Pilih tab Kebijakan sandi.
Nonaktifkan penerapan kebijakan sandi.
Klik Simpan.
REST
Di konsol Google Cloud , cetak token akses untuk ID project Anda menggunakan perintah
gcloud auth print-access-token:gcloud auth print-access-token --project=PROJECT_IDNonaktifkan penerapan kebijakan sandi menggunakan Identity Toolkit API:
curl -X PATCH -d "{'passwordPolicyConfig':{'enforcementState':'OFF'}}" \ -H 'Authorization: Bearer ACCESS_TOKEN' \ -H 'Content-Type: application/json' \ -H 'X-Goog-User-Project: PROJECT_ID' \ "https://identitytoolkit.googleapis.com/admin/v2/projects/PROJECT_ID/config?updateMask=passwordPolicyConfig"Ganti kode berikut:
ACCESS_TOKEN: token akses yang Anda buat sebelumnyaPROJECT_ID: project ID Anda
Untuk menonaktifkan penerapan kebijakan sandi di tingkat tenant, ikuti langkah-langkah berikut:
REST
Di konsol Google Cloud , cetak token akses untuk ID project Anda menggunakan perintah
gcloud auth print-access-token:gcloud auth print-access-token --project=PROJECT_IDNonaktifkan penerapan kebijakan sandi untuk tenant menggunakan Identity Toolkit API:
curl -X PATCH -d "{'passwordPolicyConfig':{'enforcementState':'OFF'}}" \ -H 'Authorization: Bearer ACCESS_TOKEN' \ -H 'Content-Type: application/json' \ -H 'X-Goog-User-Project: PROJECT_ID' \ "https://identitytoolkit.googleapis.com/admin/v2/projects/PROJECT_ID/tenants/TENANT_ID?updateMask=passwordPolicyConfig"Ganti kode berikut:
ACCESS_TOKEN: token akses yang Anda buat sebelumnyaPROJECT_ID: project ID AndaTENANT_ID: ID tenant tempat Anda ingin menonaktifkan kebijakan sandi
Menerapkan di sisi klien
Sandi dapat divalidasi terhadap 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 couldn't be validated.
});
const policy = status.passwordPolicy;
// Use the status and policy to show what requirements are met and which are
// missing.