在ou = users中使用cn搜索用户,在ldap中搜索ou = system目录

时间:2013-05-02 06:51:33

标签: java ldap

我正在尝试在用户目录中搜索用户(ou = users,ou = system),但我没有得到结果plz帮助我。 以下是我的搜索用户目录代码

    public void search(String uid) {
    String searchBase = "ou=users,ou=system";

    env.put(Context.INITIAL_CONTEXT_FACTORY,
            "com.sun.jndi.ldap.LdapCtxFactory");
    env.put(Context.PROVIDER_URL, url);
    env.put(Context.SECURITY_CREDENTIALS, rootpass);
    DirContext ctx = null;
    try {

![enter image description here][1]      // Create the initial directory context
        ctx = new InitialDirContext(env);

        // Create the search controls
        SearchControls searchCtls = new SearchControls();

        // Specify the search scope
        searchCtls.setSearchScope(SearchControls.SUBTREE_SCOPE);
        searchCtls.setReturningAttributes(new String[] { "uid", "cn" });

        String searchFilter =" (uid="+uid+") ";//"(objectclass=*)"; //" (uid="+uid+") ";

        // initialize counter to total the results
        int totalResults = 0;

        // Search for objects using the filter
        NamingEnumeration answer = ctx.search(searchBase, searchFilter,
                searchCtls);

        while (answer.hasMore()) {
            SearchResult sr = (SearchResult) answer.next();

            totalResults++;

            System.out.println(">>>" + sr.getName());
            System.out.println(">>>");
        }
    } catch (NamingException e) {
        e.printStackTrace();
    }
}

这是我的目录结构

3 个答案:

答案 0 :(得分:1)

您可能需要查看this sample

答案 1 :(得分:1)

如果“没有打印任何东西,但是当我在任何其他目录中搜索它工作正常”时,可能归结为:

  • 您无法连接到LDAP目录

  • 您的搜索基础错误

  • 您的过滤器错误

  • 您正在搜索的记录不存在

  • 您用于绑定的凭据无权在该位置进行搜索

其中一些会抛出NamingException,但其他人(例如“记录不存在”或“没有搜索权限”)将不会返回任何结果。

答案 2 :(得分:0)

就用户文件夹而言,答案在另一篇文章LDAP Directory Entry in .Net - not working with OU=Users

  

这看似愚蠢和愚蠢,但Active Directory中的默认树设置是而不是OU =用户,dc =域,dc = com,而是 CN =用户 ,dc = domain,dc = com(注意CN =不是OU = for Users。