Sto interrogando Active Directory tramite LDAP (da Java e PHP) per creare un elenco di tutti i gruppi di cui un utente è membro. Questo elenco deve contenere almeno tutti i gruppi (unità organizzative facoltative) che contengono gruppi di cui l'utente è direttamente membro. Ad esempio:AD via LDAP - Come posso restituire tutti i gruppi di antenati da una query?
Utente1 è un membro di GroupA, GroupB e GroupC.
GroupA è membro di GroupD.
Sto cercando un modo per costruire una query LDAP che restituirà GroupA, GroupB, GroupC, e GroupD tutto in una volta.
La mia attuale implementazione è al di sotto, ma sto cercando un modo più efficiente per raccogliere queste informazioni.
attuale implementazione Naive (in pseudo-codice)
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;
}