Ich frage Active Directory über LDAP (aus Java und PHP), um eine Liste aller Gruppen zu erstellen, zu denen ein Benutzer gehört. Diese Liste muss mindestens alle Gruppen enthalten (Organisationseinheiten optional), die Gruppen enthalten, zu denen der Benutzer direkt gehört. Beispiel:AD via LDAP - Wie kann ich alle Vorgängergruppen von einer Abfrage zurückgeben?
User1 ist ein Mitglied von GroupA, GroupB und GroupC.
GroupA ist ein Mitglied von GroupD.
Ich bin auf der Suche nach einer Möglichkeit, eine LDAP-Abfrage zu erstellen, die GroupA, GroupB, GroupC, und GroupD auf einmal zurückgibt.
Meine aktuelle Implementierung ist unten, aber ich suche nach einer effizienteren Möglichkeit, diese Informationen zu sammeln.
Aktuelle Naive Implementation (In Pseudo-Code)
user = ldap_search('samaccountname=johndoe', baseDN);
allGroups = array();
foreach (user.getAttribute('memberOf') as groupDN) {
allGroups.push(groupDN);
allGroups = allGroups.merge(getAncestorGroups(groupDN));
}
function getAncestorGroups(groupDN) {
allGroups = array();
group = ldap_lookup(groupDN);
parents = group.getAttribute('memberOf');
foreach (parents as groupDN) {
allGroups.push(groupDN);
allGroups = allGroups.merge(getAncestorGroups(groupDN));
}
return allGroups;
}