Activer, désactiver et utiliser des règles de mot de passe

Ce document explique comment définir des règles de mot de passe pour améliorer le niveau de sécurité des mots de passe des utilisateurs nouveaux et existants.

Si vous souhaitez définir une règle de mot de passe à partir de la console Firebase, consultez Définir une règle de mot de passe.

Présentation

Les règles relatives aux mots de passe vous permettent de renforcer la sécurité des comptes en appliquant des exigences de complexité des mots de passe. Les règles de mot de passe sont compatibles avec les exigences de mot de passe suivantes :

  • Minuscule requise
  • Majuscule requise
  • Caractère numérique requis
  • Caractère non alphanumérique requis
  • Longueur minimale du mot de passe (entre 6 et 30 caractères, 6 par défaut)
  • Longueur maximale du mot de passe (4 096 caractères maximum)

Les caractères suivants répondent à l'exigence de caractère non alphanumérique s'ils sont configurés :

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

Les modes d'exécution

Vous pouvez activer l'application forcée des règles relatives aux mots de passe de deux manières :

  • Exiger : les tentatives d'inscription échouent tant que l'utilisateur n'indique pas un mot de passe conforme à vos règles.
  • Notifier : les utilisateurs peuvent s'inscrire avec un mot de passe non conforme. Tous les critères manquants nécessaires pour respecter les règles sont renvoyés. Les critères renvoyés incluent :

    • MISSING_LOWERCASE_CHARACTER
    • MISSING_UPPERCASE_CHARACTER
    • MISSING_NUMERIC_CHARACTER
    • MISSING_NON_ALPHANUMERIC_CHARACTER
    • MINIMUM_PASSWORD_LENGTH
    • MAXIMUM_PASSWORD_LENGTH

    Vous pouvez envoyer ces informations à l'utilisateur pour l'informer qu'il doit mettre à jour son mot de passe. L'exemple suivant montre une réponse contenant des critères de mot de passe manquants :

    {
      "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"
        }
      ]
    }
    

Les nouveaux utilisateurs doivent choisir un mot de passe conforme à vos règles. Si vous avez des utilisateurs actifs, nous vous recommandons de ne pas activer la mise à niveau forcée lors de la connexion, sauf si vous avez l'intention d'appliquer immédiatement la règle relative aux mots de passe. Utilisez plutôt le mode de notification, qui permet aux utilisateurs de se connecter avec leur mot de passe actuel et leur envoie des notifications détaillant les exigences auxquelles leur mot de passe ne répond pas.

Lorsque vous activez l'application, définissez forceUpgradeOnSignin sur true pour activer l'application en mode obligatoire. Définissez-le sur false pour activer l'application forcée en mode de notification.

Activer l'application des règles

Pour appliquer une règle de mot de passe, procédez comme suit :

  1. Si vous ne l'avez pas déjà fait, configurez la connexion par adresse e-mail et mot de passe.
  2. Pour appliquer une règle de mot de passe au niveau du projet, procédez comme suit :

    Console Firebase

    1. Dans la console Firebase, accédez à la page Paramètres d'authentification.

      Accéder aux paramètres d'authentification

    2. Sélectionnez l'onglet Règle de mot de passe.

    3. Configurez les exigences de niveau de sécurité du mot de passe que vous avez sélectionnées.

    4. Choisissez votre mode d'application (Exiger ou Notifier) et indiquez si vous souhaitez forcer la mise à niveau du mot de passe lors de la connexion.

    5. Cliquez sur Enregistrer.

    REST

    1. Dans la console Google Cloud , imprimez un jeton d'accès pour l'ID de votre projet à l'aide de la commande gcloud auth print-access-token :

      gcloud auth print-access-token --project=PROJECT_ID
      
    2. Activez une règle de mot de passe à l'aide de 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"
      

      Remplacez les éléments suivants :

      • ACCESS_TOKEN : jeton d'accès que vous avez généré précédemment
      • PROJECT_ID : ID du projet.
      • MIN_PASSWORD_LENGTH : longueur minimale requise pour le mot de passe
      • MAX_PASSWORD_LENGTH : longueur maximale requise du mot de passe
  3. Pour appliquer une règle de mot de passe au niveau du locataire, procédez comme suit :

    REST

    1. Dans la console Google Cloud , imprimez un jeton d'accès pour l'ID de votre projet à l'aide de la commande gcloud auth print-access-token :

      gcloud auth print-access-token --project=PROJECT_ID
      
    2. Activez une règle de mot de passe pour un locataire à l'aide de 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"
      

      Remplacez les éléments suivants :

      • ACCESS_TOKEN : jeton d'accès que vous avez généré précédemment
      • PROJECT_ID : ID du projet.
      • TENANT_ID : ID du locataire pour lequel vous souhaitez appliquer la règle relative aux mots de passe
      • MIN_PASSWORD_LENGTH : longueur minimale requise pour le mot de passe
      • MAX_PASSWORD_LENGTH : longueur maximale requise du mot de passe

Désactiver l'application des règles

  1. Pour désactiver l'application des règles relatives aux mots de passe au niveau du projet, procédez comme suit :

    Console Firebase

    1. Dans la console Firebase, accédez à la page Paramètres d'authentification.

      Accéder aux paramètres d'authentification

    2. Sélectionnez l'onglet Règle de mot de passe.

    3. Désactivez l'application des règles de mot de passe.

    4. Cliquez sur Enregistrer.

    REST

    1. Dans la console Google Cloud , imprimez un jeton d'accès pour l'ID de votre projet à l'aide de la commande gcloud auth print-access-token :

      gcloud auth print-access-token --project=PROJECT_ID
      
    2. Désactivez l'application des règles de mot de passe à l'aide de 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"
      

      Remplacez les éléments suivants :

      • ACCESS_TOKEN : jeton d'accès que vous avez généré précédemment
      • PROJECT_ID : ID du projet.
  2. Pour désactiver l'application des règles relatives aux mots de passe au niveau du locataire, procédez comme suit :

    REST

    1. Dans la console Google Cloud , imprimez un jeton d'accès pour l'ID de votre projet à l'aide de la commande gcloud auth print-access-token :

      gcloud auth print-access-token --project=PROJECT_ID
      
    2. Désactivez l'application des règles de mot de passe pour un locataire à l'aide de 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"
      

      Remplacez les éléments suivants :

      • ACCESS_TOKEN : jeton d'accès que vous avez généré précédemment
      • PROJECT_ID : ID du projet.
      • TENANT_ID : ID du locataire pour lequel vous souhaitez désactiver la règle relative aux mots de passe

Application côté client

Les mots de passe peuvent être validés par rapport à la règle de mot de passe du projet ou d'un locataire côté client avant l'envoi.

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.