Bonjour à tous,
C'est la première fois que je poste ici, et sachez que j'ai beaucoup cherché sur le forum (et sur d'autres sites d'ailleurs) avant de me résigner.
Voici mon problème :
Je veux créer une interface web de login (hebergé sur un apache) qui va taper directement dans une base LDAP sur un Active Directory, qui est sur un autre serveur que mon apache.
J'utilise OpenLDAP et PHP pour ce faire, et je rencontre un problème.
L'indentification couple login/mdp fonctionne très bien, mais lorsque je me connecte en anonyme, et que je veux lister les OU existants, rien ne se passe, et je n'ai pas d'erreurs dans le log.
Voici le code concerné :
INFOS :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 $connexion_serveur = ldap_connect($ldap_server, $ldap_port) or die ("Impossible de se connecter au serveur LDAP"); // On définit ici la version LDAP (OBLIGATOIRE!!!) ldap_set_option($connexion_serveur, LDAP_OPT_PROTOCOL_VERSION, 3); ldap_set_option($connexion_serveur, LDAP_OPT_REFERRALS, 0); // Sans cette ligne, ldap_search et ldap_list ne fonctionnent pas ! // Si connexion OK & utilisateur appartient à l'OU Admin alors : // connexion avec un mdp précis dans une OU précise : $connexion_user=@ldap_bind($connexion_serveur, 'cn='.$user.$ldap_informatique, $passwd)) //ldap_bind($connexion_serveur); // connexion anonyme echo "connecté anon"; $tab_arg=array("ou"); $filtre = "ou=*"; /* peut etre utiliser ldap_list(), car on peut lui préciser un filtre apparament plus affiné */ //$sr = ldap_list($connexion_serveur, $ldap_base, $filtre, $tab_arg); $sr=ldap_search($connexion_serveur, $ldap_base, $filtre); $info = ldap_get_entries($connexion_serveur, $sr); for ($i=0; $i < $info["count"]; $i++) { echo $info[$i]["ou"][0]; echo " "; } $_SESSION['admin']=0;
- Lorsque je suis connecté avec mon compte (compte classique dans l'AD), il arrive à me trouver toutes les OU (seulement les OU racines, juste en dessous du DN racine)
- j'ai essayé avec ou sans les "@" devant les fonctions de liens LDAP (bind, connect,...)
QUESTIONS :
- Avec ldap_search ou ldap_list, comment définit-on un niveau de filtre plus avancé que LDAP_SCOLE_LEVELONE ? (Pour aller chercher dans les sous-OU de l'arborescence)
- Les connexions anonymes sont-elles autorisées à accéder en lecture aux infos racines de la base LDAP ?
- Y a t'il une abération, ou des remarques sur mon code (je n'ai pas tout mis, hein )
Merci d'avances pour vos réponses, mais aussi pour m'avoir lu !
Cdt,
Vespiras
Partager