|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité régulier
![]() Inscription : novembre 2005 Messages : 18 ![]() |
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. |
|
|
00
|
|
|
#2 |
|
Membre éclairé
![]() Ingénieur développement logiciels Inscription : mars 2007 Messages : 274 ![]() |
Le plus simple je pense est d'utiliser un compte générique LDAP (un compte qui puisse faire de la recherche et dont le mot de passe n'expire pas). Et donc, c'est avec ce compte qu'il faut vérifier si l'utilisateur existe avec son login et de voir si son mot de passe est encore valide.
__________________
Smiley de Plomb 2009 Anciennement FrancoisIT |
|
|
00
|
|
|
#3 | |
|
Invité régulier
![]() Inscription : novembre 2005 Messages : 18 ![]() |
Merci pour ta réponse BornBanane,
En fait je me suis mal exprimé mais c'est précisemment ce que je cherche à faire Citation:
Mais pour cela il faut que je sois sûr que la personne qui tente de s'authentifier est bien la bonne (même si son mdp est expiré). Le problème c'est qu'apparemment ce n'est pas possible de faire de recherche sur le mot de passe... AD bloque au niveau sécurité et le champ n'est accessible qu'en écriture. Evidemment ça semble logique que l'on ne puisse pas lire la valeur du mot de passe (même crypté, quoi que...), mais j'espérais pouvoir utiliser par exemple la fonction ldap_compare pour comparer le mdp dans AD et celui saisi par l'utilisateur. |
|
|
|
00
|
|
|
#4 |
|
Membre éclairé
![]() Ingénieur développement logiciels Inscription : mars 2007 Messages : 274 ![]() |
En faite il faut chercher dans le ldap (via compte générique), avec le login, si une entrée existe bien.
Vérifié le champ pwdlastset de cet utilisateur. Si celui-ci est correct . Tu te déconnecte du ldap. Tu tente de te connecter au ldap avec l'utilisateur en cours, si la connexion fonctionne alors le mot de passe est correct. Sinon le mot de passe n'est pas correct. Par contre si le mot de passe est expiré je ne sais pas comment prcédé, je n'ai jamais eu ce cas à faire.
__________________
Smiley de Plomb 2009 Anciennement FrancoisIT |
|
|
00
|
|
|
#5 | ||
|
Invité régulier
![]() Inscription : novembre 2005 Messages : 18 ![]() |
Bonjour et merci de ton aide BornBanane,
Je suis d'accord avec toi sur la démarche, c'est précisemment ce que je cherche à réaliser. Citation:
Citation:
Après plusieurs recherches et tentatives, il semblerait que ce soit malheureusement impossible... je vais devoir faire autrement. Merci en tout cas pour ton aide BornBanane |
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com