Attivare, disattivare e utilizzare i criteri per le password
Questo documento mostra come utilizzare i criteri relativi alle password per migliorare la sicurezza delle password per gli utenti nuovi ed esistenti.
Panoramica
Con i criteri relativi alle password, puoi migliorare la sicurezza degli account applicando i requisiti di complessità delle password. I criteri di protezione con password supportano i seguenti requisiti per le password:
- È necessario un carattere minuscolo
- È richiesto un carattere maiuscolo
- È necessario un carattere numerico
- È richiesto un carattere non alfanumerico
- Lunghezza minima della password (da 6 a 30 caratteri; il valore predefinito è 6)
- Lunghezza massima della password (lunghezza massima di 4096 caratteri)
I seguenti caratteri soddisfano il requisito dei caratteri non alfanumerici se configurati:
^ $ * . [ ] { } ( ) ? " ! @ # % & / \ , > < ' : ; | _ ~ `
Prima di iniziare
- Installa l'SDK Admin
Modalità di applicazione
Puoi attivare l'applicazione forzata dei criteri relativi alle password in due modalità:
- Richiedi: i tentativi di registrazione non vanno a buon fine finché l'utente non aggiorna una password conforme ai criteri.
Invia una notifica: gli utenti possono registrarsi con una password non conforme. Vengono restituiti tutti i criteri mancanti necessari per soddisfare la norma. I criteri restituiti includeranno:
MISSING_LOWERCASE_CHARACTER
MISSING_UPPERCASE_CHARACTER
MISSING_NUMERIC_CHARACTER
MISSING_NON_ALPHANUMERIC_CHARACTER
MINIMUM_PASSWORD_LENGTH
MAXIMUM_PASSWORD_LENGTH
Puoi inviare queste informazioni all'utente per informarlo di aggiornare la sua password. L'esempio seguente mostra una risposta contenente criteri mancanti per la password:
{ "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" } ] }
I nuovi utenti devono scegliere una password conforme alle tue norme. Se hai utenti attivi, ti consigliamo di non attivare l'upgrade forzato al momento dell'accesso se non intendi applicare immediatamente il criterio della password. Utilizza invece la modalità di notifica, che consente agli utenti di accedere con le password attuali e invia notifiche che descrivono in dettaglio i requisiti mancanti per la password.
Quando attivi l'applicazione, imposta forceUpgradeOnSignin
su true
per attivarla
in modalità richiesta. Impostalo su false
per attivare l'applicazione in modalità di notifica.
Attivare l'applicazione
Per applicare un criterio per le password:
- Se non l'hai ancora fatto, configura l'accesso con email e password.
Per applicare un criterio per le password a livello di progetto, esegui quanto segue:
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, }, }, })
Sostituisci quanto segue:
MIN_PASSWORD_LENGTH
: la lunghezza minima richiesta della passwordMAX_PASSWORD_LENGTH
: la lunghezza massima richiesta della password
Per applicare un criterio password a livello di tenant, esegui quanto segue:
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, }, }, })
Disattivare l'applicazione
Per disattivare l'applicazione dei criteri delle password a livello di progetto, esegui quanto segue:
import { getAuth } from 'firebase-admin/auth'; // Update project config with password policy config getAuth().projectConfigManager().updateProjectConfig({ passwordPolicyConfig: { enforcementState: 'OFF', }, })
Per disattivare l'applicazione dei criteri relativi alla password a livello di tenant, esegui quanto segue:
import { getAuth } from 'firebase-admin/auth'; // Update tenant config with password policy config getAuth().tenantManager().updateTenant(TENANT-ID, { passwordPolicyConfig: { enforcementState: 'OFF', }, })
Sostituisci
TENANT-ID
con l'ID tenant per cui vuoi disattivare un criterio per le password.
Applicazione forzata lato client
Le password possono essere convalidate in base ai criteri per le password del progetto o di un tenant lato client prima dell'invio.
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.