我在AD服务器中有OU(比如说ou1),它有一个用户(比如user1)。 我想查询所有用户属于AD目录服务器的OU。 我正在尝试如下所示:
SearchControls ouctls = new SearchControls();
String[] ouattrIDs = {"displayname", "mail", "canonicalName", "memberOf","Users"};
ctls.setReturningAttributes(ouattrIDs);
ctls.setSearchScope(SearchControls.SUBTREE_SCOPE);
NamingEnumeration ouanswer = ctx.search("dc=exam,dc=com","(objectclass=group)", ouctls);
通过这些我找不到填充的用户属性。
while (ouAnswer.hasMoreElements()) {
SearchResult rslt = (SearchResult) ouAnswer.next();
Attributes attrs = rslt.getAttributes();
//log.debug("Group attributes"+attrs.get("cn"));
System.out.println("gr-->"+attrs.toString());
Attribute temp = attrs.get("cn");
}
你可以帮我找一下OU下的用户对象。
答案 0 :(得分:0)
如果这意味着user1
从属于ou=ou1
并且您知道ou
的可分辨名称,请将其用作搜索请求中的基础对象。例如,如果ou
立即从属于dc=exam,dc=com
,请使用ou=ou1,dc=exam,dc=com
作为搜索中的基础对象。在这种情况下,如果您知道用户条目立即从属于ou=ou1
,则搜索范围可以收紧到一个级别。否则,必须使用子树范围。使用过滤器缩小从服务器返回的结果。在您给出的示例中,过滤器可能应为:(&(cn=user1)(objectclass=group))
。这假设user1的命名属性是cn
,并且该条目是objectClass`group的成员。在LDAP客户端的代码中使用正确的值。