2016-04-11 8 views
0

Ich benutze sAMAccountName für einen Benutzer zu suchen, nach dem Benutzer das Abrufen ich den Benutzer „memberof“ Liste. Ich möchte alle Mitglieder des "memberof" vom Benutzer abrufen. ist es möglich, es in einer Suche zu tun?PHP + LDAP Mitglieder memberOf finden

Nevo.

OK Hier ist, was ich so weit gekommen:

$ds = ldap_connect('145.20.0.10', 389); 
$bind = 1; 
$bind = ldap_bind($ds, "aa", "aa"); 
if($bind){ 
     $dn = "OU=all users,DC=mycustomdc,DC=co,DC=il"; 
     $search = ldap_search($ds, $dn, "(samaccountname=asd)", ['memberOf', 'company','department']); 
     $enr = ldap_get_entries($ds, $search); 
} 

diese geben mir die memberof, des Mitglieds, aber ich brauche die Mitglieder des memberof

+0

Bitte geben Sie uns einen Code, wo Sie stecken geblieben sind oder was Sie versucht haben. Dies macht es viel einfacher für Sie, richtige Antworten zu bekommen :) – Jer

Antwort

1

zu erhalten, wenn Ich verstehe Sie richtig, Sie beginnen mit einem Benutzerkonto und Sie möchten:

  1. Get alle Gruppen, die Benutzer ein Mitglied von (durch den Wert von ‚memberOf‘ bekommen)
  2. die Mitglieder jeder Gruppe in Schritt 1.

Es gibt zwei Möglichkeiten, dies zu tun gefunden finden:

  1. Iterieren Sie durch alle Gruppen und machen Sie einen separaten Aufruf, um das Attribut 'member' zu erhalten, das die Liste der Mitglieder enthält.
  2. eine Abfrage Konstrukt basiert auf 'memberOf' alle anderen Leute zu finden, die Mitglieder der gleichen Gruppen sind:

(& (objectclass = user) (| (memberOf = CN = Gruppe1, OU = etwas, DC = mydomain, DC = com) (memberOf = CN = group2, OU = etwas, DC = mydomain, DC = com) (memberOf = CN = group3, OU = etwas, DC = mydomain, DC = com)))

Je nach verwendeter Methode können unterschiedliche Ergebnisse erzielt werden.

Methode 1 erhalten Sie alle Mitglieder der Gruppen, auch wenn sie auf anderen Domänen außerhalb der Domäne oder Gesamtstruktur sind (z. B. Domänen mit unidirektionalen Vertrauensstellungen).

Mit Methode 2 (searching memberOf) sind Ihre Ergebnisse unterschiedlich, wenn Sie mit LDAP: // (Port 389) oder GC: // (Port 3268) suchen. Die Verwendung von GC: // funktioniert nicht für globale oder lokale Domänengruppen, während LDAP: // dies tut. Wenn Sie jedoch LDAP: // verwenden, erhalten Sie nur Benutzer aus einer Domäne, was ein Problem sein kann, wenn Sie andere Domänen in Ihrer AD-Gesamtstruktur haben.

Wenn Sie nur eine Domäne in Ihrer Organisation haben, die keine Vertrauensstellung zu anderen Domänen hat, sollten Sie besser LDAP: // verwenden.

+0

Ich fand heraus, dass ich so etwas tun kann '(& (samaccountname = messagetestuser) (| (memberof: 1.2.840.113556.1.4.1941: = CN = MessageUsers, OU = Gruppen, DC = Superpharm, DC = co, DC = il) (memberof: 1.2.840.113556.1.4.1941: = CN = MessageManager, OU = Gruppen, DC = super-pharm, DC = co , DC = il) (memberof: 1.2.840.113556.1.4.1941: = CN = MessageOffice, OU = Gruppen, DC = super-pharm, DC = co, DC = il))) ' Das einzige Problem ist, dass ich hinterher nicht wissen kann, welches Mitglied zu dem hier oben gehört – user3625518