Bug #10918
ferméImpossibilité de se connecter avec la vérification de l'expiration du mot de passe dans l'annuaire LDAP
100%
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 environ 5 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 environ 5 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 environ 5 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 Miguel Moquillon il y a environ 5 ans
Mis à jour par Nicolas Eysseric il y a environ 5 ans
- Statut changé de Resolved à Integration in progress...
Mis à jour par Nicolas Eysseric il y a environ 5 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.