Attivare, disattivare e utilizzare i criteri per le password

Questo documento mostra come utilizzare i criteri relativi alle password per migliorare l'efficacia delle password per gli utenti nuovi ed esistenti.

Panoramica

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

  • È necessario un carattere minuscolo
  • È necessario il carattere maiuscolo
  • Carattere numerico obbligatorio
  • Carattere non alfanumerico obbligatorio
  • 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 attivare l'applicazione forzata dei criteri relativi alle password in due modalità:

  • Richiedi: i tentativi di accesso non andranno a buon fine finché l'utente non aggiornerà a una password conforme alle tue norme.
  • Notifica: gli utenti sono autorizzati ad accedere con una password non conforme. Vengono restituiti tutti i criteri mancanti necessari per soddisfare il criterio. I criteri restituiti includono:

    • 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 password. L'esempio seguente mostra una risposta contenente criteri per le password mancanti:

    {
      "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 che rispetti le tue norme. Se hai utenti attivi, ti consigliamo di non attivare la modalità di richiesta, a meno che tu non intenda applicare immediatamente il criterio relativo alle 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 della password.

Quando abiliti l'applicazione forzata, imposta forceUpgradeOnSignin su true per abilitarla in modalità di richiesta. Impostalo su false per abilitare l'applicazione in modalità di notifica.

Abilita applicazione

Per applicare un criterio per le password:

  1. Se non lo hai già fatto, configura l'accesso tramite email e password.
  2. Per applicare un criterio per le 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 per la password
    • MAX_PASSWORD_LENGTH: la lunghezza massima richiesta per la password
  3. Per applicare un criterio per le password a livello di tenant, esegui questo comando:

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

Disabilita applicazione

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

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

    Sostituisci TENANT-ID con l'ID tenant per cui vuoi disabilitare un criterio per le password.

Applicazione sul lato client

Le password possono essere convalidate in base ai criteri relativi alle password per il progetto o a 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.