Authentification par ldap

Soyez le premier à donner votre avis sur cette source.

Snippet vu 19 765 fois - Téléchargée 25 fois

Contenu du snippet

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 / Exemple :


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

A voir également

Ajouter un commentaire

Commentaires

Messages postés
4
Date d'inscription
dimanche 11 avril 2010
Statut
Membre
Dernière intervention
3 juin 2013

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>
Messages postés
118
Date d'inscription
jeudi 11 mai 2006
Statut
Membre
Dernière intervention
6 mars 2015

Tu peux remplacer le programme exécutable avec une fonction de cryptage;
Messages postés
15
Date d'inscription
lundi 12 mars 2007
Statut
Membre
Dernière intervention
15 mars 2007

merci je regarderai tout cela et je te dirai quoi c'est bien gentil.
Messages postés
335
Date d'inscription
vendredi 14 février 2003
Statut
Membre
Dernière intervention
1 septembre 2015
1
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 .
Messages postés
15
Date d'inscription
lundi 12 mars 2007
Statut
Membre
Dernière intervention
15 mars 2007

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é
Afficher les 16 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.