Development #24833
Adopter un mode de validation des mots de passe basé sur une liste de critères simples
100%
Description
- 1 caractère majuscule
- 1 caractère minuscule
- 1 chiffre
A définir ce serait assez simple:
A2_PASSWORD_VALIDATION_RULES = [ 'authentic2.password_validation.LengthRule', 'authentic2.password_validation.UpperCaseRule', 'authentic2.password_validation.LowerCaseRule', 'authentic2.password_validation.DigitRule', ]
chaque critère serait défini ainsi
class UpperCaseRule(object): label = _('at least 1 uppercase character') def validate(self, password): return bool(re.find('[A-Z]', password))
Sur la prod les valeurs définis sont les mêmes que celle par défaut (8 caractères, 3 classes).
Je propose que la nouvelle règle LengthRule reprenne le même setting qu'avant pour compatibilité, par contre le setting sur le nombre de classe disparaît pour être remplacé par la liste des classes de règle.
Je propose une API validate_password(password, user=None, ou=None) qui retourne une liste de tuple (bool, unicode), un par critère. Ça pourra être utilisé par le web-service de validation et le champ mot de passe (validation en frontend via appel ajax au web-service, validation en backend par PasswordField).
Fichiers
Demandes liées
Révisions associées
convert password validation code to new API (#24833)
update french translation (#24833)
Historique
Mis à jour par Benjamin Dauvergne il y a presque 6 ans
- Lié à Development #24439: Nouvelle interface de mot de passe ajouté
Mis à jour par Benjamin Dauvergne il y a presque 6 ans
- Fichier 0001-add-new-API-to-validate-passwords-fixes-24833.patch 0001-add-new-API-to-validate-passwords-fixes-24833.patch ajouté
- Statut changé de Nouveau à Solution proposée
- Patch proposed changé de Non à Oui
Mis à jour par Benjamin Dauvergne il y a presque 6 ans
- Fichier 0001-add-new-API-to-validate-passwords-fixes-24833.patch 0001-add-new-API-to-validate-passwords-fixes-24833.patch ajouté
- Fichier 0002-convert-password-validation-code-to-new-API-24833.patch 0002-convert-password-validation-code-to-new-API-24833.patch ajouté
Voilà j'ai migré aussi l'ancien code de validation des mots de passe, manque encore les nouvelles traductions. Ça va changer un poil les messages en attendant le patch d'Elias.
Mis à jour par Anonyme il y a presque 6 ans
Benjamin Dauvergne a écrit :
Voilà j'ai migré aussi l'ancien code de validation des mots de passe, manque encore les nouvelles traductions. Ça va changer un poil les messages en attendant le patch d'Elias.
OK pour moi.
Mis à jour par Frédéric Péters il y a presque 6 ans
Dans le ticket #24439 je notais que pour suivre les maquettes GLC il y avait des adaptations aux textes, la phrase d'introduction étant plus douce, "In order to create a secure password, please use at least:", l'affichage des critères perdant alors les "at least" redondants. Mais cela ne marche pas sur une vérification regex où n'importe quel libellé peut être posé. Tant pis alors mais au moins modifier la phrase d'intro.
@property def at_least_one_lowercase(self): return app_settings.A2_PASSWORD_POLICY_MIN_CLASSES > 0 @property def at_least_one_digit(self): return app_settings.A2_PASSWORD_POLICY_MIN_CLASSES > 1 @property def at_least_one_uppercase(self): return app_settings.A2_PASSWORD_POLICY_MIN_CLASSES > 2
Ce recyclage du paramètre de configuration me surprend; je m'attendais plutôt à A2_PASSWORD_VALIDATION_RULES comme dans la description, ou de nouveaux A2_PASSWORD_POLICY_MIN_{LOWERCASE,UPPERCASE,DIGIT,SYMBOL}.
Mis à jour par Benjamin Dauvergne il y a presque 6 ans
Oui j'aimerai bien aller vers ça mais je préférerai d'abord pousser ce patch simple, il permet facilement de passer à mieux ensuite.
Mis à jour par Anonyme il y a presque 6 ans
Benjamin Dauvergne a écrit :
Oui j'aimerai bien aller vers ça mais je préférerai d'abord pousser ce patch simple, il permet facilement de passer à mieux ensuite.
D'autant plus que je reprends ces mêmes textes dans le ticket #24439
Mis à jour par Benjamin Dauvergne il y a presque 6 ans
- Fichier 0001-add-new-API-to-validate-passwords-fixes-24833.patch 0001-add-new-API-to-validate-passwords-fixes-24833.patch ajouté
- Fichier 0002-convert-password-validation-code-to-new-API-24833.patch 0002-convert-password-validation-code-to-new-API-24833.patch ajouté
- Fichier 0003-update-french-translation-24833.patch 0003-update-french-translation-24833.patch ajouté
- Utilisation du message suggéré par Fred "In order to create a secure
password, please use at least:" traduit par "Pour la sécurité du mot de passe
veuillez avoir a minima : %s" - Retrait de "at least" en début de chaque critère
- Simplification et partage du code entre validate_password() et password_help_text()
Mis à jour par Benjamin Dauvergne il y a presque 6 ans
- Statut changé de Solution proposée à Résolu (à déployer)
- % réalisé changé de 0 à 100
Appliqué par commit authentic2|35b3136ef4ea1d6a759e78579ee3f4195f7035e0.
Mis à jour par Frédéric Péters il y a presque 6 ans
Ces nouveaux patchs ont par erreur été poussés :/
Mis à jour par Anonyme il y a presque 6 ans
Benjamin Dauvergne a écrit :
Non pas par erreur.
C'était Ack pour moi
Mis à jour par Frédéric Péters il y a presque 6 ans
C'était Ack pour moi.
Faut l'écrire dans le ticket alors, en le passant en "solution acceptée".
Mis à jour par Benjamin Dauvergne il y a plus de 5 ans
- Statut changé de Résolu (à déployer) à Fermé
add new API to validate passwords (fixes #24833)
POST /api/validate-password/ HTTP/1.1
Conten-Type: application/json
{"password": "whatever"}
200 Ok
Content-Type: application/json
{
"result": 1,
"ok": false,
"checks": [ {"label": "at least 1 digit", "result": false}
]
}
This API is public.