迭代 LDAP 搜索结果
Iterate LDAP Search Result
我对 Java LDAP api 不太熟悉。我在这里想要实现的是查询一个 OU 下的所有组以及每个组下的用户列表。
类似于
Group_1
g1_member_1
g1_member_2
g1_member_3
Group_2
g2_member_1
g2_member_2
等
我正在使用下面的代码片段。不确定我应该如何迭代搜索结果。
String[] attrs = {"dn","cn","member"};
SearchControls controls = new SearchControls();
controls.setSearchScope(SearchControls.SUBTREE_SCOPE);
controls.setReturningAttributes(attrs);
NamingEnumeration<SearchResult> results = lContext.search(ou, "cn=*", controls);
while (results.hasMore()){
SearchResult result = results.next();
System.out.println(result.getNameInNamespace());
}
目前,当我打印 result.getNameInNamespace()
时,我得到了 dn。我对 cn 以及每个 cn 的成员感兴趣。
我应该在这里进行迭代搜索吗?对于返回的每个组的含义,我是否再次为用户启动新的搜索?有没有一种方法可以在一个查询中获取所有内容?
能够通过以下更改使其正常工作。
String[] attrs = {"dn","cn","member"};
SearchControls controls = new SearchControls();
controls.setSearchScope(SearchControls.SUBTREE_SCOPE);
controls.setReturningAttributes(attrs);
NamingEnumeration<SearchResult> results = lContext.search(ou, "(&(objectClass=group))", controls);
while (results.hasMore()){
SearchResult result = results.next();
System.out.println(result.getNameInNamespace());
Attributes attributes = result.getAttributes();
System.out.println("DN "+result.getNameInNamespace());
System.out.println("CN "+attributes.get("cn"));
System.out.println("MEMBER "+attributes.get("member"));
System.out.println("**********************");
}
遍历成员属性以分别处理每个用户。
我对 Java LDAP api 不太熟悉。我在这里想要实现的是查询一个 OU 下的所有组以及每个组下的用户列表。
类似于
Group_1
g1_member_1
g1_member_2
g1_member_3
Group_2
g2_member_1
g2_member_2
等
我正在使用下面的代码片段。不确定我应该如何迭代搜索结果。
String[] attrs = {"dn","cn","member"};
SearchControls controls = new SearchControls();
controls.setSearchScope(SearchControls.SUBTREE_SCOPE);
controls.setReturningAttributes(attrs);
NamingEnumeration<SearchResult> results = lContext.search(ou, "cn=*", controls);
while (results.hasMore()){
SearchResult result = results.next();
System.out.println(result.getNameInNamespace());
}
目前,当我打印 result.getNameInNamespace()
时,我得到了 dn。我对 cn 以及每个 cn 的成员感兴趣。
我应该在这里进行迭代搜索吗?对于返回的每个组的含义,我是否再次为用户启动新的搜索?有没有一种方法可以在一个查询中获取所有内容?
能够通过以下更改使其正常工作。
String[] attrs = {"dn","cn","member"};
SearchControls controls = new SearchControls();
controls.setSearchScope(SearchControls.SUBTREE_SCOPE);
controls.setReturningAttributes(attrs);
NamingEnumeration<SearchResult> results = lContext.search(ou, "(&(objectClass=group))", controls);
while (results.hasMore()){
SearchResult result = results.next();
System.out.println(result.getNameInNamespace());
Attributes attributes = result.getAttributes();
System.out.println("DN "+result.getNameInNamespace());
System.out.println("CN "+attributes.get("cn"));
System.out.println("MEMBER "+attributes.get("member"));
System.out.println("**********************");
}
遍历成员属性以分别处理每个用户。