Attivare, disattivare e utilizzare i criteri per le password

Questo documento mostra come utilizzare i criteri relativi alle password per migliorare la robustezza delle password per gli utenti nuovi ed esistenti.

Panoramica

Con i criteri relativi alle password, puoi migliorare la sicurezza degli account applicando le password i requisiti di complessità. I criteri di protezione con password supportano i seguenti requisiti per le password:

  • È necessario un carattere minuscolo
  • È necessario un carattere maiuscolo
  • Carattere numerico obbligatorio
  • È necessario 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

Modalità di applicazione

Puoi abilitare l'applicazione dei criteri relativi alle password in due modalità:

  • Richiede: i tentativi di accesso non riusciti finché l'utente non aggiorna una password che sia conforme alle tue norme.
  • Invia una notifica: gli utenti possono accedere con una password non conforme. Vengono restituiti tutti i criteri mancanti necessari per soddisfare le norme. Criteri restituiti include:

    • 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 invitarlo ad 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 sono tenuti a scegliere una password conforme alle tue norme. Se hai utenti attivi, ti consigliamo di non abilitare la modalità di richiesta a meno che tu ha intenzione di applicare immediatamente i criteri relativi alle password. Utilizza invece la modalità di notifica che consente agli utenti di accedere con le loro password attuali e invia notifiche in cui vengono descritti in dettaglio i requisiti mancanti della password.

Quando attivi l'applicazione forzata, imposta forceUpgradeOnSignin su true per attivarla in modalità di richiesta. Impostalo su false per attivare l'applicazione in modalità di notifica.

Abilita applicazione forzata

Per applicare un criterio per le password, segui questi passaggi:

  1. Se non l'hai ancora fatto, configura l'accesso con email e password.
  2. Per applicare un criterio delle password a livello di progetto, esegui questo comando:

    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 password
    • MAX_PASSWORD_LENGTH: la lunghezza massima richiesta della password
  3. Per applicare un criterio delle password a livello di tenant, esegui questo comando:

    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,
        },
      },
    })
    

Disattiva applicazione

  1. 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',
      },
    })
    
  2. Per disabilitare l'applicazione dei criteri delle password a livello di tenant, esegui questo comando:

    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 sul lato client

Le password possono essere convalidate in base al criterio delle password per il progetto o un tenant sul 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.