Hallo zusammen, ich würde gerne per php einen ldap-server anrufen und dann einen user daran authentifizieren... soviel ich ghört / gelesen habe sollte dies ohne probleme gehen... hat jemand schon ein script für das? gruss nightmare
Spontan fallen mir da die beiden Links ein: http://php3.de/manual/de/ref.ldap.php http://de.wikibooks.org/wiki/Websiteentwicklung:_PHP:_LDAP
okay, ich habs probiert und probiert aber ich komme einfach nicht weiter.. ist jemand hier der mir weiterhelfen kann betreffend php und ldap? biiiiitte... bin am verzweifeln... thx&gruss nightmare
Juhuuuui! :-D Also, ich habe eine website und möchte dass sich die user am ldap-server identifizieren können. ich habe nun mit viel mühe das skript erstellt, sodass ich den user überprüfen kann (mit name und passwort). nun möchte ich aigentlich wissen noch wissen ob der user in der gruppe "Lehrteam" ist, so dass ich ihm dann gewisse funktionen erlauben kann / oder eben nicht... Mein Skript: Code: $ldap_server = "ldap://10.72.6.242"; if($connect=ldap_connect($ldap_server)){ // if connected to ldap server if (ldap_set_option($connect, LDAP_OPT_PROTOCOL_VERSION, 3)) { echo "version 3<br>\n"; } else { echo "version 2<br>\n"; } echo "verification on '$ldap_server': "; $ldap_user = "uid=jojo,cn=users,dc=serverinfo1,dc=local"; $ldap_pw = "xxx"; if(($ds=ldap_bind($connect, $ldap_user, $ldap_pw)) == false){ print "bind:__FAILED__<br>\n"; return false; } else{ print "GRANTED"; } } echo "<br><br>"; danke für deine angebotene hilfe! gruss nightmare
wow, das sieht recht heavy aus... und habe nur die hälfte verstanden... srry.. :-[ gibt es keinen einfachen befehl um diese anforderung kurz zu prüfen? gruss nightmare
Out of the box ist mir keine Methode ismemberOf oder dergestalt bekannt. Selbst coden, oder noch besser mal in PEAR suchen, habe auf Anhieb das hier gefunden: http://pear.php.net/package/Net_LDAP Wobei ich diese Klasse nicht kenne, scheint aber der Beschreibung nach das zu sein was du suchst.
Na das is ja super... :-D Herzlichen Dank! :-* Das hilft mir mal wirklich weiter... Werde aber wohl zu gegebener Zeit selber was coden... gruss nightmare
Schlecht, posixAccount sollte man nicht für Webauftritte verlangen. inetOrgPerson ist besser geeignet, da es nicht so spezielle Anforderungen stellt wie dies posixAccount tut.
öhm, wie soll das gehen? der user ruft die seite auf und hat ein login-fenster.. er gibt seine angaben an und wird dann identifiziert und kann nun gewisse einstellungen an der homepage vornehmen.. wüsste nicht wie das anderst gehen soll?! bin aber offen für infos... gruss nightmare
Zum Auslesen beliebiger Daten aus dem LDAP dient die Funktion ldap_search: http://de3.php.net/manual/de/function.ldap-search.php Damit könntest die Mitglieder der Gruppe "Lehrteam" auslesen und dann vergleichen, ob der User in der Zurückgegebenen Liste enthalten ist.
jop diese funktion habe ich auchschon gefunden und habe mir dn und so weiter ausgeben lassen... wenn du mir etzt sagen kannst mit welchem param ich die gruppen auslesen kann würde ich dir am liebsten um den hals fallen... :-D gruss nightmare die suche sieht zur Zeit so aus: Code: $person = "jojo"; $dn = "dc=serverinfo1,dc=local"; $filter ="(|(sn=$person*)(vorname=$person*))"; $justthese = array( "ou", "sn", "vorname", "dn"); $sr = ldap_search($connect, $dn, $filter, $justthese); $info = ldap_get_entries($connect, $sr); print $info["count"]." gefundene Einträge<p>";
Das Auth Modul für apache verwenden und die Webseiten und/oder die virtuelle Website gegen LDAP authentifizieren. In PHP sind dann die Nutzer bereits authentifiziert. Das ist das übliche Vorgehen, wenn man komplette Seiten blocken will, weil es keine PHP-Angriffe auf den Code der Webseite möglich sind. Was Du letztlich verwendest hängt davon ab, was Du tun willst.
Nein, nein so macht man das nicht! Für Benutzeraccounts gibt es das attribut "uid", damit das funktioniert müssen Einträge von Typ inetOrPerson oder davon abgeleiteter Klassen sein. Mehrfachvererbung durch hinzufügen weiterer Klassen ist möglich. Wenn Du Personen in einer Gruppe zusammenfassen willst nimmst in diesem Fall am besten "GroupOfUniqueNames". GroupOfUniqueNames verlangt, daß es mindestens ein Mitglied gibt, d.h. uniqueMember='ldap_dn_einfügen'. Beispiel Code: dc=de dc=apfeltalk cn=MyGroup |uniqueMember:'uid=foo,ou=user,dc=apfeltalk,dc=de' ou=user uid=foo |objectClass:top |objectClass:person |objectClass:inetOrgPerson |uid:foo | ... Der passende Suchfilter &(objectClass=inetOrgPerson)(uid='uid_string') oder &(objectClass=*)(uid='uid_string') Du bindest zum Suchen an den LDAP-Server an dem Punkt an, ab den Du im DIT suchen willst. Nicht vergessen SUBTREE als Suchbefehl, nur wenn Du wirklich weißt, das es keinen SUBTREE gibt kannst Du nur auf einem bestimmten Knoten im Baum suchen.
Bleibt noch zu ergänzen, daß man zum Überprüfen eines Accounts auf einem LDAP-Server sinnigerweise mit den Credentials des Nutzer auf den LDAP-Server sich verbindet. Du sucht mit der vorher beschrieben Methode den passenden dn zur vorgegebenen uid (schlägt die Suche fehl, dann gibt es gar keinen Nutzer), dann verbindest Du Dich mit der dn und dem Passwort auf den LDAP-Server, schlägt die Verbindung fehl, dann ist das Passwort falsch. Die Methode funktioniert immer, weil für einen normalen Nutzer es auf einem LDAP-Server nicht unbedingt erlaubt ist sein eigenes Passwort auszulesen, aber man kann sich gegen den LDAP-Server authentifizieren.
Ich kenne mich mit PHP nicht so aus, aber grob sollte es ungefähr so gehen: Also angenommen, Du hast eine Gruppe "cn=Lehrteam,ou=Group,dc=apfeltalk,dc=de", dann sollten die Mitglieder im Multivaluefeld "uniqueMember" stehen (siehe Post von tjp) Dann holst Du Dir mit ldap_search die Gruppe Code: $dn = "ou=Group,dc=apfeltalk,dc=de"; $filter ="(cn=Lehrteam)"; $justthese = array( "uniqueMember"); $sr = ldap_search($connect, $dn, $filter, $justthese); Dann kannst Du mit ldap_first_entry über das ergebnis laufen bzw. wenn man so gezielt sucht, sollte es ja nur einen Treffer geben. Mit ldap_get_values kann man dann die Werte aus dem MultiValue-Feld lesen Code: $entry = ldap_first_entry($ds, $sr); $values = ldap_get_values($ds, $entry, "uniqueMember"); Dann hast Du in $values eine Liste mit den Mitgliedern der Gruppe in der Form 'uid=foo,ou=user,dc=apfeltalk,dc=de' 'uid=foo2,ou=user,dc=apfeltalk,dc=de' ... etc. In dieser Liste suchst Du dann nach der gewünschten UID des Users
wow das is ne krasse antwort... genau sowas hab ich mir gewünscht! nur leider erhalte ich diese Ausgabe: Warning: ldap_get_values(): Cannot get the value(s) of attribute Decoding error in Ich wüsste aber nicht was ich no ändern könnte... Ich habe deine Suchfunktion auchschon mit meiner gepaart versucht... Dabei zeigt er mir schön an, dass es die Gruppe "Lehrteam" gibt und den dn dazu auch... Nur keine uniqueMember.. die spuckt er irgendwie nicht aus... gruss nightmare