J'ai eu besoin, récemment, d'écrire un script pour permettre a des utilisateurs de changer leurs mot de passes sur un référentiel LDAP. Ce référentiel était sous OpenDS, mais comme j'ai OpenLDAP à la maison, j'ai écris un script qui fonctionne pour les deux.

L'idée de base est de valider les données saisies par l'utilisateur et d'imposer une politique de sécurité pour la qualité des mots de passe. Elle est du type :

Regles: minimum 6 caracteres, comprenant au moins un 
de chacun des types suivants :
* chiffre (0-9)
* alphanumerique (a-zA-Z)
* ponctuation (-!#$%&*+,.:;<=>?@_{|}~) 

Il est possible de gérer cela dans le serveur LDAP, mais j'ai trouvé plus simple de le mettre dans ce script.

Installation :

Il faut d'abord paramétrer l'adresse du serveur et le domaine racine de recherche, au tout début du script.

Le script effectue une recherche récursive sur l'uid (en anonyme ou avec un utilisateur). C'est paramétrable dans le script lignes 86 à 92. Si vous utilisez un utilisateur de recherche, il faut le définir au début (lignes 11-12).

Lorsque l'uid est trouvé, le mot de passe est inséré de deux facons possibles :

  1. clear : Avec OpenDS, il ne faut pas chiffrer le mot de passe avant de l'insérer, car c'est OpenDS qui le fait
  2. ssha : Avec OpenLDAP, c'est l'inverse, j'ai donc ajouté la fonction pour faire du SHA salé.

A positionner au début, ligne 19.

N'étant pas un pro du PHP, c'est un peu quick'n'dirty... mais ca marche et c'est secure.

Le script PHP et la page HTML sont ici : ldapchangepasswd.tar