无法从java中的活动目录的OU读取用户属性

时间:2012-11-07 14:18:47

标签: java active-directory ldap

我在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下的用户对象。

1 个答案:

答案 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客户端的代码中使用正确的值。

另见