AUTHENTIFICATION PAR LDAP

marcel_boulette Messages postés 21 Date d'inscription lundi 14 février 2005 Statut Membre Dernière intervention 26 septembre 2005 - 25 mai 2005 à 15:54
cs_paillon Messages postés 4 Date d'inscription dimanche 11 avril 2010 Statut Membre Dernière intervention 3 juin 2013 - 30 mai 2013 à 14:11
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/19627-authentification-par-ldap

cs_paillon Messages postés 4 Date d'inscription dimanche 11 avril 2010 Statut Membre Dernière intervention 3 juin 2013
30 mai 2013 à 14:11
Bonjour a Tous

ça fait un moment que je me bats aces lpad mais je susi toujours en flou , pouvez vous corriger mon code SVP , c'est une page authentification en php par lpad pour les utilisateurs ( pas super-utilisateur )

Merci d'avance

<?php
$server = "192.168.85.128";
$port = "389";

$login = 'toto';
$pass = 'toto';

$con = @ldap_connect($server) or die('Impossible de se connecter au serveur LDAP.');



if (@ldap_bind($con)) {

$sr = @ldap_search ($con,'ou=blibli,dc=blabla,dc=fr', 'uid='.$login);
$info = @ldap_get_entries($con, $sr);


if ($info['count'] == 0) {

echo 'compte inexistant !!';
}
else {

if (@ldap_bind($con,$info[0]['dn'],$pass)) {
echo 'authentifi‚ !!';
}
else {
echo 'saisie incorrecte !!';
}
}
}
else {
echo 'connexion LDAP impossible !';
}
ldap_close($con);
}



?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">

<head><title>

AUTHENTIFICATION

</title></head>






<form action="check_2.php" method="post">
<center>


Bienvenue chez Atos

<form action="auth.php">




<table width=\"300\" border=\"0\" align=\"center\" cellpadding=\"8\" cellspacing=\"1\" bgcolor=\"#CCCCCC\">
----

<center> Login </center>,
<center> </center>,

----

<center> Password </center>,
<center> </center>


</form>
</table>
</center>

</html>
mehdi7604 Messages postés 118 Date d'inscription jeudi 11 mai 2006 Statut Membre Dernière intervention 6 mars 2015
31 oct. 2011 à 03:00
Tu peux remplacer le programme exécutable avec une fonction de cryptage;
cs_suzye Messages postés 15 Date d'inscription lundi 12 mars 2007 Statut Membre Dernière intervention 15 mars 2007
17 mars 2007 à 13:35
merci je regarderai tout cela et je te dirai quoi c'est bien gentil.
fmazoue Messages postés 335 Date d'inscription vendredi 14 février 2003 Statut Membre Dernière intervention 1 septembre 2015 1
14 mars 2007 à 18:57
pour moi libellé sa devais etre la fonction de la personne je pense.

et pour le ldap_search($ds,"dc=entreprise, dc=fr","uid=".$login.""); c normal : je recherche ce login . Si il le trouve pas c que le gars existe pas sinon il me renvoie ses infos et du coup je peux comparer le pass .
cs_suzye Messages postés 15 Date d'inscription lundi 12 mars 2007 Statut Membre Dernière intervention 15 mars 2007
14 mars 2007 à 13:53
que représente ceci $_SESSION["libelle"]="";exactement pour ton annuaire "libelle" c'est quoi exactement et $sr=ldap_search($ds,"dc=entreprise, dc=fr","uid=".$login.""); pourquoi mettre ceci :","uid=".$login.""); alors que c'est pour chercher le login et le password.je sais que je te dérange , je suis désolé
cs_suzye Messages postés 15 Date d'inscription lundi 12 mars 2007 Statut Membre Dernière intervention 15 mars 2007
14 mars 2007 à 10:36
merci pour le code je teste cela tout suite et je te dirai quoi c'est bien genti de prendre ton temps pour me répondre je n'ai pas vu hier car j'ai eu probléme de connexion.merci
fmazoue Messages postés 335 Date d'inscription vendredi 14 février 2003 Statut Membre Dernière intervention 1 septembre 2015 1
13 mars 2007 à 17:33
J'ai pas verifier mais un truc comme çà si ton annuaire a la meme structure que le mien sa devrais le faire : <?
session_start();

if($saisieEffectuer) {

//connection a ldap
$ds=ldap_connect("200.200.4.192");
if ($ds) {

$r=ldap_bind($ds);
//recherche
$sr=ldap_search($ds,"dc=entreprise, dc=fr","uid=".$login."");
$info = ldap_get_entries($ds, $sr);
//comparaison du pass dans ldap et celui saisi+crypté
if($info[0]["ntpassword"][0]==$pass) {
//meme pass donc enregistrement dans session du login et du nom
$_SESSION["login"]=$login;
$_SESSION["libelle"]=$info[0]["cn"][0];


echo "<script language='JavaScript'>alert('OK.'); document.authentification.cours.value='".$_SESSION["libelle"]."';</script>";

}
else {
//mauvais pass
$_SESSION["login"]="";
$_SESSION["libelle"]="";
echo "<script language='JavaScript'>alert('Mauvais pass.'); document.authentification.cours.value='';</script>";
}
//fermeture connection a ldap
ldap_close($ds);

}
}
?>


<html>
<head>
<title>Authentification</title>
</head>




<script language="Javascript">

function verifierSaisie() {
if(document.authentification.login.value=="") {
alert("Login non saisi.");
}
else {
if(document.authentification.pass.value=="") {
alert("Pass non saisi");
}
else {
document.authentification.cours.value="en cours...";
document.authentification.submit();
}
}
}


</script>




<form name="authentification" action="<? $PHP_SELF ?>" method="post">
Authentification,

----

Login :,
,

----

Pass :,
,

----



</form>




</html>
cs_suzye Messages postés 15 Date d'inscription lundi 12 mars 2007 Statut Membre Dernière intervention 15 mars 2007
13 mars 2007 à 17:22
merci alors je devrais creer 2 fenêtre (windows et windows.opener)

plus simple est ce que tu n'as pas un script qui me permet de me logger sur le serveur ldap avec un formulaire qui me demande login et password et en remplissant ses 2champs que je sois logger sans ttes ses fenêtres (celle qui appelle et fenêtre d'authentification) juste un truc pour se logger qd tu as déja tes users dans ton annuaire merci je galére grave pour cela et sans trouver je n'avance pas en stage et c'est grave merci si tu peux m'aider.
fmazoue Messages postés 335 Date d'inscription vendredi 14 février 2003 Statut Membre Dernière intervention 1 septembre 2015 1
13 mars 2007 à 16:50
window sa doit etre ta fenetre d'authentification . et window.opener sa doit etre celui qui appele ta fenetre d'authentification. Donc en fait window.opener.DessinateurOF.value= permet d'afficher sur la fenetre qui demande l'authentification le resultat de l'authentification (le nom de la personne authentifiée .)

si tu n'as pas l'outil mkntpwd supprime la ligne qui l'utilise car sa pourrais poser des pb ...

ensuite je conanis pas ton schema de ton annuaire ldap mais est ce que les mot de passe de tes utilisateur sont bien rangé dans ntpassword ? si oui c ok si non eh bien il te renvoie peut etre vide du coup si tu n'as pas non plus l'outil mkntpwd alors celui aussi te renvoi vide et donc dans le test if($info[0]["ntpassword"][0]==$pwd) il peut penser que vide == vide ...

Pour le reste c'est vraiment très loin et sa fait longtemps que j'ai pas touché a ldap et au php donc je sais pas si je peut trop t'aider ...
cs_suzye Messages postés 15 Date d'inscription lundi 12 mars 2007 Statut Membre Dernière intervention 15 mars 2007
13 mars 2007 à 09:44
le probléme viens aussi de cette récupération:

window.opener.DessinateurOF.value='".$_SESSION["libelle"]."'; window.close()
quand je ne met pas test à la place de ".$_SESSION["libelle"]." j'ai toute cette ligne qui s'affiche et tout le reste du code même quand je l'ai met en commentaire .merci
cs_suzye Messages postés 15 Date d'inscription lundi 12 mars 2007 Statut Membre Dernière intervention 15 mars 2007
13 mars 2007 à 09:22
echo "<script language='JavaScript'>window.opener.DessinateurOF.value='".$_SESSION["libelle"]."'; window.close()</script>";

que fais exactement cette ligne?
cs_suzye Messages postés 15 Date d'inscription lundi 12 mars 2007 Statut Membre Dernière intervention 15 mars 2007
13 mars 2007 à 09:14
merci de me répondre c'est bien genti je dois pouvoir me logger sur un serveur ldap à l'aide d'un login/password en langage php et avec ton code je n'y arrive pas voilà ce que j'ai modifier

<?
session_start();

if($saisieEffectuer) {

//recuperation du pass crypter . on fait un rtrim pour supprimer les espace a la fin.
$pwd=rtrim(shell_exec("mkntpwd.exe -N ".$pass.""));

//connection a ldap
$ds=ldap_connect("dcuxp");
if ($ds) {

$r=ldap_bind($ds);
//recherche
$sr=ldap_search($ds,"dc=ipal, dc=be","uid=".$login."");
//$sr=ldap_search($ds,"ou=People,dc=ipal,dc=be", "sn=h*");
$info = ldap_get_entries($ds, $sr);
//comparaison du pass dans ldap et celui saisi+crypté
if($info[0]["ntpassword"][0]==$pwd)
{
//meme pass donc enregistrement dans session du login et du nom
//$preLogin="cn=admin,dc=ipal,dc=be";
//$_SESSION["login"]=$preLogin.$login;
$_SESSION["login"]=$login;
$_SESSION["libelle"]=$info[0]["cn"][0];

//pour quitter fenetre d'authentification et inscrire dans champ dessinateur le nom du dessinateur
echo "<script language='JavaScript'>window.opener.DessinateurOF.value='test'; window.close()</script>";
}
else
{
//mauvais pass
$_SESSION["login"]="";
$_SESSION["libelle"]="";
echo "<script language='JavaScript'>window.opener.DessinateurOF.value='test2; alert('Mauvais pass.'); document.authentification.cours.value='';</script>";
}
//fermeture connection a ldap
ldap_close($ds);

}
}
?>

j'ai été obligé de mettre test et test2 parceque qd je ne faisais pas ça j'avais ses 2 echo qui s'affichais même qd je mettais ses 2ligne en commentaire elles s'affichaient merci de m'aider je galére grave.
fmazoue Messages postés 335 Date d'inscription vendredi 14 février 2003 Statut Membre Dernière intervention 1 septembre 2015 1
12 mars 2007 à 18:35
peut etre a cause de mkntpwd ... enleve le ...
et sinon donne nous plus de précisions sur le pb.
cs_suzye Messages postés 15 Date d'inscription lundi 12 mars 2007 Statut Membre Dernière intervention 15 mars 2007
12 mars 2007 à 16:33
bonjour à tous

j'ai tester cette source ça ne fonctionne pas(peut-être je l'ai mal fais si vous savez comment le faire faite moi signe) quelqu'un pourrait-il m'aider car je dois me logger sur un annuaire ldap à l'aide d'un login /password en langage php sur un intranet mais je n'arrive pas merci de m'aider car je galére grave.
fazora Messages postés 1 Date d'inscription mardi 10 mai 2005 Statut Membre Dernière intervention 26 mai 2005
26 mai 2005 à 15:06
ça ne marche pas !!!
marcel_boulette Messages postés 21 Date d'inscription lundi 14 février 2005 Statut Membre Dernière intervention 26 septembre 2005
25 mai 2005 à 15:54
Salut,
Je viens d'essayer cette source pour les besoins d'un intranet sécurisé par LDAP. Mais apparament ça ne fonctionne pas.
De plus, sans compiler la source du programme mkntpass.exe, il n'y a aucun moyen de le récupèrer.
Pourrais tu t'assurer que la source marche au moins chez toi.

Merci

Louis