1

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

    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();
    }
}

这是我的目录结构

4

3 回答 3

1

您可能想查看此示例

于 2013-05-02T14:11:57.200 回答
1

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

  • 您根本无法连接到 LDAP 目录

  • 你的搜索库是错误的

  • 你的过滤器是错误的

  • 您要查找的记录不存在

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

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

于 2013-05-02T14:21:54.897 回答
0

就用户文件夹而言,答案 在 .Net 中的另一篇文章 LDAP 目录条目中 - 不适用于 OU=Users

这可能看起来很愚蠢和愚蠢,但是 Active Directory 中的默认树设置不是 OU=Users ,dc=domain,dc=com 而是CN=Users ,dc=domain,dc=com (注意 CN= 不是 OU=为用户。

于 2014-01-14T03:18:09.450 回答