【发布时间】:2009-06-24 16:44:37
【问题描述】:
我正在通过 LDAP(来自 Java 和 PHP)查询 Active Directory,以构建用户所属的所有组的列表。此列表必须包含所有包含用户直接所属的组的至少所有组(组织单位可选)。例如:
User1 是 GroupA、GroupB 和 GroupC 的成员。
GroupA 是 GroupD 的成员。
我正在寻找一种构建 LDAP 查询的方法,该查询将同时返回 GroupA、GroupB、GroupC、 和 GroupD。
我目前的实现如下,但我正在寻找一种更有效的方法来收集这些信息。
当前的朴素实现(在伪代码中)
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;
}
【问题讨论】:
标签: java php active-directory ldap