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 !

AUTHENTIFICATION PAR LDAP


Information sur la source

Catégorie :Divers Niveau : Initié Date de création : 19/01/2004 Vu : 11 955

Note :
7 / 10 - par 3 personnes
7,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

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


Description

cela permet de s'authentifier avec un annuaire ldap !

le resultat trouvé celui ci est retourné vers la fenetre qui avait appelé l'authentification ( c le window.opener. ...)

le mkntpwd c une appli en c que j'utilise pour crypter mes pass car ceux stocké dans mon ldap etait deja crypté par cette appli !

voila en esperant que sa pourra aidé du monde !
 

Source

  • <?
  • 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("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]==$pwd) {
  • //meme pass donc enregistrement dans session du login et du nom
  • $_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='".$_SESSION["libelle"]."'; window.close()</script>";
  • }
  • else {
  • //mauvais pass
  • $_SESSION["login"]="";
  • $_SESSION["libelle"]="";
  • echo "<script language='JavaScript'>window.opener.DessinateurOF.value='".$_SESSION["libelle"]."'; alert('Mauvais pass.'); document.authentification.cours.value='';</script>";
  • }
  • //fermeture connection a ldap
  • ldap_close($ds);
  • }
  • }
  • ?>
  • <html>
  • <head>
  • <title>Authentification</title>
  • </head>
  • <body bgcolor="#ffff99">
  • <br>
  • <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>
  • <div align="center">
  • <form name="authentification" action="<? $PHP_SELF ?>" method="post">
  • <table width="90%" border="1" cellspacing="0" bordercolor="#000000">
  • <tr>
  • <td colspan="2" align="center"><b><font size="+1">Authentification</font></b></td>
  • </tr>
  • <tr>
  • <td>Login :</td>
  • <td><input style="border-style:solid" type="text" name="login" size="16" maxlength="30"></td>
  • </tr>
  • <tr>
  • <td>Pass :</td>
  • <td><input style="border-style:solid" type="password" name="pass" size="16" maxlength="30"></td>
  • </tr>
  • <tr>
  • <td colspan="2" align="center"><input type="hidden" value="true" name="saisieEffectuer">
  • <input type="button" value="Annuler" onclick="window.close()">&nbsp;
  • <input type="button" OnClick="verifierSaisie()" value=" Ok "></td>
  • </tr>
  • </table>
  • <input type='text' style='border:none; background-color:#ffff99' name='cours' value='' size=11 >
  • </form>
  • </div>
  • </body>
  • </html>
<?
  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("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]==$pwd) {
           //meme pass donc enregistrement dans session du login et du nom
           $_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='".$_SESSION["libelle"]."'; window.close()</script>";

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

    }
  }
?>


<html>
<head>
<title>Authentification</title>
</head>
<body bgcolor="#ffff99">
<br>

<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>


<div align="center">
<form name="authentification" action="<? $PHP_SELF ?>" method="post">
<table width="90%" border="1" cellspacing="0" bordercolor="#000000">
  <tr>
    <td colspan="2" align="center"><b><font size="+1">Authentification</font></b></td>
  </tr>
  <tr>
    <td>Login :</td>
    <td><input style="border-style:solid" type="text" name="login" size="16" maxlength="30"></td>
  </tr>
  <tr>
    <td>Pass :</td>
    <td><input style="border-style:solid" type="password" name="pass" size="16" maxlength="30"></td>
  </tr>
  <tr>

    <td colspan="2" align="center"><input type="hidden" value="true" name="saisieEffectuer">
                                   <input type="button" value="Annuler" onclick="window.close()">&nbsp;
                                   <input type="button" OnClick="verifierSaisie()" value="    Ok    "></td>
  </tr>
</table>
<input type='text' style='border:none; background-color:#ffff99' name='cours' value='' size=11 >
</form>
</div>  

</body>
</html>

Commentaires et avis

signaler à un administrateur
Commentaire de marcel_boulette le 25/05/2005 15:54:59

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

signaler à un administrateur
Commentaire de fazora le 26/05/2005 15:06:53

ça ne marche pas !!!

signaler à un administrateur
Commentaire de suzye le 12/03/2007 16:33:36

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.

signaler à un administrateur
Commentaire de fmazoue le 12/03/2007 18:35:08

peut etre a cause de mkntpwd ... enleve le ...
et sinon donne nous plus de précisions sur le pb.

signaler à un administrateur
Commentaire de suzye le 13/03/2007 09:14:44

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.

signaler à un administrateur
Commentaire de suzye le 13/03/2007 09:22:59

echo "<script language='JavaScript'>window.opener.DessinateurOF.value='".$_SESSION["libelle"]."'; window.close()</script>";

que fais exactement cette ligne?

signaler à un administrateur
Commentaire de suzye le 13/03/2007 09:44:20

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

signaler à un administrateur
Commentaire de fmazoue le 13/03/2007 16:50:14

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 ...

signaler à un administrateur
Commentaire de suzye le 13/03/2007 17:22:38

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.

signaler à un administrateur
Commentaire de fmazoue le 13/03/2007 17:33:53

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>
<body bgcolor="#ffff99">
<br>

<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>


<div align="center">
<form name="authentification" action="<? $PHP_SELF ?>" method="post">
<table width="90%" border="1" cellspacing="0" bordercolor="#000000">
<tr>
<td colspan="2" align="center"><b><font size="+1">Authentification</font></b></td>
</tr>
<tr>
<td>Login :</td>
<td><input style="border-style:solid" type="text" name="login" size="16" maxlength="30"></td>
</tr>
<tr>
<td>Pass :</td>
<td><input style="border-style:solid" type="password" name="pass" size="16" maxlength="30"></td>
</tr>
<tr>

<td colspan="2" align="center"><input type="hidden" value="true" name="saisieEffectuer">
<input type="button" value="Annuler" onclick="window.close()">&nbsp;
<input type="button" OnClick="verifierSaisie()" value=" Ok "></td>
</tr>
</table>
<input type='text' style='border:none; background-color:#ffff99' name='cours' value='' size=11 >
</form>
</div>

</body>
</html>

signaler à un administrateur
Commentaire de suzye le 14/03/2007 10:36:42

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

signaler à un administrateur
Commentaire de suzye le 14/03/2007 13:53:33

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é

signaler à un administrateur
Commentaire de fmazoue le 14/03/2007 18:57:51

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 .

signaler à un administrateur
Commentaire de suzye le 17/03/2007 13:35:10

merci je regarderai tout cela et je te dirai quoi c'est bien gentil.

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Septembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
2930     

Consulter la suite du CalendriCode



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,25 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é.