Bonjour à tous,
Voilà donc mon souci...
Le but est de permettre à un utilisateur de s'authentifier depuis un extranet avec son compte Active Directory via un formulaire html classique.
Je vous rassure tout de suite, j'ai déjà installé et configuré les composants nécessaires (la connexion vers AD se fait bien et avec SSL)
Le formulaire récupère donc un login et un mot de passe, que l'on passe à la fonction ldap_bind().
Jusqu'ici, tout fonctionne, à partir du moment où on fournit le bon couple login/password l'authentification se fait correctement(d'ailleurs étant connecté en ldaps, la modification de mot de passe fonctionne aussi).
Le problème concerne uniquement les comptes AD qui ont l'option "L'utilisateur doit changer le mot de passe a la prochaine connexion" activée.
Pour ce type de compte, ldap_bind() retourne systématiquement false, même si on fournit des identifiants valides.
Ce que je souhaiterais dans ce cas, c'est que l'utilisateur puisse se connecter, et qu'il soit redirigé vers un formulaire l'invitant à choisir un nouveau mot de passe...
Pour cela, je pensais utiliser ldap_search() sur son dn, en testant l'attribut pwdlastset pour savoir si l'utilisateur doit changer de mot de passe (il vaut 0 dans ce cas).
Mais étant donné que ldap_bind() renvoie toujours false pour ce type de compte, comment puis-je contrôler que l'utilisateur a saisi un mot de passe valide ?
D'après les recherches que j'ai pu faire, il semblerait que l'on ne puisse pas utiliser ldap_search() ou ldap_compare() sur le mot de passe (même crypté)...
Comment vérifier la validité du mot de passe saisi sans utiliser ldap_bind() ?
Avez-vous déjà rencontré cette problématique ?
Merci d'avance pour votre aide.
Partager