Abilitare, disabilitare e utilizzare le policy per le password

Questo documento mostra come impostare le policy per le password per migliorarne la robustezza per gli utenti nuovi ed esistenti.

Se vuoi impostare una policy per le password dalla console Firebase, consulta Impostare una policy per le password.

Panoramica

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

  • Carattere minuscolo obbligatorio
  • Carattere maiuscolo obbligatorio
  • 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)

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

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

Modalità di applicazione

Puoi abilitare l'applicazione delle policy per le password in due modalità:

  • Richiedi: i tentativi di accesso non vanno a buon fine finché l'utente non aggiorna una password conforme alle policy.
  • Notifica: gli utenti possono accedere con una password non conforme. Vengono restituiti tutti i criteri mancanti necessari per soddisfare la policy. 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 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 conforme alle policy. Se hai utenti attivi, ti consigliamo di non abilitare l'upgrade forzato all'accesso, a meno che tu non intenda applicare immediatamente la policy 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 abiliti l'applicazione, imposta forceUpgradeOnSignin su true per abilitare l'applicazione in modalità di richiesta. Impostalo su false per abilitare l'applicazione in modalità di notifica.

Abilitare l'applicazione

Per applicare una policy per le password:

  1. Se non l'hai ancora fatto, configura l'accesso con email e password sign-in.
  2. Per applicare una policy per le password a livello di progetto:

    Console Firebase

    1. Nella console Firebase, vai alla pagina Impostazioni di autenticazione.

      Vai alle impostazioni di autenticazione

    2. Seleziona la scheda Policy per le password.

    3. Configura i requisiti di sicurezza della password selezionati.

    4. Scegli la modalità di applicazione (Richiedi o Notifica) e se forzare gli upgrade delle password all'accesso.

    5. Fai clic su Salva.

    REST

    1. Nella Google Cloud console, stampa un token di accesso per l'ID progetto utilizzando il gcloud auth print-access-token comando:

      gcloud auth print-access-token --project=PROJECT_ID
      
    2. Abilita una policy per le password utilizzando l'API Identity Toolkit:

      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"
      

      Sostituisci quanto segue:

      • ACCESS_TOKEN: il token di accesso che hai generato in precedenza
      • PROJECT_ID: il tuo ID progetto
      • MIN_PASSWORD_LENGTH: la lunghezza minima richiesta della password
      • MAX_PASSWORD_LENGTH: la lunghezza massima richiesta della password
  3. Per applicare una policy per le password a livello di tenant:

    REST

    1. Nella Google Cloud console, stampa un token di accesso per l'ID progetto utilizzando il gcloud auth print-access-token comando:

      gcloud auth print-access-token --project=PROJECT_ID
      
    2. Abilita una policy per le password per un tenant utilizzando l'API Identity Toolkit :

      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"
      

      Sostituisci quanto segue:

      • ACCESS_TOKEN: il token di accesso che hai generato in precedenza
      • PROJECT_ID: il tuo ID progetto
      • TENANT_ID: l'ID del tenant in cui vuoi applicare la policy per le password
      • MIN_PASSWORD_LENGTH: la lunghezza minima richiesta della password
      • MAX_PASSWORD_LENGTH: la lunghezza massima richiesta della password

Disabilitare l'applicazione

  1. Per disabilitare l'applicazione delle policy per le password a livello di progetto:

    Console Firebase

    1. Nella console Firebase, vai alla pagina Impostazioni di autenticazione.

      Vai alle impostazioni di autenticazione

    2. Seleziona la scheda Policy per le password.

    3. Disabilita l'applicazione delle policy per le password.

    4. Fai clic su Salva.

    REST

    1. Nella Google Cloud console, stampa un token di accesso per l'ID progetto utilizzando il gcloud auth print-access-token comando:

      gcloud auth print-access-token --project=PROJECT_ID
      
    2. Disabilita l'applicazione delle policy per le password utilizzando l'API Identity Toolkit:

      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"
      

      Sostituisci quanto segue:

      • ACCESS_TOKEN: il token di accesso che hai generato in precedenza
      • PROJECT_ID: il tuo ID progetto
  2. Per disabilitare l'applicazione delle policy per le password a livello di tenant:

    REST

    1. Nella Google Cloud console, stampa un token di accesso per l'ID progetto utilizzando il gcloud auth print-access-token comando:

      gcloud auth print-access-token --project=PROJECT_ID
      
    2. Disabilita l'applicazione delle policy per le password per un tenant utilizzando l'API Identity Toolkit:

      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"
      

      Sostituisci quanto segue:

      • ACCESS_TOKEN: il token di accesso che hai generato in precedenza
      • PROJECT_ID: il tuo ID progetto
      • TENANT_ID: l'ID del tenant in cui vuoi disabilitare la policy per le password

Applicazione lato client

Le password possono essere convalidate in base alla policy 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 couldn't be validated.
});
const policy = status.passwordPolicy;

// Use the status and policy to show what requirements are met and which are
// missing.