Jump to content

LDAP-Alle Gruppen Ausgeben in der ein User Mitglied ist PHP-Code


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

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 :cry3:.

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

 

 

 

 

 

Link zu diesem Kommentar

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

 

Link zu diesem Kommentar

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?

Link zu diesem Kommentar
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 ;-) 

Link zu diesem Kommentar

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 von NilsK
Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...