Milo83 0 Geschrieben 3. März 2022 Melden Teilen Geschrieben 3. März 2022 Hallo zusammen, ich bin jetzt schon seit 2 Wochen an diesem Problem. Ich möchte mit PHP alle Gruppen Ausgeben, in der der angemeldete User Mitglied ist. Ich versuche wirklich mir die notwendigen Grundkenntnisse zu erarbeiten, aber wirklich gute Quellen finde ich dazu nicht. Also erarbeite ich mir mein eigenen Template schritt für Schritt . Eine detailliert erklärte Vorlage, die mal einen kompletten Code zeigt, habe ich ergebnislos gesucht. Gelungen ist mir bisher anzugeben in wie vielen Gruppen mein User Mitglied ist (die primary bleibt dabei leider ausgespart). Aber die namentliche Ausgabe der Gruppe incl. der primary Group will mir nicht gelingen: hier mal mein Code (anm. das sind Spieldaten, also nicht über Namen oder Passwörter wundern): <?php $ldapDn='Ca12er'; $ldapPass='Southpark'; $ldap_address="ldap://mz11sdc11.Firma.bw.de"; $ldap_port=636; $ldapConn = ldap_connect($ldap_address,$ldap_port) or die ("Verbindung fehlgeschlagen"); if($ldapBind){ $person = "$ldapDn"; $dn = "OU=Firma, DC= Abteilung, DC=bw, DC=de";} ldap_set_option($ldapConn, LDAP_OPT_PROTOCOL_VERSION, 3); ldap_set_option($ldapConn, LDAP_OPT_REFERRALS, 0); $ldapBind = ldap_bind($ldapConn, \\.$ldapDN, $ldapPass); $userDn = "CN=Cartman \,Erik , OU=22.Group, Ou= 2, OU = Einheit.W2, OU = Nutzer, OU = Serv02, OU = Firma, DC = Abteilung, DC = bw, DC = de"; $filter ="(&(objectType=user)(member=$userDN))"; $attributes = array ("ou", "sAMAccountName"); $ $sr = ldap_search($ldapConn,$dn,$filter, $attributes); $info = ldap_get_entries($ldapConn,$sr); or die("Error"); echo $info ["count"]. "einträge gefunden\n"; print_r($info); for($=0;$i<$info["count"];$i++){$ldap_username = $info[$i]['sAMAccountName'][0];} var_dump($sr); }else{ echo "LDAP Bind fehlgeschlagen";} } ldap_close; ?> Ich würde mich freuen, wenn mir jemand bei meinem Problem weiterhelfen kann. Bin für jede konstruktive Hilfe dankbar. Milo Zitieren Link zu diesem Kommentar
cj_berlin 1.306 Geschrieben 3. März 2022 Melden Teilen Geschrieben 3. März 2022 Moin, bitte Code als Code posten! Ansonsten steht inm Deinem Filter "objectType=user", Du suchst aber "objectClass=group" Zitieren Link zu diesem Kommentar
Milo83 0 Geschrieben 3. März 2022 Autor Melden Teilen Geschrieben 3. März 2022 Hallo, danke für deine schnelle Antwort. Nun bekomme ich die Ausgabe: 0 Einträge gefunden Array ( [count] => 0 ) <\pre> resource(2) of type (ldap result) Bedeutet dass nicht, dass mein code die primary Group ignoriert? Denn wenn ich die Ausgabe richtig verstehe sagt er mir, dass ich in keiner Gruppe Mitglied bin. Zitieren Link zu diesem Kommentar
cj_berlin 1.306 Geschrieben 3. März 2022 Melden Teilen Geschrieben 3. März 2022 Naja, die Mitgliedschaft in der primary group ist ja nicht im Member-Attribut abgebildet, sondern aus primaryGroupID der Member zurückgerechnet. Zitieren Link zu diesem Kommentar
NilsK 2.930 Geschrieben 3. März 2022 Melden Teilen Geschrieben 3. März 2022 Moin, was genau willst du denn zurückbekommen? Und was soll damit geschehen? Deine Abfragelogik verstehe ich nicht ganz. Es gibt bei User-Objekten zwei Felder im AD, die dir die (vermutlich) gewünschte Information geben können. Das eine ist "memberOf", das andere ist "tokenGroups". Je nachdem, ob du nur die direkten Mitgliedschaften brauchst oder auch die indirekten, ist das eine oder das andere geeignet. Gruß, Nils Zitieren Link zu diesem Kommentar
Milo83 0 Geschrieben 3. März 2022 Autor Melden Teilen Geschrieben 3. März 2022 Hallo Nils, Der Code ist eher als zwischenschritt zu betrachten, ich taste mich langsam an ein vollkommen unbekanntes Thema heran. Eigentlich möchte ich die Bezeichnung aller Gruppen ausgegeben haben, in der ein User Mitglied ist. Momentan habe ich noch einen fixen User und gebe nur die Anzahl der Gruppen aus (wenn mein Code so richtig ist). Genau an der Abfragelogik hängt es. Ich habe kaum Erfahrung mit LDAP, AD oder gar deren Anwendung in PHP. Dann wäre der richtige Filter: $filter ="(&(objectType=group)(memberOf=CN=GruppennameDerGesuchtenGruppe))"? Verstehe ich das richtig? Zitieren Link zu diesem Kommentar
cj_berlin 1.306 Geschrieben 3. März 2022 Melden Teilen Geschrieben 3. März 2022 Moin, wie ich schon schrieb, gibt es keinen objectType, es heißt objectClass... Zitieren Link zu diesem Kommentar
Milo83 0 Geschrieben 3. März 2022 Autor Melden Teilen Geschrieben 3. März 2022 Hab mich verschrieben, sorry Zitieren Link zu diesem Kommentar
MurdocX 949 Geschrieben 3. März 2022 Melden Teilen Geschrieben 3. März 2022 Hallo, ich bin jetzt kein PHP Experte, dennoch stimmt etwas mit deiner FOR-Schleife nicht. for($=0; $i < $info["count"]; $i++) Sollte es nicht $i = 0 heißen? Zitieren Link zu diesem Kommentar
Milo83 0 Geschrieben 3. März 2022 Autor Melden Teilen Geschrieben 3. März 2022 Da hast du Recht, war n Leichtsinnsfehler beim eintippen im Forum, im Original habe ich das zum glück richtig. Zitieren Link zu diesem Kommentar
MurdocX 949 Geschrieben 3. März 2022 Melden Teilen Geschrieben 3. März 2022 if($ldapBind){ $person = "$ldapDn"; $dn = "OU=Firma, DC= Abteilung, DC=bw, DC=de"; } $ldapBind - Die Variable wird in Zeile 16 ausgewertet aber erst in Zeile 28 definiert und gefüllt. Entweder muss der LDAP-Bind vorher oder die Abfrage danach. Vielleicht solltest du noch die Domäne etwas unkenntlich machen, sonst kann man schnell auf eine Firma in Baden-Württemberg schließen 2 Zitieren Link zu diesem Kommentar
NilsK 2.930 Geschrieben 3. März 2022 Melden Teilen Geschrieben 3. März 2022 (bearbeitet) Moin, wenn jetzt erst mal LDAP dein Problem ist, dann lass doch das PHP zunächst weg. Du kannst die LDAP-Abfragen in AD-Benutzer und -Computer (dsa.msc) bauen. Wenn die liefern, was du möchtest, nimmst du die Abfrage und steckst sie in deinen PHP-Code. Noch etwas besser bekommst du das mit AdFind von joeware.net hin, weil dsa.msc dir immer nur ganze Objekte zurückgibt und keine Werte. Oder du versuchst es mit ldp.exe (bei Windows in den AD-Tools enthalten). Und für die LDAP-Grundlagen im AD ist evtl. dies hier hilfreich: [LDAP-Grundlagen für Active Directory | faq-o-matic.net] https://www.faq-o-matic.net/2008/01/13/ldap-grundlagen-fuer-active-directory/ Und dies: [Whitepaper: LDAP-Filter für Active Directory | faq-o-matic.net] https://www.faq-o-matic.net/2009/09/24/whitepaper-ldap-filter-fr-active-directory/ Gruß, Nils bearbeitet 3. März 2022 von NilsK Zitieren Link zu diesem Kommentar
Milo83 0 Geschrieben 3. März 2022 Autor Melden Teilen Geschrieben 3. März 2022 Super, vielen Dank. Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.