Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks
Bibliothèques et frameworks Forum d'entraide sur les frameworks, templates, bibliothèques de code (PDFLib, eZPdf, JpGraph, Artichow, PEAR, etc). Avant de poster : FAQ bibliothèques, toutes les FAQ PHP et cours bibliothèques
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 16/07/2007, 17h06   #1
Futur Membre du Club
 
Inscription : janvier 2005
Messages : 70
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 70
Points : 18
Points : 18
Par défaut [LDAP] Problèmes lors du ldap_bind

Bonjour,

Après avoir circuler un peu partout sur le forum et sur notre ami à tous qu'est google, je m'en retourne à vos lumières.
J'ai installé un serveur LDAP avec OPENLDAP qui semble fonctionner convenablement puisque je réussis à me connecter en anonyme ou avec auth/psw via des interfaces clentes telles que LDAP Browser...

Cependant, via le php et en utilisant :
Identification avec LDAP
Code :
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
<?php
 
// Eléments d'identification LDAP
$ldaprdn  = 'cn=xxxxx,dc=yyyy,dc=zzz';     // DN ou RDN LDAP
$ldappass = 'secret';           // Mot de passe associé
 
//Connexion au serveur LDAP
$ldapconn = ldap_connect("localhost")
    or die("Impossible de se connecter au serveur LDAP.");
 
if ($ldapconn) {
 
    //Connexion au serveur LDAP
    $ldapbind = ldap_bind($ldapconn, $ldaprdn, $ldappass);
 
    // Identification
    if ($ldapbind) {
        echo "Connexion LDAP réussie";
    } else {
        echo "Connexion LDAP échouée";
    }
 
}
 
?>
ou
Connexion anonyme à un serveur LDAP
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
 
//Connexion anonyme à un serveur LDAP
 
//Connexion au serveur LDAP
$ldapconn = ldap_connect("localhost")
    or die("Impossible de se connecter au serveur LDAP.");
 
if ($ldapconn) {
 
    // identification anonyme
    $ldapbind = ldap_bind($ldapconn);
 
    if ($ldapbind) {
        echo 'Connexion LDAP anonmye réussie';
    } else {
        echo 'Connexion LDAP anonmye échouée';
    }
 
}
 
?>
J'ai systématiquement une erreur sur la fonction ldab_bind()
PHP Warning: ldap_bind() [<a href='function.ldap-bind'>function.ldap-bind</a>]: Unable to bind to server: Protocol error

Sur le serveur LDAP, les indications ne sont pas très claires, mais peu être que pour certains ici elles le seront :
ber_get_next on fd 888 failed errno=10035 (WSAEWOULDBLOCK)

ber_get_next on fd 888 failed errno=0 (unknown WSA error)
connection_read(888): input error=-2 id=4, closing.
connection_closing: readying conn=4 sd=888 for close
connection_close: deferring conn=4 sd=888
connection_resched: attempting closing conn=4 sd=888
connection_close: conn=4 sd=888


Ces erreurs ne me parlent pas du tout. Si vous avez des idées/infos ou suggestions, je suis preneur. D'avance merci pour votre aide.
seblo_scoqi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/07/2007, 18h33   #2
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Avez-vous essayer de spécifier la version du protocole (3) ?
Code :
ldap_set_option($ldapconn, LDAP_OPT_PROTOCOL_VERSION, 3);
à intercaler entre ldap_connect et ldap_bind.
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/07/2007, 09h29   #3
Futur Membre du Club
 
Inscription : janvier 2005
Messages : 70
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 70
Points : 18
Points : 18
Oui j'ai testé cela hier soir et ça fonctionne... Merci. Cette version de protocole influe selon la version du LDAP, si je comprends bien ?

Sinon j'ai d'autres soucis liés aux fonctions ldap_add (par exemple) :

Code :
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
28
29
if ($ds)
	 {
   // on s'authentifie en tant que super-utilisateur, ici, ldap_admin
    ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3);
    ldap_set_option($ds, LDAP_OPT_REFERRALS, 0);		
    $r=ldap_bind($ds,$rootdn,$rootpw);
 
    if($r){
      	// preparation des données
      	$entry["cn"]="Pillou";
 
      	$entry["sn"]="Jean-Francois";
 
      	$entry["mail"][0]="webmaster@truc.net";
 
      	$entry["mail"][1]="Jeff@truc.net";
 
      	$entry["objectclass"]="person";
 
      	// Ajout des données dans l'annuaire
      	$r=ldap_add($ds, "cn=Jean-Francois Pillou, dc=yyyy,dc=zzz", $entry);
        echo "ldap error : " . ldap_error($ds);
  }
 
	ldap_close($ds);
	// Ici les opérations à effectuer
	echo "<br>Déconnexion...<br>";
 
	 }
PhP me retourne l'erreur suivante :
PHP Warning: ldap_add() [<a href='function.ldap-add'>function.ldap-add</a>]: Add: Naming violation

Je précise que mon annuaire est vide et que par cette fonctione, je souhaitais commencer à le renseigner... Je trouve les messages d'erreur peu explicites, bien que je débute avec le LDAP.

D'avance merci pour votre aide.
seblo_scoqi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/07/2007, 10h40   #4
Futur Membre du Club
 
Inscription : janvier 2005
Messages : 70
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 70
Points : 18
Points : 18
Si ça peut aider voici le contenu de mon ldif :

Code :
1
2
3
4
5
6
7
 
dn: dc=yyyy,dc=zzz
dc: yyyy
objectClass: top
objectClass: dcObject
objectClass: organization
o: Sebastien
seblo_scoqi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/07/2007, 12h15   #5
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Citation:
Envoyé par seblo_scoqi
Oui j'ai testé cela hier soir et ça fonctionne... Merci. Cette version de protocole influe selon la version du LDAP, si je comprends bien ?
La version 2 est utilisée par défaut pour la connexion au niveau de l'API alors que le serveur la refuse, lui, par défaut.

Regardez bien les valeurs de vos attributs et celles qui sont utilisées dans le nom distingué, elles ne correspondent pas :
Code :
1
2
3
4
5
      	$entry["cn"]="Pillou";
      	$entry["sn"]="Jean-Francois";
      	$entry["mail"][0]="webmaster@commentcamarche.net";
      	$entry["mail"][1]="Jeff@commentcamarche.net";
      	$entry["objectclass"]="person";
Code :
      	$r=ldap_add($ds, "cn=Jean-Francois Pillou, dc=yyyy,dc=zzz", $entry);
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/07/2007, 14h27   #6
Futur Membre du Club
 
Inscription : janvier 2005
Messages : 70
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 70
Points : 18
Points : 18
J'ai donc fait un essai avec :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
      	$entry["cn"]="Pillou";
 
      	$entry["sn"]="Jean-Francois";
 
      	$entry["mail"][0]="webmaster@commentcamarche.net";
 
      	$entry["mail"][1]="Jeff@commentcamarche.net";
 
      	$entry["objectclass"]="person";
 
      	// Ajout des données dans l'annuaire
      	$r=ldap_add($ds, "cn=Pillou, dc=sebastien, dc=scoqi", $entry);
Cette fois l'erreur est différente :
PHP Warning: ldap_add() [<a href='function.ldap-add'>function.ldap-add</a>]: Add: Object class violation
seblo_scoqi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/07/2007, 14h49   #7
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Citation:
Envoyé par seblo_scoqi
PHP Warning: ldap_add(): Add: Object class violation
Citation:
olcObjectClasses: ( 2.5.6.6 NAME 'person'
DESC 'RFC2256: a person'
SUP top STRUCTURAL
MUST ( sn $ cn )
MAY ( userPassword $ telephoneNumber $ seeAlso $ description ) )
Un objet "person" ne possède aucun attribut mail à l'inverse d'un "inetOrgPerson".
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/07/2007, 14h57   #8
Futur Membre du Club
 
Inscription : janvier 2005
Messages : 70
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 70
Points : 18
Points : 18
En effet en enlevant les mails, cela fonctionne...Oulà il faut que je me documente sur LDAP, je constate que je suis loin de maitriser le sujet.
Des suggestions de sites pour bien se former au fonctionnement du LDAP ?
Notamment pour connaître les attributs de chaque objets ?

Merci beaucoup pour votre aide en tous cas.
seblo_scoqi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/07/2007, 15h08   #9
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Citation:
Envoyé par seblo_scoqi
En effet en enlevant les mails, cela fonctionne...Oulà il faut que je me documente sur LDAP, je constate que je suis loin de maitriser le sujet.
Des suggestions de sites pour bien se former au fonctionnement du LDAP ?
Le site officiel d'OpenLDAP qui contient bon nombre d'informations bien qu'en anglais.

Citation:
Envoyé par seblo_scoqi
Notamment pour connaître les attributs de chaque objets ?
Rien ne remplacera les schémas (fichiers d'extension .schema que vous avez installé en même temps que le serveur slapd).
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/07/2007, 15h15   #10
Futur Membre du Club
 
Inscription : janvier 2005
Messages : 70
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 70
Points : 18
Points : 18
Merci pour vos réponses
seblo_scoqi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/06/2009, 12h01   #11
Invité de passage
 
Inscription : juin 2009
Messages : 2
Détails du profil
Informations forums :
Inscription : juin 2009
Messages : 2
Points : 1
Points : 1
Moi aussi j'ai le meme problème, voici mon script php :

Code :
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
<?php
$ldaphost = "localhost";  // votre serveur LDAP
$ldapport = 389;                 // votre port de serveur LDAP
$ds = ldap_connect($ldaphost, $ldapport);  // on suppose que le serveur LDAP est sur le serveur local
 
if ($ds) {
    ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3);
    ldap_set_option($ds, LDAP_OPT_REFERRALS, 0);
// Eléments d'authentification LDAP
$ldaprdn  = 'cn=admin,dc=azolia,dc=fr';     // DN ou RDN LDAP
$ldappass = 'secret';  // Mot de passe associé
 
    // Connexion avec une identité qui permet les modifications
    $r = ldap_bind($ds, $ldaprdn, $ldappass);
 
    // Prépare les données
//récupération des données du formulaire html
		//$ou = $_POST['ou'];
		$cn = $_POST['cn'];
		$sn = $_POST['sn'];
		$mail = $_POST['mail'];
		$gidNumber = $_POST['gidNumber'];
		$uidNumber = $_POST['uidNumber'];
		$homeDirectory = $_POST['homeDirectory'];
		$mailbox = $_POST['mailbox'];
		$userPassword = $_POST['userPassword'];
 
	$entry["cn"]=$cn;
 
	$entry["sn"]=$sn;
 
	$entry["uidNumber"]=$uidNumber;
 
	$entry["objectclass"]="CourierMailAccount";
 
	$entry["objectclass"]="amavisAccount";
 
	$entry["objectclass"]="CourielMailAlias";
 
	$entry["mail"]=$mail;
 
	$entry["objectclass"]="top";
 
	$entry["objectclass"]="person";
 
	$entry["objectclass"]="inetOrgPerson";
 
 
	$entry["gidNumber"]=$gidNumber;
 
	$entry["homeDirectory"]=$homeDirectory;
 
	$entry["mailbox"]=$mailbox;
 
	$entry["userPassword"]=$userPassword;
 
	$entry["amavisBypassSpamChecks"]="faux";
 
	$entry["amavisSpamMidifiesSubj"]="vrai";
 
	$entry["amavisSpamSubjectTag2"]="***POURRIEL***";
 
	$entry["amavisSpamTag2Level"]="6.5";
 
	$entry["amavisSpamTagLevel"]="-1";
 
	$entry["defaultdelivery"]="allez.usap66@gmail.com";
 
	$entry["maildrop"]="azolia.fr";	
 
    // Ajoute les données au dossier
 
    $r = ldap_add($ds,"cn=".$cn.", ou=utilisateurs, ou=azolia.fr, ou=mail, dc=azolia, dc=fr",$entry);
 
    ldap_close($ds);
} else {
    echo "Impossible de se connecter au serveur LDAP";
}
?>
blackmamba66 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/07/2009, 16h59   #12
Invité régulier
 
Inscription : juillet 2009
Messages : 5
Détails du profil
Informations forums :
Inscription : juillet 2009
Messages : 5
Points : 6
Points : 6
salut,

au cas ou tu n'aurais pas trouvé l'erreur, et à tout ceux qui serait dans le même cas que blackmamba66

d'après ton code, tu veux définir dans LDAP le uidNumber, le homeDirectory et le gidNumber or les classe Object que tu indique ne connaissent pas ces attributs.

Pour pouvoir utiliser le uidNumber, homeDirectory il faut que tu indique la classe object posixAccount
Corny est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/07/2009, 22h49   #13
Futur Membre du Club
 
Inscription : juillet 2009
Messages : 75
Détails du profil
Informations forums :
Inscription : juillet 2009
Messages : 75
Points : 15
Points : 15
Par défaut LDAP(problème avec ldap_bind

Bonsoir tout le monde apparement j'ai le même probleme, mais malheureusement je n ai pas trouvé la réponse ,
en fait j'arrive à se connecter avec le serveur local mais le problème c'est quand le serveur OpenLDAP est en version de protocole 3, or par défault PHP envoie ses ordres en version 2, donc il faut utiliser ldap_set_option pour modifier la valeur d'une option LDAP

voila mon code <code type="php">echo "Connexion ...<br />";
$ds = ldap_connect ("localhost",319);
echo "Le résultat est ".$ds."<br />";

if ($ds)
{
ldap_set_option ($ds, LDAP_OPT_PROTOCOL_VERSION, 3);
echo "Attachement...";
$r = ldap_bind ($ds);
echo "Le résultat est ".$r."<br />";
echo "Fermeture de la connexion";
ldap_close ($ds);
}
else
{
echo "Impossible de se connecter au serveur LDAP";
}</code>

et voilà l'erreur :
Connexion ...
Le résultat est Resource id #2
Attachement...
Warning: ldap_bind() [function.ldap-bind]: Unable to bind to server: Can't contact LDAP server in C:\wamp2\www\tests\ldap_test.php on line 13
Le résultat est
Fermeture de la connexion


merci en avance pour vos réponses.
kaisser est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/07/2009, 12h37   #14
Invité régulier
 
Inscription : juillet 2009
Messages : 5
Détails du profil
Informations forums :
Inscription : juillet 2009
Messages : 5
Points : 6
Points : 6
Bonjour Kaisser,

J'ai déjà eu cette erreur, quand je voulais tester la tentative de connexion alors que mon serveur LDAP était HS.

Donc ton serveur LDAP n'est pas lancer !!!!
Corny est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/07/2009, 14h37   #15
Futur Membre du Club
 
Inscription : juillet 2009
Messages : 75
Détails du profil
Informations forums :
Inscription : juillet 2009
Messages : 75
Points : 15
Points : 15
bonjour corny, ben s il te plai moi je connais pas encore comment lancer le serveur LDAP , est c *e ke c manuel ? normalement dès qu'on installe le openldap ca se lance automatiquement ?
merci pour vos réponses
kaisser est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/07/2009, 14h51   #16
Invité régulier
 
Inscription : juillet 2009
Messages : 5
Détails du profil
Informations forums :
Inscription : juillet 2009
Messages : 5
Points : 6
Points : 6
Tu as donc un annuaire OpenLDAP.

Dans mon cas, j'utilise une Debian etch, et via les packages, le redemarrage de openldap se fait automatiquement quand on redemarrage la machine.

sinon pour lancer slapd manuellement :

Sous debian :

/etc/init.d/slapd start

Pour les autres distributions, je ne sais pas.
Corny est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/07/2009, 14h56   #17
Futur Membre du Club
 
Inscription : juillet 2009
Messages : 75
Détails du profil
Informations forums :
Inscription : juillet 2009
Messages : 75
Points : 15
Points : 15
ben je ss sous windows , et puis pour l annuaire je l ai pas encore créer , on doi le créer en avance ou koi? ben sinon j avais chercher mais je n'arrivai pa à trouver comment le créer mon annuaire à zero ,si tu le conais ca me ferais bcp plaisir bro, merci encore
kaisser est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/07/2009, 15h03   #18
Invité régulier
 
Inscription : juillet 2009
Messages : 5
Détails du profil
Informations forums :
Inscription : juillet 2009
Messages : 5
Points : 6
Points : 6
Pour le demarrage sous windows la j'en sais trop rien, j'ai pas installer.

En principe, la structure de ton annuaire est primordiale, elle doit être bien pensée si tu veux pas avoir de soucis.
2 point important :
- qu'est ce que tu vas stocker ?
- et qui va venir lire l'annuaire ?
Car tout les applications ne gèrent pas LDAP de la même manière, entre l'un qui donne les pleins pouvoirs sur les USER et groupes à l'annuaire et une autre qui impose que les user soit sur enregistrer dans l'annuaire et la base user de l'application, c'est un joli foutoir ^^.

Sinon la configuration de l'annuaire et son remplissage sont relativement simple une fois que t'as ta structure de réaliser.

Un lien ou tu pourras avoir plein d'info
http://articles.mongueurs.net/magazi...xmag65.html#h4

Et si tu recherche un peu sur google, il y a une multitude de site traitant du sujet ^^
Corny est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/07/2009, 15h17   #19
Futur Membre du Club
 
Inscription : juillet 2009
Messages : 75
Détails du profil
Informations forums :
Inscription : juillet 2009
Messages : 75
Points : 15
Points : 15
ok merci, ben en fait j ai concu la base de données de mon annuaire sur papier , là kan j'avais commencer à nchercher ds le net le principe d 'annuaire et tou que j'avais vu c truc de ldap ke j avais suivi depuis des jours juska la telecharger et tout et tout,
Alors voila ce que je ne comlprend pas encore , moi sachant que j ai ma base de données je peu passer directement a mysql et l implementer en php et terminer, mais c truc de ldap ce quoi vraiment son avantage , y aurait t il une grande difference si je l utilise pas ? plutot kabn est ce que je dois forcement l utiliser
kaisser est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/07/2009, 16h13   #20
Invité régulier
 
Inscription : juillet 2009
Messages : 5
Détails du profil
Informations forums :
Inscription : juillet 2009
Messages : 5
Points : 6
Points : 6
Une question :
Tu veux faire quoi au juste avec ton annuaire LDAP ?

Parce que le protocole LDAP, sert essentiellement, a authentifier les utilisateurs commun à plusieurs applications et éventuellement a gérer les droits d'utilisations dans ces applications.
(exemple diverses applications utilisés par les employés d'une entreprise.)
on centralise comptes utilisateurs qui sont gérés par une seul entité, le serveur LDAP.
Corny est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h19.


 
 
 
 
Partenaires

Hébergement Web