Activer, désactiver et utiliser les règles relatives aux mots de passe

Ce document explique comment utiliser des règles relatives aux mots de passe pour améliorer les paramètres pour les utilisateurs nouveaux et existants.

Présentation

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

  • 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 au maximum)

Les caractères suivants satisfont à l'exigence de caractères non alphanumériques si : configuré:

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

Avant de commencer

Les modes d'exécution

Vous pouvez activer l'application des règles relatives aux mots de passe dans deux modes:

  • Exiger: les tentatives de connexion échouent tant que l'utilisateur n'a pas défini un mot de passe qui respecte votre règlement.
  • Notifier: les utilisateurs sont autorisés à se connecter avec un mot de passe non conforme. N'importe quelle valeur les critères manquants nécessaires pour respecter la règle sont renvoyés. 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 lui demander de mettre à jour son mot de passe. L'exemple suivant montre une réponse contenant critères de mot de passe:

    {
      "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 le mode d'exigence ont l’intention d’appliquer immédiatement la politique de mot de passe. Utilisez plutôt le mode notification, qui permet aux utilisateurs de se connecter avec leur mot de passe actuel et envoie des notifications qui détaillent les exigences auxquelles son mot de passe n’a pas accès.

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

Activer l'application des règles

Pour appliquer une règle relative aux mots de passe, procédez comme suit:

  1. Si vous ne l'avez pas déjà fait, configurez la connexion par e-mail et mot de passe.
  2. Pour appliquer une règle relative aux mots de passe au niveau du projet, exécutez la commande suivante:

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

    Remplacez les éléments suivants :

    • MIN_PASSWORD_LENGTH: longueur minimale du mot de passe requise
    • MAX_PASSWORD_LENGTH: longueur maximale du mot de passe requise
  3. Pour appliquer une règle relative aux mots de passe au niveau du locataire, exécutez la commande suivante:

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

Désactiver l'application

  1. Pour désactiver l'application des règles relatives aux mots de passe au niveau du projet, exécutez la commande suivante:

    import { getAuth } from 'firebase-admin/auth';
    
    // Update project config with password policy config
    getAuth().projectConfigManager().updateProjectConfig({
      passwordPolicyConfig: {
        enforcementState: 'OFF',
      },
    })
    
  2. Pour désactiver l'application des règles relatives aux mots de passe au niveau du locataire, exécutez la commande suivante:

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

    Remplacez TENANT-ID par l'ID du locataire pour lequel vous souhaitez désactiver un des règles relatives aux mots de passe.

Application côté client

Les mots de passe peuvent être validés par rapport à la règle relative aux mots 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 could not be validated.
});
const policy = status.passwordPolicy;

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