Hallo,
Ich habe hier im Forum ganze 5 Einträge gefunden,die sich mit LDAP beschäftigen. Nun gut, ich habe das Problem, das mein Anmeldeskript irgendwo einen Fehler hat. Das Skript funktioniert nach folgendem Schema:
1. Name und Passwort eingeben im Formular und Submit
2. Übergbe an das php-Skript, das die Verbindung zum LDAP herstellt und erst mal anonym anmeldet.
3. Abfrage nach dem Benuternamen aus der Anmeldemaske, um den vollen Eintrag aus dem LDAP zu bekommen
4. unbind und disconnect
5. Connect zum LDAP wieder
6. bind versuchen mit Benutzernamen und Passwort, was eingegeben wurde
7. Rückgabe sollte sein, wenn die Authentifizierung erfolgreich ist, also das Passwort zu dem Benutzernamen passt, Weiterleitung, ansonsten Fehler
Leider hat das Skript eine Macke, wenn ich nichts eingebe, also die Eingabefelder leer lasse, kommt folgende Fehlermeldung:
Quellcode:
Der erste Error ist auch verständlich, weil nichts drin steht, aber was mir Sorgen macht, dass er sagt, "Verbindung erfolgreich!° Das dürfte nur sein, wenn Benutzer und Passwort erfolgreich gegen das LDAP authentifiziert sind.
Wenn ich Benuternamen richtig eingebe und Passwort leer lasse dann kommt dies:
Das ist ja noch schlimmer, das es reicht, wenn ich einen beliebigen USernamen eingebe und er erfolgreich einloggt ohne Passwort
Wenn ich Benutzernamen eingebe und Passwort falsch eingebe dann das:
Das ist soweit ja ok, wenn username und passwort nicht zueinander passen, soll die Verbindung ja auch abgelehnt werden.
Hier mein PHP Code für das obige Problem:
PHP-Quellcode:
Ich habe hier im Forum ganze 5 Einträge gefunden,die sich mit LDAP beschäftigen. Nun gut, ich habe das Problem, das mein Anmeldeskript irgendwo einen Fehler hat. Das Skript funktioniert nach folgendem Schema:
1. Name und Passwort eingeben im Formular und Submit
2. Übergbe an das php-Skript, das die Verbindung zum LDAP herstellt und erst mal anonym anmeldet.
3. Abfrage nach dem Benuternamen aus der Anmeldemaske, um den vollen Eintrag aus dem LDAP zu bekommen
4. unbind und disconnect
5. Connect zum LDAP wieder
6. bind versuchen mit Benutzernamen und Passwort, was eingegeben wurde
7. Rückgabe sollte sein, wenn die Authentifizierung erfolgreich ist, also das Passwort zu dem Benutzernamen passt, Weiterleitung, ansonsten Fehler
Leider hat das Skript eine Macke, wenn ich nichts eingebe, also die Eingabefelder leer lasse, kommt folgende Fehlermeldung:
Quellcode:
Code:
Passwort leerConnect hergestellt!
Anonyme Bindung hergestellt!
Warning: ldap_search(): Search: Constraint violation in c:\programme\apache group\apache\htdocs\php_test\ldap_connection.php on line 27
Warning: ldap_get_entries(): supplied argument is not a valid ldap result resource in c:\programme\apache group\apache\htdocs\php_test\ldap_connection.php on line 33
Erfolgreiches abbinden der annonymen Verbindung
Verbindung aufnehmen zum Authentifizieren mit Namen und Passwort
Verbindung erfolgreich!
Der erste Error ist auch verständlich, weil nichts drin steht, aber was mir Sorgen macht, dass er sagt, "Verbindung erfolgreich!° Das dürfte nur sein, wenn Benutzer und Passwort erfolgreich gegen das LDAP authentifiziert sind.
Wenn ich Benuternamen richtig eingebe und Passwort leer lasse dann kommt dies:
Code:
Passwort leerConnect hergestellt!
Anonyme Bindung hergestellt!
Anonyme Suche mit adiedler durchgeführt!
Auslesen der Einträge ..!
Erfolgreiches abbinden der annonymen Verbindung
Verbindung aufnehmen zum Authentifizieren mit Namen und Passwort
Verbindung erfolgreich!
Das ist ja noch schlimmer, das es reicht, wenn ich einen beliebigen USernamen eingebe und er erfolgreich einloggt ohne Passwort
Wenn ich Benutzernamen eingebe und Passwort falsch eingebe dann das:
Code:
Connect hergestellt!
Anonyme Bindung hergestellt!
Anonyme Suche mit adiedler durchgeführt!
Auslesen der Einträge ..!
Erfolgreiches abbinden der annonymen Verbindung
Verbindung aufnehmen zum Authentifizieren mit Namen und Passwort
Warning: ldap_bind(): Unable to bind to server: Invalid credentials in c:\programme\apache group\apache\htdocs\php_test\ldap_connection.php on line 47
Verbindung fehlgeschlagen
Das ist soweit ja ok, wenn username und passwort nicht zueinander passen, soll die Verbindung ja auch abgelehnt werden.
Hier mein PHP Code für das obige Problem:
PHP-Quellcode:
PHP:
<?php
if (empty ($_POST[tf_password]) OR empty($_POST[tf_name]))
{ echo "Passwort leer"; }
$ds = ldap_connect("XXXXXXXXXX"); // muss ein gültiger LDAP Server
// sein!
if ($ds) { echo "Connect hergestellt!<br>"; }
if ($ds) {
//echo "Bindung ...<br>";
$anonym=ldap_bind($ds);
if ($anonym) { echo "Anonyme Bindung hergestellt! <br>"; }
// das ist ein "anonymer" bind,zur Contextsuche
// Suchen des Nachnamen-Eintrags
$anon_suche=ldap_search($ds,"c=de", "cn=".$_POST[tf_name]."");
if ($anon_suche) { echo "Anonyme Suche mit ".$_POST[tf_name]." durchgeführt!<br>";}
$info = ldap_get_entries($ds, $anon_suche);
if($info) { echo "Auslesen der Einträge ..!<br>";}
$unbind=ldap_unbind($ds);
if($unbind) { echo "Erfolgreiches abbinden der annonymen Verbindung<br>";}
$ds = ldap_connect("XXXXXXXXXX");
if($ds) { echo "Verbindung aufnehmen zum Authentifizieren mit Namen und Passwort<br>";}
//echo "Bind mit Benutzernamen und Passwort versuchen...";
$bind_user=ldap_bind($ds,$info[0][dn],$_POST[tf_password]);
if ($bind_user) { echo "Verbindung erfolgreich!"; }
else {echo "Verbindung fehlgeschlagen"; }
ldap_close($ds);
} else {
echo "<h4>Verbindung zum LDAP Server nicht möglich</h4>";
}
?>