Si vous arrivez ici, c’est que sans doute vous avez comme moi cherché sur Internet comment effectuer une authentification en LDAP sur une base Active Directory, en PHP. Difficile car on trouve beaucoup de bruit avec ces termes !

Voici ce que j’ai fini par écrire. Le principe essentiel est d’effectuer une recherche du DN, puis de re-effectuer un « ldap_bind ». Si cela ne fonctionne pas dans votre cas, faites le moi savoir via les commentaires!

Le petit bout de code:

 // modify these values
 define("LDAP_HOSTNAME","192.168.0.10");
 // LDAP server define("LDAP_DN", "DC=xx,DC=yy,DC=zz");
 // LDAP DN define("LDAP_CN", "admin");
 // LDAP admin name define("LDAP_CN_PASS", "password");
 // LDAP admin password
 function LDAP_identify( $login, $password) {
   $ldaprdn  = 'CN='.LDAP_CN.",CN=Users,".LDAP_DN;
   // DN ou RDN LDAP
   $ldappass = LDAP_CN_PASS;
  // admin password
   $ld = ldap_connect( LDAP_HOSTNAME);
   if (!$ld)  {
 	echo "Can't connect on LDAP server";
 	return false;
   }
   ldap_set_option($ld, LDAP_OPT_PROTOCOL_VERSION, 3);
   ldap_set_option($ld, LDAP_OPT_REFERRALS, 0);
   if (!ldap_bind( $ld, $ldaprdn, $ldappass)) {
 	echo "Can't identify on LDAP server";
 	ldap_close( $ld);
 	return false;
   }
   $r=ldap_search($ld, LDAP_DN, "(sAMAccountName=$login)");
   $info = ldap_get_entries( $ld, $r);
   if ($info)  {
 	/* 	** If you want to get some info
 	$id = $fullName = $mail = '';
 	if (isset($info[0]['sn'])) $id =$info[0]['sn'][0];
 	if (isset($info[0]['cn'])) $fullName =$info[0]['cn'][0];
 	if (isset($info[0]['mail'])) $mail =$info[0]['mail'][0];
 	*/
 	$DN = '';
 	if (isset($info[0]['dn'])) $DN =$info[0]['dn'];
 	// Active Directory accept empty password !?
 	$password = trim($password);
 	if (empty($password) || empty($DN) || !ldap_bind( $ld, $DN, $password)) {
 		echo "Erreur d'identification";
 		ldap_close( $ld);
 		return false;
 	}
 	// here, you're identified
 	ldap_close($ld);
 	return true;
   }
   ldap_close( $ld);
   return false;
 }
 
Catégories : PHP

1 commentaire

djidji · 4 juillet 2009 à 23 h 45 min

bonsoir a vous merci pour ce code qui est très intéressant.moi j’ai un problème en ce qui concerne l’ajout des utilisateurs dans active directory est ce que vous pouvez m’aider sur le code d’ajout car sur internet j’ai trouvé des codes qui n’ajoutent qu’un seul utilisateur.moi je veux ajouter plusieurs c’est a dire sous forme d’un formulaire.merci j’attends votre réponse car j’ai du reporter ma soutenance a cause de ça.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *