"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

LDAP Passwortabfrage mit PHP

prayerslayer 04.01.2006 - 19:34 865 3
Posts

prayerslayer

Oar. Mh.
Avatar
Registered: Sep 2004
Location: vorm Sucher
Posts: 4073
moin moin.

ich möcht auf einen ldap-server mittels php zugreifen, einen user herauspicken und abfragen ob das eingegebene passwort korrekt ist.

bis zum herauspicken bin ich gekommen, es schaut jetzt so aus:
Code: PHP
<?php
  include 'ldapconfig.php';
  
  $user=$_REQUEST["user"];
  $pw=$_REQUEST["pw"];

  $ldap_link=ldap_connect($ldap_host, $ldap_port);
  $bind=ldap_bind($ldap_link);
  ldap_search($ldap_link, $root_dn, "uid=$user");
  //Jetzt hab ich den user, aber wie frag ich ob sein pw passt??
?>

wies schon im comment steht, ich hab kan plan mit welchen methoden es jetzt weiter geht, bzw. ob ich das ergebnis von ldap_search auf eine variable speichern und die dann wieder einer andern methode (ldap_checkpw oder so) übergeben soll...

tia!
Bearbeitet von prayerslayer am 06.01.2006, 14:15

d3ft0n3

grinder
Avatar
Registered: Apr 2003
Location: Graz
Posts: 748
mein lösungsweg:

Code: PHP
  	
$userid = $_POST['userid'];
$pass = $_POST['password'];
  	
if ($pass == "")
{
  echo ("No Password!<p>You will be redirected in 5 sec.");
  die ("<meta http-equiv='refresh' content='5; URL=./authtest.html'>");
}	
  	
echo "<h1>LDAP Authentification for " . $userid . "</h1><p>";
  	
$ldap_link = ldap_connect($server);
if(!ldap_link)
{
  die ("connection error!");
}
  	
$bind = ldap_bind($ldap_link);
if(!$bind)
{
  die ("bind error!");
}
        
$base_dn = <steht in der angabe>;
$result = ldap_search($ldap_link, $base_dn, "uid=$userid");
$info = ldap_get_entries($ldap_link, $result);
        
if(!$result)
{
  die ("anonymous search failed");
}
if ($info["count"] == 0)
{
  die ("User unknown");
}
if ($info["count"] > 1)
{
  die ("More than one such user - report to administrator");
}
        
$user_dn = $info[0]["dn"];
$bind = @ldap_bind($ldap_link, $user_dn, $pass);
if (!$bind)
{
  die ("bind failed, wrong password!");
}
echo "LDAP Authentification granted!";
        
ldap_close($ldap_link);

den redirect am anfang hab ich, weil er bei mir obskurer weise verbindungen ohne passwort, jedoch nicht mit falschem passwort, zulässt.
ich wäre wirklich dankbar, wenn jemand dieses mysterium lüften könnte ;)

prayerslayer

Oar. Mh.
Avatar
Registered: Sep 2004
Location: vorm Sucher
Posts: 4073
oukeh, danke. des geht :) als solved markieren bitte.

dosen

Here to stay
Avatar
Registered: Feb 2003
Location: Wien
Posts: 5602
Zitat von prayerslayer
oukeh, danke. des geht :) als solved markieren bitte.

edit erster post ;)
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz