Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

CONNEXION LDAP AVEC LOGIN MOT DE PASSE EN PHP


Information sur la source

Catégorie :Application Classé sous : login, connexion, ldap, active, directory Niveau : Débutant Date de création : 04/08/2005 Date de mise à jour : 04/08/2005 21:05:14 Vu : 20 318

Note :
9 / 10 - par 2 personnes
9,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (10)
Ajouter un commentaire et/ou une note

Description

ce code permet de verifier l'identité d'une personne se connectant a un annuaire LDAP ( dans mon cas Active directory ) la connexion se fait en anonymous et il est necessaire de creer une page a part avec un formulaire qui pointera sur cette page. en cas de succès d'identification, l'utilisateur est redirigé sur une page, sinon il revient sur la page de Login / mot de passe.
 

Source

  • <?php
  • // informations de connexions
  • $ldap_host = "localhost"; //inserer ici l'addresse du serveur LDAP
  • $base_dn = "DC=GUESSANT,DC=ORG";
  • $user = "cn=".$_POST['user']; // on traite les information recoltées
  • $password = $_POST['pass'];
  • $admin="admin"; // indiquez ici le groupe auquels appartient les admin et les membres. dans mon exemple, j'ai un o=admin et un o=membres.
  • $membres="membres";
  • $connect = ldap_connect($ldap_host) // connexion en anonymous
  • or exit(">>Connexion au serveur LDAP echoué<<");
  • ldap_set_option($connect, LDAP_OPT_PROTOCOL_VERSION, 3); // on passe le LDAP en version 3, necessaire pour travailler avec le AD
  • ldap_set_option($connect, LDAP_OPT_REFERRALS, 0);
  • $read = ldap_search($connect,$base_dn, $user)
  • or exit(">>erreur lors de la recherche<<");
  • $info = ldap_get_entries($connect, $read);
  • if ( preg_match("!".$admin."!",$info[0]["dn"] ) ) // si le user trouvé est admin :
  • {
  • $bind = ldap_bind($connect,$info[0]["dn"],$password);
  • if ( $bind == FALSE ) // si le BIND est FALSE, le mot de passe est erronée
  • // echo( " il est admin mais faux mdp");
  • header("location: auth_ldap.php?result='0'");
  • elseif ( $bind == TRUE ) // on peut ajouter d'autre traitement si l'identification est ok ( ex : $_SESSION['user'] = ... )
  • {
  • header("location: index.php");
  • }
  • }
  • elseif ( preg_match("!".$membres."!",$info[0]["dn"]) ) // si le user trouvé est membres :
  • {
  • $bind = ldap_bind($connect,$info[0]["dn"],$password);
  • if ( $bind == FALSE ) // si le BIND est FALSE, le mot de passe est erronée
  • // echo( " il est membre mais faux mdp");
  • header("location: auth_ldap.php?result='0'");
  • elseif ( $bind == TRUE ) // on peut ajouter d'autre traitement si l'identification est ok ( ex : $_SESSION['user'] = ... )
  • {
  • header("location: index.php");
  • }
  • }
  • else // le user n'a pas pu être trouvé
  • {
  • // echo "nom de user invalide";
  • header("location: auth_ldap.php?result='1'");
  • }
  • ldap_close($connect);
  • ?>
<?php
// informations de connexions

$ldap_host = "localhost";  //inserer ici l'addresse du serveur LDAP
$base_dn = "DC=GUESSANT,DC=ORG";

$user = "cn=".$_POST['user'];  //  on traite les information recoltées 
$password = $_POST['pass']; 

$admin="admin";  // indiquez ici le groupe auquels appartient les admin et les membres. dans mon exemple, j'ai un o=admin et un o=membres.
$membres="membres";

$connect = ldap_connect($ldap_host)  // connexion en anonymous
    or exit(">>Connexion au serveur LDAP echoué<<");
		 
		 
ldap_set_option($connect, LDAP_OPT_PROTOCOL_VERSION, 3);  // on passe le LDAP en version 3, necessaire pour travailler avec le AD
ldap_set_option($connect, LDAP_OPT_REFERRALS, 0);

	 
$read = ldap_search($connect,$base_dn, $user)
     or exit(">>erreur lors de la recherche<<");
$info = ldap_get_entries($connect, $read);

if ( preg_match("!".$admin."!",$info[0]["dn"] ) ) // si le user trouvé est admin :
	{
	$bind = ldap_bind($connect,$info[0]["dn"],$password);
	if ( $bind == FALSE )	// si le BIND est FALSE, le mot de passe est erronée
		// echo( " il est admin mais faux mdp");
		header("location: auth_ldap.php?result='0'");
	elseif ( $bind == TRUE )   // on peut ajouter d'autre traitement si l'identification est ok ( ex : $_SESSION['user'] = ... )
		{
			header("location: index.php");
		}
	} 
elseif ( preg_match("!".$membres."!",$info[0]["dn"]) ) // si le user trouvé est membres :
	{
    $bind = ldap_bind($connect,$info[0]["dn"],$password);
	if ( $bind == FALSE )  // si le BIND est FALSE, le mot de passe est erronée
		// echo( " il est membre mais faux mdp");
		header("location: auth_ldap.php?result='0'");
	
	elseif ( $bind == TRUE )  // on peut ajouter d'autre traitement si l'identification est ok ( ex : $_SESSION['user'] = ... )
		{
			header("location: index.php");
		}
	}
else // le user n'a pas pu être trouvé
{
// echo  "nom de user invalide";
header("location: auth_ldap.php?result='1'");
}


ldap_close($connect);
?> 

Conclusion

pour info , le test s'effectue sur le ldap_bind qui retourne une erreur en cas d'echec. mais comme la redirection est rapide on ne le voit pas.
 

Historique

04 août 2005 21:05:14 :
jai tenu compte de la 1 ere remarque, c'était une erreur de ma part de laisser les echo qui n'ont rien a faire la et qui dans les standards W3C pouvaient géner sur certains navigateur l'utilisation de header(location: xxxx)

Commentaires et avis

signaler à un administrateur
Commentaire de garfield90 le 04/08/2005 18:45:11

commente
echo "Le user est admin"; et echo "Le user est membre";
car la on peut faire du BRUTE FORCE pour trouvé le mdp étant donné que l'on sait que le login existe

sinon le code a l'air correct, pas d'annuaire LDAP sous la main ;)

signaler à un administrateur
Commentaire de glad le 05/08/2005 08:41:58

Salut,

Cool, justement je m'embête avec ça depuis un certain temps. J'arrivais partiellement à l'utiliser mais pas bien. Et là je vois deux ou trois options que je n'utilisais pas !
Merci :-)
Si t'as d'autres trucs avec AD, je suis intéressé.
Bonne continuation.

à ++

signaler à un administrateur
Commentaire de gadou le 08/12/2005 17:49:43

bonjour,
je cherche exactement la meme chose mais en ASP
je ne trouve pas...
quelqu'un peut m'aider.?
merci

signaler à un administrateur
Commentaire de Toto102 le 09/01/2006 12:51:07

salut;
pour l ASP vous pouvez voir le lien suivant:
http://www.rallenhome.com/books/ad2e/code.html
bonne chance

signaler à un administrateur
Commentaire de crashyear le 23/10/2006 16:13:49

Bonjour,

Je viens de tester ce code qui m'a l'air bien... mais moi j'ai un souci, il m'affiche le message suivant >>erreur lors de la recherche<< qui se trouve à la ligne 22.
Comme je n'y connai rien en AD et en LDAP quelqu'un pourrait-il m'aider à comprendre?

Merci

signaler à un administrateur
Commentaire de crashyear le 23/10/2006 17:36:08

c'est bon merci pour toutes ces réponses... lol euh je n'avait juste pas les droits nécessaire j'ai donc vu avec mon admin réseau et voila!!!

signaler à un administrateur
Commentaire de suzye le 15/03/2007 14:10:28

bonjour a vous j'ai un probléme de connection sur l'annuaire ldap avec un login et un password en php quelqu'un pourrait il m'aider et qd je teste ce code j'ai une erreur

signaler à un administrateur
Commentaire de dtraversa83 le 21/03/2007 14:41:23

j'ai moi aussi un pb que je n'arrive pas a résoudre : >>erreur lors de la recherche<<
comment résoudre ce pb ?

signaler à un administrateur
Commentaire de foxmaster le 17/12/2007 15:40:52

Bonjour moi aussi j'ai le meme soucis ça bloque sur erreur de la recherche, j'ai simplifé le code pour avoir uniquement ce ci:
<?php
// informations de connexions
$ldap_host = "localhost";  //inserer ici l'addresse du serveur LDAP
$base_dn = "DC=GUESSANT,DC=ORG";
$user = "cn=".$_POST['user'];  //  on traite les information recoltées
$password = $_POST['pass'];
$admin="admin";  // indiquez ici le groupe auquels appartient les admin et les membres. dans mon exemple, j'ai un o=admin et un o=membres.
$membres="membres";
$connect = ldap_connect($ldap_host)  // connexion en anonymous
    or exit(">>Connexion au serveur LDAP echoué<<");


ldap_set_option($connect, LDAP_OPT_PROTOCOL_VERSION, 3);  // on passe le LDAP en version 3, necessaire pour travailler avec le AD
ldap_set_option($connect, LDAP_OPT_REFERRALS, 0);

$read = ldap_search($connect,$base_dn, $user)
     or exit(">>erreur lors de la recherche<<");
ldap_close($connect);

?>
en mettant mes parametres bien évidemment mais ça me met cete erreur ...

Warning: ldap_search() [function.ldap-search]: Search: Operations error in E:\intranet\eiffagest_interim\Untitled-2.php on line 11
>>erreur lors de la recherche<<

merci pour votre aide

signaler à un administrateur
Commentaire de zobinems le 17/01/2008 17:32:58

c'est normal que ca ne marche pas
Active Directory n'accepte pas les connection en anonyme

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

php Active directory LDAP [ par weedtrompette ] Bonjour &#224; tous,Juste une petite question. J'&#233;tudie actuellement la possibilit&#233; pour une appli web d'acc&#233;der &#224; un annuaire act connexion à Active Directory via php [ par jalal2007 ] Salut tout j'ai un probléme de connextion à AD via PHP. a tous les pro du php [ par vrkill2 ] bonjour a tous qui peux mexpliqué clairement comment utiliser se code svp merci     &lt;?php // Démarage de la session PHP4// Il faut tou Lier Active Directory et Applications internes [ par LaDS ] Bonjour à tous, Je suis stagiaire en informatique. J'ai pour "mission" de lier l'Active Directory aux applications internes. L'entreprise souhaiterai erreur de verif de connexion dans base de donnees [ par vrkill2 ] bonjour a tous jai un souci avec la  verif  de ma page de connexion le message d'erreur hé!!Parse error: parse error in d:\battlecard\site\vos card.ph Lister utilisateur Active Directory [ par rouliendelavegas ] Bonjour,Quelle fonction permet de lister les utilisateur d'un active directory?Merci Creation de compte Active Directory via un page Web [ par karimod ] Bonjour, Je suis actuellement en train de faire un projet sur la mise en place d'un portail captif (pfsense) dans lequel les utilisateurs devront s'au connexion avec login et pasword [ par stanly145 ] je suis vraiment débutent en phpet je vx savoir comment faire pr realiser une connexion avec login et pasword apartir dune base de donné sql "easy php verification du login dans la base [ par elksibi ] Bonsoir,J'ai un probleme avec la redirection header ("location") et la verification du mot de passe dans la base en PHP.D'abord, j'ai un formulaire, q Connexion à une application PHP en en passant par Active Directory [ par anaa21 ] Bonjour à tous,J'ai deux postes:Le premier est un poste client sur lequel j'ai installé Windows XP.Le deuxième post


Nos sponsors

Sondage...

CalendriCode

Octobre 2008
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,312 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.