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 afin d'améliorer le niveau de sécurité des mots de passe 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 exigences de complexité des mots de passe. Les règles relatives aux mots 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 au maximum)
Les caractères suivants satisfont aux exigences de caractères non alphanumériques s'ils sont configurés:
^ $ * . [ ] { } ( ) ? " ! @ # % & / \ , > < ' : ; | _ ~ `
Avant de commencer
- Installez le SDK Admin.
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 mis à jour un mot de passe conforme à votre stratégie.
Notifier: les utilisateurs sont autorisés à se connecter avec un mot de passe non conforme. Tous les critères manquants nécessaires pour satisfaire à la stratégie 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'inviter à 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 le mode d'exigence, sauf si vous avez l'intention d'appliquer immédiatement la règle 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 non remplies par leur mot de passe.
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:
- Si vous ne l'avez pas déjà fait, configurez la connexion par e-mail et mot de passe.
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 requiseMAX_PASSWORD_LENGTH
: longueur maximale du mot de passe requise
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
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', }, })
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 une règle de mot 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 à un locataire côté client avant leur 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.