PHP5-ldap
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
ausgabe
benutzer
benutzername
code
dank
fehler
fehlermeldung
folgenden daten
funktionieren
hinweis
http
kommentar
machen
meldung
null
post
server
sinn
string
url
-
Hallo Forumianer!
Ich habe folgendes Problem:
Ich möchte gerne mit untenstehendem Script einen Login generieren, der die Benutzerdaten allerdings nicht in einer MySQL-DB vergleicht sondern mit einem Active Directory 2008 R2. Funktionieren tut's, aber:
Es können sich sämtliche Benutzer der Domäne authentifizieren. Ich möchte dies aber auf eine bestimmte Gruppe im AD reduzieren. Leider sind alle bisherigen Versuche gescheitert, ich hoffe auf Hilfe aus der Community! :)
Hier mein php-file:
<?php function ldap_auth($username,$password) { $ldap=ldap_connect("SERVERNAME"); $username = $username."@gal.local"; if (@ldap_bind($ldap,$username,$password)) { echo("permission granted"); ldap_unbind($ldap); } else { echo("permission denied"); } } if (isset($_POST['btnLogin']) AND $_POST['strUser'] != NULL AND $_POST['strPassword'] != NULL) //Anonymen Zugriff verhindern { $user = $_POST['strUser']; $pw = $_POST['strPassword']; $result = ldap_auth($user,$pw); echo $result; } ?> <html> <head> <title>Test</title> </head> <body> <form action="login.php" method="post"> <table align="center"> <tr> <td>User:</td> <td><input type="text" name="strUser" /></td> </tr> <tr> <td>Passwort:</td> <td><input type="password" name="strPassword" /></td> </tr> <tr> <td> </td> <td><input type="submit" name="btnLogin" /></td> </tr> </table> </form> </body> </html>
Gruss und Danke im Voraus :) -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Ich würde mal Vermusten das du ldap_search verwenden solltest. Damit könntest du dann erst prüfen ob der User in deiner Gruppe ist, wenn nicht, dann gehts nicht.
http://www.php.net/manual/de/function.ldap-search.php -
Okay ich habe einige Informationen vergessen zu erwähnen:
Webserver:
Ubuntu Server 10.10
Installierte Software:
apache2
php5
mysql-server
php5-mysql
php5-ldap
openssl (für https)
Wenn ich mit benutzer@domäne authentifizieren möchte funktioniert das wunderbar.
Wenn ich allerdings mit folgender Variable (was laut php.net funktionieren müsste) authentifizieren möchte:
$user = "cn=".$username.",ou=Users,dc=gal,dc=local";
Funktioniert nix. Also die ganze Funktion sähe dann so aus:
function ldap_auth($username,$password) { $ldap=ldap_connect("SERVERNAME"); //$username = $username."@gal.local"; $user = "cn=".$username.",ou=Users,dc=gal,dc=local" if (@ldap_bind($ldap,$user,$password)) { echo("permission granted"); ldap_unbind($ldap); } else { echo("permission denied"); }
Was mache ich da falsch?
Gruss
Pete -
Dieser Code gibt überhaupt keine Meldung aus:
function ldap_auth($username,$password) { $ldap=ldap_connect("172.30.21.69"); //$username = $username."@gal.local"; $user = "cn=".$username.",ou=Users,dc=gal,dc=local"; if (@ldap_bind($ldap,$user,$password)) { echo("permission granted"); error_reporting(E_ALL); ldap_unbind($ldap); } else { echo("permission denied"); error_reporting(E_ALL); } }
Irgendwie komisch, oder? o.o -
thegeter schrieb:
Dieser Code gibt überhaupt keine Meldung aus:
function ldap_auth($username,$password) { $ldap=ldap_connect("172.30.21.69"); //$username = $username."@gal.local"; $user = "cn=".$username.",ou=Users,dc=gal,dc=local"; if (@ldap_bind($ldap,$user,$password)) { echo("permission granted"); error_reporting(E_ALL); ldap_unbind($ldap); } else { echo("permission denied"); error_reporting(E_ALL); } }
Irgendwie komisch, oder? o.o
-.- nicht wirklich...
es müsste so aussehen um Fehler zu sehen:
error_reporting(E_ALL); function ldap_auth($username,$password) { $ldap=ldap_connect("172.30.21.69"); //$username = $username."@gal.local"; $user = "cn=".$username.",ou=Users,dc=gal,dc=local"; if (ldap_bind($ldap,$user,$password)) { echo("permission granted"); error_reporting(E_ALL); ldap_unbind($ldap); } else { echo("permission denied"); } } // und dann den Funktionsaufruf function ldap_auth('user','passwd');
-
Mh... ohne echo kommt nix raus. Macht Sinn.
Fehler #1; 22527
Fehler #2; 30719
Code sieht jetzt so aus:
echo "1te".error_reporting(E_ALL); function ldap_auth($username,$password) { $ldap=ldap_connect("172.30.21.69"); //$username = $username."@gal.local"; $user = "cn=".$username.",ou=Users,dc=gal,dc=local"; if (@ldap_bind($ldap,$user,$password)) { echo("permission granted"); ldap_unbind($ldap); } else { echo "2te".error_reporting(E_ALL); echo("permission denied"); } }
Gruss
Pete
-
nein das echo macht keinen sinn...
Hier musst du aber was ändern (wie schon gepostet): @ldap_bind
Das @ muss weg, denn das unterdrückt die fehlermeldungen -
Mh, das @ wars das ich nicht gesehen habe.
Leider gibts jetzt so keine Ausgabe mehr, ausser dem normalen "permission denied" -
In der php Doku steht nicht, dass der String "cn=".$username.",ou=Users,dc=gal,dc=local" funktioniert.
Es steht als Kommentar.
Der Kommentar ist von Juni letzten Jahres und bezieht sich explizit auf OpenLDAP unter Linux.
Ich würde vermuten, dass der übergebene String komplett als Benutzernamen interpretiert wird. Ist aber nur ins Blaue hinein geraten.
Ansonsten lass dir die Fehlermeldungen ausgeben.
ldap_ errno
ldap_ error
ldap_ err2str
Gruß und viel Erfolg
Lucas -
Hm, vielen Dank für den Hinweis, aber welche PHP-Doku meinst du genau?
Meinst du, dass nicht der mit POST übermittelte Wert als Benutzername eingetragen wird sondern effektiv mit den folgenden Daten authentifiziert wird:
$username@gal.local ?
Danke ^^ -
thegeter schrieb:
Hm, vielen Dank für den Hinweis, aber welche PHP-Doku meinst du genau?
Meinst du, dass nicht der mit POST übermittelte Wert als Benutzername eingetragen wird sondern effektiv mit den folgenden Daten authentifiziert wird:
$username@gal.local ?
Danke ^^
Moin,
ich meinte http://de.php.net/ldap_bind.
Allerdings steht da auch nicht, dass man den entsprechenden String nicht übergeben kann.
Sorry, habe mich da leider verlesen.
Habe als weitere Anregung was von PEAR gefunden:
http://pear.php.net/package/Auth/download
Vielleicht kommst du damit ja weiter. Wenn es klappen sollte würde ich mich über eine kleine Info freu, wie du es gemacht hast. :-)
Gruß Lucas
edit:
Die Tutorialseite dazu. :)
http://www.linux-magazin.de/Heft-Abo/Ausgaben/2008/07/Zentral-erfasst
Beitrag zuletzt geändert: 23.1.2011 19:17:16 von lucas9991 -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage