PHP/LDAP- bind credential error
bonjour,
j'ai éditer le code suivant en compilant plusieurs exemples interressant.
J'utilise EasyPHP et les modules LDAP/mSring/Mysqli...
Lors de la connexion avec un identifiant et un mot de passe sur un LDAP active directory 2003 server, celui ci fonctionne... puis ne fonctionne plus en réessayant.
J'appelle la fonction ci-dessous via un formulaire disposé sur un DIV, le même resultat disposé normalement. la réponse d'erreur récurente c'est : cant bind to server : crédential error. j'ai lu kek part qu'il sagit d'une réponse du serveur qui ne reconnait pas l'identifiant et le mot de passe....qui a pourtant marché quelques secondes plus tôt. un pro peu t'il m'aiguillé la dessus ?
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
| <?php /* Date de création: 05/06/2012 */ ?>
<html>
<body>
<?php
$login = htmlentities($_POST["login"]); //Récupération de la variable login
$pass = htmlentities($_POST["pass"]); //Récupération de la variable pass
$dom = htmlentities($_POST["domaine"]); //Récupération du choix du domaine de connexion
$ldap_port = 389;
$ip = "0.0.0.0";
switch ($dom) { /* SELECTION DE L'IP et ajout du domaine au login EN FONCTION DU DOMAINE DE CONNECTION */
case "adm.loc" : $ip ="192.x.x.x"; break;
case "ped.loc" : $ip ="192.x.x.y"; break;
default: $ip ="192.x.x.y";
}
echo "DEBUG = ip server ".$dom.": ".$ip."<BR>";
$ds = ldap_connect("$ip",$ldap_port); // On initialise la connexion au domaine (doit être un serveur LDAP valide !)
ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3); //Option à ajoutée si vous utiliser Windows server2k3
ldap_set_option($ds, LDAP_OPT_REFERRALS, 0); //Option à ajoutée si vous utilisez Windows server2k3
$r = ldap_bind($ds,"$login","$pass") or die("Connexion impossible"); // connexion avec user et password
//$r = ldap_bind($ds) or die("Connexion impossible"); // connexion anonyme read only
echo "Le résultat de connexion est $ds ";
if ($r == true) {
echo "Reussite";
$filter="(|(sn=$login*)(cn=$login*))";
switch ($dom)
{ /* FAIRE LA RECHERCHE SUR LA BONNE RACINE EN FONCTION DU DOMAINE DE CONNECTION */
case "adm.loc" : $sr=ldap_search($ds, "dc=adm,dc=loc", $filter); break;
case "ped.loc" : $sr=ldap_search($ds, "dc=ped,dc=loc", $filter); break;
default: case "ped.loc" : $sr=ldap_search($ds, "dc=ped,dc=loc", $filter);
}
echo $filter ;
echo $sr;
if (! $sr==false )
{
$info = ldap_get_entries($ds, $sr);
echo 'Données pour ' . $info["count"] . ' entrées<BR>'; // Retourne le nombre d entrées, ici une seule grace au login unique
echo 'DN : ' . $info[0]["dn"] . '<BR>'; // Retourne le DN de l utilisateur
echo 'CN : ' .$info[0]["cn"][0]. '<BR>'; // Retourne le CN de l utilisateur
echo 'Samaccountname : '.$info[0]["samaccountname"][0].'<BR>';
echo 'displayname : '.$info[0]["displayname"][0].'<BR>';;
echo 'Userprincipalname : '.$info[0]["userprincipalname"][0].'<BR>';
echo 'givenname : '.$info[0]["givenname"][0].'<BR>';
}
ldap_unbind($ds) or die("Erreur lors de la deconnexion au serveur : $dom");;
//ldap_close($ds);
}else { echo "Echec <br>"; } // On affiche le résultat de la connexion LDAP
?>
</body>
</html> |