Projet

Général

Profil

Actions

Bug #10918

fermé

Impossibilité de se connecter avec la vérification de l'expiration du mot de passe dans l'annuaire LDAP

Ajouté par David Lesimple il y a plus de 4 ans. Mis à jour il y a plus de 4 ans.

Statut:
Closed
Priorité:
Normal
Assigné à:
Catégorie:
Authentification
Début:
06/09/2019
Echéance:
% réalisé:

100%

Temps estimé:
Navigateur:
Tous
Votre version de Silverpeas:
6.1-x
Système d'exploitation:
Votre base de données:
Toutes
Livraison en TEST:
Livraison en PROD:

Description

Si la vérification de la validité du mot de passe dans l'annuaire LDAP est activé, et que le format utilisé pour
le champ est de type timestamp, cela provoque une erreur.

Le champ LDAP en question est passwordExpirationTime
Dans une AD, son type est TimeStamp mais avec un format particulier tout de même :

AAAAMMJJHHMMSSZ

Mis à jour par David Lesimple il y a plus de 4 ans

Je pense que le problème vient à la lecture de cette valeur pour l'avoir au format Date dans le code de authenticationLDAP :
à cause du Z à la fin de la valeur.

DateFormat format = new SimpleDateFormat("yyyyMMddHHmmss");

Mis à jour par Miguel Moquillon il y a plus de 4 ans

  • Statut changé de New à In progress...
  • Assigné à mis à Miguel Moquillon
  • Version cible mis à Version 6.1

Mis à jour par Miguel Moquillon il y a plus de 4 ans

  • Statut changé de In progress... à Resolved

Le pattern qui sert à transformer la valeur d'un attribut au format TimeStamp a été revu de manière à, non seulement corriger le bogue et d'éventuels erreurs de conversion, mais aussi utiliser l'API java.time. Ce pattern répond, en partie , à la définition d'un type datetime dans les spécifications LDAP (https://ldapwiki.com/wiki/GeneralizedTime).

J'ai désormais documenté les fichiers de propriétés autDomainOpenDJ.properties, autDomainLDAP.properties et autDomainMSAD.properties quant aux propriétés permettant à Silverpeas d'identifier la date d'expiration d'un mot de passe. Ceci afin d'éviter une mauvaise utilisation de la propriété LDAPPwdLastSetFieldName qui, dans le cas d'Akwel a servi à spécifier l'attribut LDAP donnant la date d'expiration du mot de passe au lieu de celle donnant la date de dernière modification du mot de passe.

Ceci m'a donné l'idée d'introduire une nouvelle propriété : LDAPPwdExpirationTimeFieldName. Celle-ci permet d'indiquer quel attribut LDAP utiliser pour demander directement au serveur LDAP la date d'expiration d'un mot de passe. Son utilisation est exclusive à la propriété LDAPPwdLastSetFieldName. Si les deux propriétés sont valorisées alors c'est la propriété LDAPPwdExpirationTimeFieldName qui sera prise en compte. Avec cette nouvelle propriété, lors de l'authentification par LDAP, Silverpeas pourra déterminer la date d'expiration d'un mot de passe soit par calcul, comme auparavant, à partir de règles d'expiration (passées dans le fichier de propriété), soit en la demandant au serveur LDAP.

Mis à jour par Nicolas Eysseric il y a plus de 4 ans

  • Statut changé de Resolved à Integration in progress...

Mis à jour par Nicolas Eysseric il y a plus de 4 ans

  • Statut changé de Integration in progress... à Closed
  • % réalisé changé de 0 à 100

Validé sous MS Active Directory et OpenDJ. Intégré donc dans la branche principale.

Actions

Formats disponibles : Atom PDF