Hallo,
ich versuche mich nun schon seit 3 Wochen eigenständig in LDAP einzuarbeiten. Dabei habe ich mir zu Anfang vorgenommen „einfach“ mal alle Gruppen - mit Hilfe eines PHP-scriptes - auszugeben, in der meine Testperson Mitglied ist. Langfristig ist mein Ziel ein Login mit zwei verschiedenen Berechtigungsgruppen. Ich könnte wirklich zielführende konstruktive Hilfe brauchen oder ne Komplette Doku oder…oder. Bisher habe ich immer nur Ansätze gefunden/bekommen, die weit über meinen Wissenstand gehen.
Ich habe es selbst versucht, ich habe Dokumentationen gesucht, Bücher gewälzt, aber nichts auf die Reihe bekommen.
Hier mal mein Versuch bisher. Mir ist klar, dass der bisher nur zählt in wie vielen Gruppen der user Mitglied ist, aber ich komme da wirklich nicht weiter.
<?php
$ldapDN = 'Ca21er';
$ldapPass = 'EinPasswort';
$ldap_address = "ldap://entsprechende_url.de";
$ldap_port = 389;
$ldapConn =ldap_connect ($ldap_adress, $ldap_port) or die ("keine Serververbindung");
if($ldapConn){
ldap_set_option($ldapConn, LDAP_OPT_PROTOCOL_VERSION, 3);
ldap_set_option($ldapConn, LDAP_OPT_REFERRALS, 0);
$ldapBind = ldap_bind($ldapConn, "\\". $ldapDN, $ldapPass);
if($ldapBind){
echo "Bind erfolgreich <br>";
$dn = "OU=Schule, DC=Bildungsbehörde, DC=bw, DC=de";
$userDn = "CN=Erik\,Cartmen, OU=12.MA, OU=2, OU = Org.w9, OU = Schüler, OU = MZ03, OU=Schule, DC=Bildungsbehörde, DC=bw, DC=de))";
$filter ="(|sAMAccountName=$ldapDn*))";
#bei den Filtern bin ich mir extrem Unsicher, ich habe verschiedene probiert. der liefert mir wenigstens einen 1 -Wert. Alternativ hatte ich z.B.
//$filter="(&(objectCategory=user)(memberOf=OU=Orga.W10))
#der liefert mir einen 0 - Wert, was bedeuten wohl würde, dass Cartmen kein Mitglied der Gruppe ist
$attributes = array ("ou", "sAMAccountName");
#wenn ich das richtig verstehe sind die Attribute, dass was potentiell ausgegeben wird. Und da ich ja eigentlich alle Gruppen will in der er Mitglied ist habe ich OU gewählt und zum Angleich sAMAccountName. Liege ich damit richtig?
$sr = ldap_search($ldapConn,$dn,$filter,$attributes) or exit ("unable to search")
$info ldap_get_entries($ldapConn,$sr) or die("Error".ldap_error($ldapConn));
echo $info["count"]. "Einträge gefunden\n";
print_r($info);
for($i=0; $i<$info["count"] ; $i++)
{$ldap_username = $info[$i] ['sAMAccountName'][0];
}
var_dump($sr);
}else{echo"Bind fehlgeschlagen";}
}
ldap_close
Es würde mich freuen, wenn mir hier jemand weiterhelfen könnte;
v.a. interessiert mich auch, wie ich den $filter korrekt gestallte. Meine Varianten zeigten bisher immer keinen Eintrag, außer bei $filter ="(|sAMAccountName=$ldapDn*))";
Ich möchte meinen Versuch nur ungern aufgeben, nachdem ich schon so viel Zeit investiert habe mich in LDAP einzuarbeiten.
Vielen Dank für eure Hilfe
Milo