Project

General

Profile

Actions

Feature #4142

closed

Longueur et règles du mot de passe

Added by Yohann Chastagnier almost 9 years ago. Updated almost 9 years ago.

Status:
Closed
Priority:
Normal
Category:
Authentification
Start date:
01/10/2013
Due date:
% Done:

100%

Estimated time:
Livraison en TEST:
Livraison en PROD:

Description

La longueur minimum des mots de passe peut être paramétrée avec la valeur souhaitée. Le format du mot de passe quant à lui est totalement libre.
Il est donc nécessaire de faire évoluer la vérification du mot de passe lors de sa création et/ou de sa modification.
Un plugin javascript totalement paramétrable devra être créé et utilisé dans la page afin d'avertir l'utilisateur des règles de constitution du mot de passe.
Si le mot de passe saisi ne respecte pas toutes les règles, il ne pourra pas être enregistré.


Files

pwd-box-info_1.png (8.92 KB) pwd-box-info_1.png Yohann Chastagnier, 01/16/2013 03:51 PM
pwd-box-info_2.png (9.69 KB) pwd-box-info_2.png Yohann Chastagnier, 01/16/2013 03:51 PM
pwd-box-info_3.png (9.55 KB) pwd-box-info_3.png Yohann Chastagnier, 01/16/2013 03:51 PM
pwd-box-info_4.png (18.5 KB) pwd-box-info_4.png Yohann Chastagnier, 01/16/2013 03:51 PM
Actions #1

Updated by Yohann Chastagnier almost 9 years ago

  • File pwd-box-info_1.png added
  • File pwd-box-info_2.png added
  • File pwd-box-info_3.png added
  • File pwd-box-info_4.png added
  • Status changed from In progress... to Resolved

Une gestion centralisée de la vérification des mots de passe d'un utilisateur est mise en place.

Chaque fonctionnalité de Silverpeas qui permet de créer ou modifier un mot de passe d'un utilisateur se réfère, ou doit se référer, à un nouveau service unique de gestion de mot de passe pour valider sa composition.

Au niveau de l'interface de Silverpeas, dès lors que l'utilisateur positionne le curseur de saisie sur le champ (en écriture) d'un mot de passe, une petite fenêtre d'information apparaît en dessous de ce dernier :

Cette fenêtre présente l'ensemble des règles à respecter pour que le mot de passe soit valide.

Au fur et à mesure de la saisie du mot de passe, les règles sont vérifiées :

----------------------------------------------------------------------------

Cette fenêtre d'information se ferme lorsque l'utilisateur :
  • clique sur celle-ci
  • clique ailleurs que dans le champ de saisie du mot de passe
  • passe à un autre champ de saisie (soit avec la souris ou via la touche de tabulation)
  • appuie sur la touche "échap"
Pour faire apparaître à nouveau la fenêtre d'information :
  • touche "échap" si l'utilisateur n'a pas changé de champ de saisie
  • retourner sur le champ de saisie du mot de passe (à condition que le curseur de saisie ne soit pas sur le champ du mot de passe)

Afin de regrouper le tout en un seul service, la génération automatique d'un nouveau mot de passe est modifiée pour utiliser le nouveau système de gestion de mot de passe. L'ancien fichier de paramètres (/org/silverpeas/util/passwordGenerator.properties), utilisé par cette fonctionnalité, a été supprimé au profit de celui détaillé ci-après.

Ainsi, les fonctionnalités qui utilisent ce nouveau système sont les suivantes :
  • profil utilisateur
  • création/modification d'un utilisateur depuis la partie administration de Silverpeas
  • import CSV d'utilisateurs
  • génération d'un nouveau mot de passe à la demande de l'utilisateur (depuis l'écran de connexion)
  • Changement du mot de passe depuis l'écran de connexion
  • Changement du mot de passe lors du premier enregistrement de la question personnelle de l'utilisateur
  • Mot de passe oublié
  • Mot de passe bientôt expiré
  • Mot de passe expiré
Il est possible d'indiquer au service les deux points supplémentaires suivants :
  • certaines règles peuvent faire partie d'une combinaison de règles. Une combinaison est constituée de plusieurs règles, et parmi celles-ci, certaines doivent être vérifiées pour que la combinaison soit valide. Par exemple, il peut être paramétré une combinaison contenant 4 règles dont 2 sont obligatoires. Dès lors que 2 des 4 règles sont vérifiées, la combinaison est dite valide
  • une zone "libre" peut être renseignée via les fichiers StringTemplate /StringTemplate/core/password/extraRules_[fr, en, de].st. Via cette zone il est par exemple possible d'indiquer des règles supplémentaires qui ne peuvent pas être vérifiées par Silverpeas mais qui existent malgré tout. Cette zone peut également permettre aux administrateurs d'indiquer un message aux utilisateurs
Il est possible de définir un périmètre plus ou moins large de règles sur le serveur, à partir du fichier de paramètres : /org/silverpeas/password/settings/passwordSettings.properties :
  • password.rule.minLength : permet de définir la longueur minimum (valeur entière, 8 par défaut)
  • password.rule.maxLength : permet d'activer ou non la règle de taille maximale (true ou false, non activée par défaut)
  • password.rule.maxLength.value : permet de définir la longueur maximum (valeur entière, 12 par défaut). Si la règle de vérification n'est pas active (cf. paramètre précédent), ce paramètre est utilisé uniquement dans le cadre de la génération d'un mot de passe
  • password.rule.blankForbidden : permet d'activer ou non la règle d'interdiction d'espace (true ou false, activée par défaut)
  • password.rule.sequentialForbidden : permet d'activer ou non la règle d'interdiction de deux caractères identiques consécutifs (true ou false, non activée par défaut)
  • password.rule.atLeastXUppercase : permet d'activer ou non la règle de présence d'au moins X majuscules (true ou false, non activée par défaut)
  • password.rule.atLeastXUppercase.combined : permet d'indiquer si la règle de présence d'au moins X majuscules fait partie d'une combinaison ou non (true ou false, ne fait pas partie d'une combinaison par défaut)
  • password.rule.atLeastXUppercase.X : permet de définir le nombre de majuscules (1 par défaut). Cette valeur est également utilisée par la génération de mot de passe (même si la règle est ni activée, ni incluse dans une combinaison)
  • password.rule.atLeastXLowercase : permet d'activer ou non la règle de présence d'au moins une minuscules (true ou false, non activée par défaut)
  • password.rule.atLeastXLowercase.combined : permet d'indiquer si la règle de présence d'au moins X minuscules fait partie d'une combinaison ou non (true ou false, ne fait pas partie d'une combinaison par défaut)
  • password.rule.atLeastXLowercase.X : permet de définir le nombre de minuscules (1 par défaut). Cette valeur est également utilisée par la génération de mot de passe (même si la règle est ni activée, ni incluse dans une combinaison)
  • password.rule.atLeastXDigit : permet d'activer ou non la règle de présence de X chiffres (true ou false, non activée par défaut)
  • password.rule.atLeastXDigit.combined : permet d'indiquer si la règle de présence de X chiffres fait partie d'une combinaison ou non (true ou false, ne fait pas partie d'une combinaison par défaut)
  • password.rule.atLeastXDigit.X : permet de définir le nombre de chiffres (1 par défaut). Cette valeur est également utilisée par la génération de mot de passe (même si la règle est ni activée, ni incluse dans une combinaison)
  • password.rule.atLeastXSpecialChar : permet d'activer ou non la règle de présence d'au moins X caractères spéciaux (true ou false, non activée par défaut)
  • password.rule.atLeastXSpecialChar.combined : permet d'indiquer si la règle de présence d'au moins X caractères spéciaux fait partie d'une combinaison ou non (true ou false, ne fait pas partie d'une combinaison par défaut)
  • password.rule.atLeastXSpecialChar.X : permet de définir le nombre de caractères spéciaux (1 par défaut). Cette valeur est également utilisée par la génération de mot de passe (même si la règle est ni activée, ni incluse dans une combinaison)
  • password.rule.specialChars : permet de définir la liste des caractères spéciaux utilisés dans le cadre de la vérification ou de la génération d'un mot de passe
  • password.combination.nbMatchingRules : dans le cas où une combinaison est définie, c'est à dire que le paramètre [...].combined est à true pour plusieurs règles, ce paramètre indique combien de règles doivent être vérifiées pour que la combinaison soit dite valide (3 par défaut)

Ci dessous l'aperçu de l'affichage de la fenêtre d'information mettant en évidence des règles obligatoires, une combinaison à respecter et une zone dans laquelle des règles supplémentaires peuvent être indiquées (règles qui ne peuvent pas être vérifiées par Silverpeas par exemple) :

D'un point de vue technique, trois actions sont à mener au niveau des pages dans lesquelles le mot de passe d'un utilisateur peut être enregistré.

La première consiste à indiquer le plugin JQuery password via le View Generator :

  ...
  <head>
    <view:looknfeel />
    ...
    <view:includePlugin name="password"/>
    ...
  </head>
  ...

La seconde consiste à indiquer au plugin le champ (ou les champs) qui doit être pris en charge :

  $(document).ready(function(){
    $('#newPasswordInputId').password();
  });

La dernière consiste à bloquer la validation de l'enregistrement des informations de l'utilisateur sur une erreur de saisie du mot de passe :

  ...
  $('#newPasswordInputId').password('verify', {onError : function() {
    /*
     * Si des erreurs sont détectées, la fenêtre d'informations sur le mot de passe s'affiche et cette méthode est appelée.
     */
    errorMsg += "- [message d'erreur sur le mot de passe]\n";
  }});
  ...
  /*
   * Si errorMsg n'est pas vide, alors il y a des erreurs et les informations ne sont pas enregistrées.
   */

Enfin, lorsque la vérification d'un mot de passe doit être faite au sein d'un traitement JAVA, le service suivant doit être appelé (le plugin JQuery password fait appel à ce service) :

  PasswordCheck passwordCheck = PasswordServiceFactory.getPasswordService().check(password.getValue());
  if (!passwordCheck.isCorrect()) {
    /*
     * Des erreurs ont été détectées dans le mot de passe vérifié, le conteneur PasswordCheck contient les méthodes qui permettent d'obtenir le détail des erreurs
     */
  }

Actions #2

Updated by Yohann Chastagnier almost 9 years ago

  • % Done changed from 0 to 100
Actions #4

Updated by Yohann Chastagnier almost 9 years ago

  • File deleted (pwd-box-info_1.png)
Actions #5

Updated by Yohann Chastagnier almost 9 years ago

  • File deleted (pwd-box-info_2.png)
Actions #6

Updated by Yohann Chastagnier almost 9 years ago

  • File deleted (pwd-box-info_3.png)
Actions #7

Updated by Yohann Chastagnier almost 9 years ago

  • File deleted (pwd-box-info_4.png)
Actions #8

Updated by Nicolas Eysseric almost 9 years ago

  • Status changed from Resolved to Closed

OK. Validé et intégré...

Actions

Also available in: Atom PDF