Accueil > Forum > > > > Pb d'authentification ldap
Pb d'authentification ldap
lundi 10 mai 2004 à 15:08:01 |
Pb d'authentification ldap

cecillon
|
Salut à tous, Voila, j'ai un gros problème en php. J'essaye de me connecter depuis un serveur apache sous linux à l'annuaire LDAP d'un serveur de domaine windows. J'ai suivi pas mal de tutoriaux sur le net pour pouvoir me connecter mais je n'arrive pas à m'authetifier avec un mot de passe. Apparament, je ne fais pas appel au bon objet. Enfin, j'en sais rien. Voici mon petit code : $server = "ldap://adr_srv_win"; $port = "389"; $chaine = "dc=XXX,dc=XXX,dc=fr"; $login = "cn=administrateur,cn=users,dc=XXX,dc=XXX,dc=fr"; $pass = "XXX"; $login1 = "CN=XXX,OU=XXX,OU=XXX,OU=XXX,DC=XXX,DC=XXX,DC=fr"; $password = "XXX"; echo "Connexion LDAP...<br>"; $ds = ldap_connect($server); if($ds!=0) { $r = ldap_bind($ds,$login,$pass); if($r) { echo "authentifié !!!<br>"; echo "Récupération des entrées : <br>"; $filtre="(|(sn=$personn*)(cn=$personn*)(userPassword=$personn*)(ntpassword=$personn*))"; $restriction = array("cn","sn","mail","userPassword","ntpassword"); $sr = ldap_search($ds,$chaine,"distinguishedName=".$login1.""); $nombre = ldap_count_entries($ds,$sr); print $nombre." enregistrements trouvés<br>"; print("Récupération des entrées...<br>"); $info = ldap_get_entries($ds,$sr); for($i=0;$i<$info["count"];$i++) { echo "nom (sn): ".$info[$i]["sn"][0]."<br>"; echo "Prénom (cn): ".$info[$i]["cn"][0]."<br>"; echo "Password : ".$info[$i]["ntpassword"][0]."<br>";//marche pas !!!!! } else { echo "echec authentification"; } echo "Déconnexion<br>"; ldap_close($ds); } le problème est que pour identifier une personne, il faut login et mot de passe. En l'occurence, je suis incapable de retrouver le mot de passe. Si quelqu'un sait comment faire... Merci d'avance Sig sigfridcecillon@cira-concept.fr
|
|
mardi 11 mai 2004 à 09:04:25 |
Re : Pb d'authentification ldap

ADPro22
|
Pour identifier une personne, la solution simple est la suivante : se connecter en admin pour trouver le dn correspondant au login de l'utilisateur, puis faire un bind avec son dn et son mot de passe.
sinon, pour les mots de passe ldap, ils sont stockés sur 2 champs : lmPassword et ntPassword
Cordialement,
ADPro22
|
|
mardi 11 mai 2004 à 10:46:08 |
Re : Pb d'authentification ldap

cecillon
|
j'essaye de rentrer les champs lmPassword et ntPassword mais dans les deux cas, je n'arrive pas à accèder aux mots de passe.
Est ce qu'il y aurait pas quelque chose à faire sur le serveur de domaine windows ou sur Linux pour pouvoir y accèder ?
Merci pour tout,
Sig sigfridcecillon@cira-concept.fr
|
|
vendredi 14 mai 2004 à 11:36:33 |
Re : Pb d'authentification ldap

Fantomas33
|
Bonjour, voici une page de login que j'ai fais il y a un petit moment avec identification ldap, je pense qu'elle peut t'aider. Bon courage. require 'globals.php'; $error_login = false; $titre = $string_lang['CLINET_TITLE'][$lang] ;
if( !isset($PHP_AUTH_USER) ) { /* Aucune session n'est ouverte : on affiche la demande d'autentification */ header( "WWW-Authenticate: Basic realm=\"$titre\""); header( "HTTP/1.0 401 Unauthorized"); echo "<p class=\"error\" style=\"color : red;font-weight : bold;\">\n"; echo "Accès refusé suite à abandon \n"; echo "<br />\n"; echo "<a href=$PHP_SELF>Cliquez ici pour vous identifier de nouveau</a>"; echo "</p>\n"; exit; } else { /* aucune session ouverte on vérifie les paramètres de connexion envoyés */ //require 'tools_ldap.php'; /* ne marche pas espace, ligne vide et header */
//Variable conditionnant l'identification' // $droit_user null (user+password incorrect ) => se reidentifier // 1 (pas de password ou // password et pas bon groupe )=> visu seulement // 2 (password et bon groupe ) => maj
//Connexion au serveur LDAP // $ldapconn = ldap_con($LDAP) ; // si tools_ldap est ok mais non ! //Connexion au serveur LDAP $ldapconn = ldap_connect( $LDAP['host'], $LDAP['port'] ) or die( "Impossible de se connecter au serveur LDAP {$LDAP['host']}" );
if ($ldapconn) { if ($PHP_AUTH_PW == NULL) { // password null donc connexion anonyme $droit_user = 1 ; $ok = TRUE ; } else { // on determine la liste des ou dans laquelle rechercher les connexions //$ldap_ou = ldap_list_unit($LDAP, $ldapconn) ; // si tools_ldap est ok mais non ! ////////////////////////////////////////// /// pas génial, ici copie du corps de la fonction ldap_list_unit de tools_ldap /// /// RECHERCHE de tous les 'ou' de l'annuaire, stockés dans $ldap_ou[] /// $ldap_incorrect[] = "ou=RESEAU" ; $ldap_incorrect[] = "ou=Postesdetravail" ; $ldap_incorrect[] = "ou=SLPDEFAULT" ; $ldap_incorrect[] = "ou=WebAccess" ; $ldap_incorrect[] = "ou=Software" ; $ldap_incorrect[] = "ou=APPLICATIONS" ;
if ($ldapconn) { //Connexion au serveur LDAP anonyme $ldapbind = @ldap_bind($ldapconn); // le @ pour masquer les messages retour if ($ldapbind ) { // bind reussi, reste à connaitre TOUS LES OU // on reinitialise le tableau existant unset($ldap_ou) ; // et on rajoute la racine, cas des users admins ldap $ldap_ou[] = $LDAP['racine'] ; $filtre = "objectclass=organizationalUnit" ; $colonnes = array( "ou") ; $cn = $LDAP['racine'] ; $ldapsearch = ldap_search($ldapconn, $cn, $filtre, $colonnes ); // if ( $ldapsearch == FALSE ) { echo "Ldap search incorrect" ; }
$info = ldap_get_entries($ldapconn, $ldapsearch); for ($i=0;$i<$info["count"];$i++) { $atraiter = TRUE ; // il faut éliminer certains ou foreach ( $ldap_incorrect as $ou ) { if ( substr_count($info[$i]["dn"],$ou) != 0 ) { $atraiter = FALSE ; break ; } } if ( $atraiter ) { $ldap_ou[] = $info[$i]["dn"]; } } // fin boucle analyse des ou } // fin ldapbind true } // fin if ldapconn
//////////////////////////////////////// //Connexion au serveur LDAP non anonyme puisque user et password connu // on teste la connexion user sur chaque ou, on sort au premier réussi $ok = FALSE ; foreach ( $ldap_ou as $ou ) { $cn = "cn=".$PHP_AUTH_USER.",".$ou ; //$racine = $ou.",o=GDB" ; pour un search tous agents $ldapbind = @ldap_bind($ldapconn, $cn ,$PHP_AUTH_PW); // le @ pour masquer les messages retour if ($ldapbind ) { //echo "connexion reussie sur ".$cn."<br>" ; $ok = TRUE ; break ; } }
if ( !$ok ) { $droit_user = NULL ; // il faut se reidentifier } else { // bind reussi, reste à connaitre les groupes // utiliser racine tous agents ou cn un agent $filtre = "objectclass=person" ; $colonnes = array( "sn", "dn","groupmembership") ; $ldapsearch = ldap_search($ldapconn, $cn, $filtre, $colonnes ); $info = ldap_get_entries($ldapconn, $ldapsearch); // print_r($REMOTE_ADDR) ; pour adresse ip $droit_user = 1 ; for ($i=0;$i<$info[0]["groupmembership"]["count"];$i++) { //$ldap_habilite groupe habilite cf globals if ( $info[0]["groupmembership"][$i] == $LDAP['habilite'] ) { $droit_user = 2 ; break ; } } } // fin else ok true } // fin else password not null // on ferme la connexion au serveur LDAP // ldap_disconnect($ldapconn); // si tools_ldap est ok mais non ! ldap_close($ldapconn); } // fin if ldapconn
if ($ok) { session_start(); $_SESSION['member_id'] = $PHP_AUTH_USER ; $_SESSION['droit_user'] = $droit_user; header("Location:$back"); } else { $error_login = true; // // $admin = $ADMIN_CLINET ; // $subject = rawurlencode(sprintf("[CLINET] %s", $string_lang['SESSION_GET_NEW_ACCOUNT'][$lang])); // $body = rawurlencode(sprintf($string_lang['SESSION_GET_NEW_ACCOUNT_MSG'][$lang])); // $mailto = sprintf("mailto:%s?subject=%s&body=%s", $admin['email'], $subject, $body); // $ligne = sprintf("%s<a href=\"%s\">%s</a> (%s).\n", $string_lang['SESSION_GET_NEW_ACCOUNT_HOW'][$lang], $mailto, ($admin['prénom'] . " " . $admin['nom']), $admin['login']);
header( "WWW-Authenticate: Basic realm=\"$titre\""); header( "HTTP/1.0 401 Unauthorized"); echo "<p class=\"error\" style=\"color : red;font-weight : bold;\">\n" .$string_lang['SESSION_INCORRECT_LOGIN'][$lang] ."\n"."<br />\n" .$ligne."<br />\n" ."<a href=$PHP_SELF>Cliquez ici pour vous identifier de nouveau</a>" ."</p>\n"; exit; } }
|
|
|
vendredi 1 juillet 2005 à 14:21:57 |
Re : Pb d'authentification ldap

mole
|
Bonjour à tous,
Le sujet date mais mon script pourra peut-être aider quelqu'un... En plus, de vérifier l'authentification du l'utilisateur, je teste s'il fait parti d'un groupe LDAP autorisé :
<?php // Paramètres LDAP $dn = "dc=mondomaine, dc=fr"; $ldap_ous=array("ou=Administratreurs, ","ou=Exploitants, "); $ldap_domaine="mondomaine.fr"; $ldaphost= "serveur-ldap".$ldap_domaine; $ldapport= 389;
// Compte de connexion au Ldap $ldap_admin="compte_admin"; $ldap_pwd="pwd_admin";
//Groupe des utilisateurs autorisés $ldapgroup ="CN=Test PHP,OU=Groupes,DC=mondomaine,DC=fr";
// Connexion au Ldap $ldapconn = ldap_connect( $ldaphost, $ldapport ) or die( "Impossible de se connecter au serveur LDAP {$ldaphost}" ); $ldapbind = ldap_bind($ldapconn,$ldap_admin,$ldap_pwd) or die( "Authentification au serveur LDAP {$ldaphost} échouée" );
// Boucle d'authentification $auth=false; // Test du contenu du formulaire de login : bien vérifier si le champ pass n'est pas vide if (isset($_POST['user']) && isset($_POST['pass']) && !empty($_POST['pass'])) { foreach($ldap_ous as $ou){ // Parcours de toute les OUs pour ... $sr=@ldap_search($ldapconn, $ou.$dn, "sAMAccountName=".$_POST['user']); // Rechercher l'utilisateur if($sr!= false){ $info = @ldap_get_entries($ldapconn, $sr); // Obtenir ses infos if($info['count']==1){ foreach($info[0]['memberof'] as $group){ // Parcourir ses groupes if($group==$ldapgroup){ // Si l'utilisateur fait parti du groupe autorisé, alors on tente une connexion Ldap avec son Compte $auth=@ldap_bind($ldapconn,$_POST['user']."@".$ldap_domaine,$_POST['pass']); if($auth==true) break; } } if ($auth==true) // Si authentification OK : envoi vers la page Web header("location: site.html"); } } } if($auth==false) header("location: auth_ldap.html"); // si authentification KO : retour au Login }else { echo 'Veuillez entrer un compte et mot de passe.'; } ?>
|
|
Cette discussion est classée dans : echo, cn, dc, xxx, ldap
Répondre à ce message
Sujets en rapport avec ce message
ldapsearch avec php [ par harbaouiawatef ]
salut ,j'ai un script php son but est d'executer la commande ldapsearch alors monproblème est le suivant:lorsque j'execute mon script il m'affiche tou
php et ldap [ par skoukni_brahim ]
Bonjour, j'essaiye d'exécuter le script suivant "Test LDAP n° 1"; echo "Connexion ..."; $ds = ldap_connect ("localhost"); echo "Le résultat est ".$ds.
ldap_search jamais de resultat [ par guth42 ]
Bonjour, je suis pas mal ennuyé, ça va faire 3j que je me bat sans résultats, c'est pour cela que je fait appele a de bonnes ames... je suis en train
[prb] : ajout dans LDAP [ par Renus02 ]
Bonjour, j'ai le probleme suivant, j'utilise l'annuair LDAP (openLdap) et je fait la connexion avec les librairie DB de Pear, le prb c'est que la con
Recherche ldap [ par Assyris ]
Bonjour, voila mon problème : L'application marchais très bien jeudi dans la journée, je l'ai testée et tout, mais en revenant au boulot lundi, j'ai
conf ldap [ par haifoufa ]
j'ai un problème qui me gène depuis deux jours et je ne trouve pas de solutionje suis inspétrer de site commentcamarche mais sans vain.j'ai modifié le
probléme [ par termifr ]
$pagedemande=$_GET['page'];$nombreactu='5';mysql_connect("xxx", "xxx", "xxx");mysql_select_db("xxx");$retour = mysql_query("SELECT COUNT(*) AS nbre_en
autre probléme lecture mysql [ par termifr ]
$pagedemande=$_GET['page'];$nombreactu='5';mysql_connect("xxx", "xxx", "xxx");mysql_select_db("db192993600");$retour = mysql_query("SELECT COUNT(*) AS
Problème avec ldap_search [ par Xmemy ]
Bonjour à tous, J'ai comme qui dirais un petit problème avec la fonction ldap_search... Je n'arrive pas à faire la recherche. Voici mon code : <?ph
recherche sur un serveur ldap : probleme [ par bullrot1985 ]
Bonjour a tous.J'ai un soucis au niveau de ma requete php sur mon serveur ldap.Je vous poste une photo de mon active directory et de mon script...j'ai
Livres en rapport
|
Derniers Blogs
SLIDE & DéMO TECHDAYS 2012 - FAST & FURIOUS XAML APPSSLIDE & DéMO TECHDAYS 2012 - FAST & FURIOUS XAML APPS par Vko
Retrouvez les slides et les démo de ma session Fast & Furious XAML Apps. A ceux qui se posent la question : "est-ce que le code de la DataGrid est disponible?", je vous répondrais "pas encore". Je vais mettre en place un projet codeplex pour part...
Cliquez pour lire la suite de l'article par Vko XNA IS DEAD!XNA IS DEAD! par richardc
Depuis la semaine dernière (et grâce aux TechDays 2012), je me penche activement sur la nouvelle version de Windows, aka Windows 8. Vous me direz, il était temps puisque la première preview date de Septembre dernier.
OK. Remarquez, on n'en est qu'aux...
Cliquez pour lire la suite de l'article par richardc TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 !TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 ! par ROMELARD Fabrice
Speakers: Fabrice Meillon et Stanislas Quastana Cette session est basée entièrement sur celle donnée lors de la BUILD cet hiver. Il n'y a pas d'ajout d'information en rapport avec cet évènement passé. Windows 8 Server sera intégralem...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice [HTML5] AUTOUR DU W3C : NOUVEAUX STANDARDS ET WEB MOBILE (LILLE)[HTML5] AUTOUR DU W3C : NOUVEAUX STANDARDS ET WEB MOBILE (LILLE) par Gio
Je m'y prends un peu tard je sais, mais bon je suis développeur web et donc hyper fainéant ! Toujours dans le cadre des technologies émergentes, ici HTML5, parce qu'on aime HTML5 chez Wyg , nous seront présent, le vieux ( Aurélien V.) et moi, pour pr...
Cliquez pour lire la suite de l'article par Gio
Forum
CHAMPS TIMECHAMPS TIME par vargas
Cliquez pour lire la suite par vargas
Logiciels
DocTranslate (V3.1.0.0)DOCTRANSLATE (V3.1.0.0)DocTranslate est un traducteur de document Microsoft Word, PowerPoint et Excel. Il permet d'autom... Cliquez pour télécharger DocTranslate Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System
|