Active Directory'yi LDAP (Java ve PHP'den) aracılığıyla kullanıcının üyesi olduğu tüm grupların bir listesini oluşturmak için sorgularım. Bu liste, kullanıcının doğrudan üyesi olduğu grupları içeren en az tüm grupları (isteğe bağlı kuruluş birimleri) içermelidir. Örneğin:AD aracılığıyla LDAP - Tüm ata gruplarını bir sorgudan nasıl döndürebilirim?
User1, GroupA, GroupB ve GroupC üyesidir.
GroupA GroupA üyesidir.
GroupA, GroupB, GroupC, ve GroupD'yi bir kerede iade edecek bir LDAP sorgusu oluşturmanın bir yolunu arıyorum.
Mevcut uygulamamın altında, ancak bu bilgileri toplamanın daha verimli bir yolunu arıyorum. Eğer hareket gibi daha önce bir DN araştırdı olmadığını görmek için kontrol edebilirsiniz
Güncel Naif Uygulama
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;
}