Project

General

Profile

Actions

Bug #10918

closed

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

Added by David Lesimple about 2 years ago. Updated about 2 years ago.

Status:
Closed
Priority:
Normal
Category:
Authentification
Start date:
09/06/2019
Due date:
% Done:

100%

Estimated time:
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
Actions #1

Updated by David Lesimple about 2 years ago

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");
Actions #3

Updated by Miguel Moquillon about 2 years ago

  • Status changed from New to In progress...
  • Assignee set to Miguel Moquillon
  • Target version set to Version 6.1
Actions #4

Updated by Miguel Moquillon about 2 years ago

  • Status changed from In progress... to 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.

Actions #6

Updated by Nicolas Eysseric about 2 years ago

  • Status changed from Resolved to Integration in progress...
Actions #7

Updated by Nicolas Eysseric about 2 years ago

  • Status changed from Integration in progress... to Closed
  • % Done changed from 0 to 100

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

Actions

Also available in: Atom PDF