Attivare, disattivare e utilizzare le policy per le password

Questo documento mostra come impostare policy per le 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 i requisiti di complessità delle password. I criteri per le password supportano i seguenti requisiti per le password:

  • È richiesto 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 (massimo 4096 caratteri)

Se configurati, i seguenti caratteri soddisfano il requisito dei caratteri non alfanumerici:

^ $ * . [ ] { } ( ) ? " ! @ # % & / \ , > < ' : ; | _ ~ `

Prima di iniziare

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.
  • Notifica: gli utenti possono registrarsi con una password non conforme. Vengono restituiti tutti i criteri mancanti necessari per soddisfare le norme. 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 informarlo di aggiornare la password. L'esempio seguente mostra una risposta contenente i criteri per la 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 conforme alle tue norme. Se hai utenti attivi, ti consigliamo di non attivare l'upgrade forzato all'accesso a meno che tu non intenda applicare immediatamente i criteri per le 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 attivi l'applicazione, imposta forceUpgradeOnSignin su true per attivare l'applicazione in modalità obbligatoria. Imposta il valore su false per attivare l'applicazione in modalità di notifica.

Attiva l'applicazione

Per applicare un criterio password:

  1. Se non l'hai ancora fatto, configura l'accesso con 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 della password
    • MAX_PASSWORD_LENGTH: la lunghezza massima richiesta della password
  3. Per applicare un criterio 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,
        },
      },
    })
    

Disattivare l'applicazione

  1. Per disattivare l'applicazione delle norme relative 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 disattivare l'applicazione dei criteri relativi alla 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 una norma relativa alle password.

Applicazione lato client

Le password possono essere convalidate in base alle norme sulle 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.