Bonjours à tous.
Pour commencer je vais exposé mon script
Ce script est un simple formulaire HTMl pour récupérer un login et un mot de passe
Code HTML :
<html>
<head>
<title>Authentification</title>
</head>
<body>
<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 $PHP_SELF ?>" method="post">
<table width="90%" border="0" cellspacing="0" >
<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()">
<input type="button" OnClick="verifierSaisie()" value="Ok"></td>
</tr>
</table>
<input type='text' style='border:none; ' name='cours' value='' size=11 >
</form>
</div>
</body>
</html>
Ce script(le principal) est celui qui permet de se connecter à un LDAP. Mais j'ai des problèmes.
Code PHP :
<?php
if($saisieEffectuer) {
// informations de connexions
$ldaphost = "ldap://XXX.XXX.XXX.XX"; //inserer ici l'addresse du serveur LDAP
$ldapBaseDN = "SN=XXXX,SN=XX,SN=XXXX,DC=XXXX,DC=XXX,DC=XX";
$ldapport = 389; // Optional.
// informations users tirées du formulaire HTML
$users = $_POST['login'];
$passs = $_POST['pass'];
// Conversion du mot de pass en SSHA
mt_srand((double)microtime()*1000000);
$salt = pack("CCCCCCCC", mt_rand(), mt_rand(), mt_rand(), mt_rand(), mt_rand(), mt_rand(), mt_rand(), mt_rand());
$userPass = "{SSHA}" . base64_encode(pack("H*", sha1($passs . $salt)) . $salt);
echo $userPass . "\n";
echo "<h3>Recherche dans LDAP</h3>";
// Connexion au ldap
$ldapconn = ldap_connect ($ldaphost);
// Si connexion fonctionne
if ($ldapconn)
{
//Passage en version 3 du ldap
ldap_set_option ($ldapconn, LDAP_OPT_PROTOCOL_VERSION, 3);
// Connexion anonyme
$ldapbind = ldap_bind ($ldapconn);
// J'aimerais remplacer une connexion anonyme par une connexion identifié. NE FONCTIONNE PAS :(
// $ldapbind = ldap_bind ($ldapconn, $users, $hash);
// Fonction de recherche users et mot de passe si existant
$sr = ldap_search ($ldapconn,$ldapBaseDN , "uid=".$users);
$sr2 = ldap_search ($ldapconn,$ldapBaseDN , "userPassword=".$passs);
$info = ldap_get_entries ($ldapconn, $sr);
$info2 = ldap_get_entries ($ldapconn, $sr2);
echo "Nombre de personnes trouvées : ".$info ["count"]."<p>";
echo "Mot de passe trouvé : ".$info2 ["count"]."<p>";
// Affiche les informations trouvées
for ($i=0; $i < $info ["count"]; $i++)
{
echo "dn : ". $info[$i]["dn"] ."<br>";
echo "cn : ". $info[$i]["cn"][0] ."<br>";
echo "sn : ". $info[$i]["sn"][0] ."<p>";
}
// Affiche si le mot de passe est bon...
for ($i=0; $i < $info2 ["count"]; $i++)
{
echo "dn : ". $info2[$i]["dn"] ."<br>";
echo "cn : ". $info2[$i]["cn"][0] ."<br>";
echo "sn : ". $info2[$i]["sn"][0] ."<p>";
}
}
echo "Fermeture de la connexion";
ldap_close($ldapconn);
}
?>
Ceci est le message que j'ai en retour.
Code :
{SSHA}DYXXXX.......
Recherche dans LDAP
Nombre de personnes trouvées : 1
Mot de passe trouvé : 0
dn : uidNumber=XXXXX,sn=XXX,sn=XX,sn=XX,dc=XXX,dc=XXX,dc=XX
cn : XXXX YYY
sn : XXXX
Fermeture de la connexion
Maintenant ma/mes questions.
Je cherche donc à me connecter à un LDAP. En anonyme ca marche très bien. Mais dès que je tente avec un mot de passe crypté en SSHA, la ca ne marche plus. Problématique. J'en ai besoin. Suite à une identification réussit, je lancerais différentes démarches qui ne sont pas encore implantés. Chaque chose en son temps.
Après pas mal de recherches, mon problème viens du Mot de passe. Que je n'arrive hélas pas à résoudre. Je fais donc appel à vos connaissances, dans l'espoir d'obtenir une aide suffisante pour résoudre ce souci très pénible pour moi.
Pour information, j'ai lu pas mal de documentation, c'est d'ailleurs grâce à ca que j'ai pu pondre ce script. J'ai utilisé divers forums. Et même celui la. J'ai vu un poste similaire, mais pas de solution. C'est une sorte de relance. Apparemment je ne suis pas le seul à ne pas comprendre ce genre de problème.
Cordialement dans l'espoir qu'on trouve une solution.
Merci :)