Activer, désactiver et utiliser des règles relatives aux mots de passe
Ce document explique comment définir des règles relatives aux mots de passe pour améliorer la sécurité des mots de passe des utilisateurs nouveaux et existants.
Si vous souhaitez définir une règle relative aux mots de passe à partir de la console Firebase, consultez Définir une règle relative aux mots 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 relatives aux mots de passe sont compatibles avec les exigences 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 des règles relatives aux mots de passe dans deux modes :
- Obligatoire : les tentatives d'inscription échouent tant que l'utilisateur n'indique pas un mot de passe conforme à vos règles.
Notification : 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 les suivants :
MISSING_LOWERCASE_CHARACTERMISSING_UPPERCASE_CHARACTERMISSING_NUMERIC_CHARACTERMISSING_NON_ALPHANUMERIC_CHARACTERMINIMUM_PASSWORD_LENGTHMAXIMUM_PASSWORD_LENGTH
Vous pouvez envoyer ces informations à l'utilisateur pour l'inviter à modifier 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 prévoyez 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 envoie des notifications détaillant les exigences auxquelles leur mot de passe ne répond pas.
Lorsque vous activez l'application des règles, définissez forceUpgradeOnSignin sur true pour activer l'application en mode obligatoire. Définissez-le sur false pour activer l'application en mode de 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, procédez comme suit :
Console Firebase
Dans la console Firebase, accédez à la page Authentication Settings (Paramètres d'authentification).
Sélectionnez l'onglet Password policy (Règle relative aux mots de passe).
Configurez les exigences de niveau de sécurité du mot de passe que vous avez sélectionnées.
Choisissez votre mode d'application (Obligatoire ou Notification) et indiquez si vous souhaitez forcer la mise à niveau des mots de passe lors de la connexion.
Cliquez sur Save (Enregistrer).
REST
Dans la Google Cloud console, imprimez un jeton d'accès pour l'ID de votre projet à l'aide de la
gcloud auth print-access-tokencommande :gcloud auth print-access-token --project=PROJECT_IDActivez une règle relative aux mots 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édemmentPROJECT_ID: ID de votre projetMIN_PASSWORD_LENGTH: longueur minimale requise du mot de passeMAX_PASSWORD_LENGTH: longueur maximale requise du mot de passe
Pour appliquer une règle relative aux mots de passe au niveau du locataire, procédez comme suit :
REST
Dans la Google Cloud console, imprimez un jeton d'accès pour l'ID de votre projet à l'aide de la
gcloud auth print-access-tokencommande :gcloud auth print-access-token --project=PROJECT_IDActivez une règle relative aux mots 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édemmentPROJECT_ID: ID de votre projetTENANT_ID: ID du locataire pour lequel vous souhaitez appliquer la règle relative aux mots de passeMIN_PASSWORD_LENGTH: longueur minimale requise du mot de passeMAX_PASSWORD_LENGTH: longueur maximale requise du mot de passe
Désactiver l'application des règles
Pour désactiver l'application des règles relatives aux mots de passe au niveau du projet, procédez comme suit :
Console Firebase
Dans la console Firebase, accédez à la page Authentication Settings (Paramètres d'authentification).
Sélectionnez l'onglet Password policy (Règle relative aux mots de passe).
Désactivez l'application des règles relatives aux mots de passe.
Cliquez sur Save (Enregistrer).
REST
Dans la Google Cloud console, imprimez un jeton d'accès pour l'ID de votre projet à l'aide de la
gcloud auth print-access-tokencommande :gcloud auth print-access-token --project=PROJECT_IDDésactivez l'application des règles relatives aux mots 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édemmentPROJECT_ID: ID de votre projet
Pour désactiver l'application des règles relatives aux mots de passe au niveau du locataire, procédez comme suit :
REST
Dans la Google Cloud console, imprimez un jeton d'accès pour l'ID de votre projet à l'aide de la
gcloud auth print-access-tokencommande :gcloud auth print-access-token --project=PROJECT_IDDésactivez l'application des règles relatives aux mots 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édemmentPROJECT_ID: ID de votre projetTENANT_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 relative aux mots de passe du projet ou d'un locataire côté client avant d'être envoyés.
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.