LDAP:使用 Java 获取包含目录中所有用户信息的列表

KLC*_*der 0 java ldap

我需要获取包含目录中所有用户信息的列表。我正在尝试通过以下代码获取:

        DirContext ctx = new InitialDirContext(env);

        boolean ignoreCase = true;
        Attributes matchAttrs = new BasicAttributes(ignoreCase);
        matchAttrs.put( new BasicAttribute("") );

        //LDAP_Attributes : Attributes of every user e.g. name, phone# etc.
        NamingEnumeration answer = ctx.search( "ou=People", matchAttrs, LDAPUser.LDAP_ATTRIBUTES );
Run Code Online (Sandbox Code Playgroud)

由于安全限制,我无法访问 LDAP 服务器,因此无法对其进行测试。请建议上述方法是否正确。谢谢!

小智 5

检查以下代码示例以使用 Search() 获取信息。我想它可能会帮助你。

搜索引擎

package usingj2ee.naming;

import javax.naming.*;
import javax.naming.directory.*;

public class AllSearch
{
    public static void main(String[] args)
    {
        try
        {
// Get the initial context
            InitialDirContext ctx = new InitialDirContext();

            SearchControls searchControls = new SearchControls();
            searchControls.setSearchScope(SearchControls.SUBTREE_SCOPE);

// Search for items with the specified attribute starting
// at the top of the search tree
            NamingEnumeration objs = ctx.search(
                "ldap://ldap.wutka.com/o=Wutka Consulting, dc=wutka, dc=com",
                "(objectClass=*)", searchControls);

// Loop through the objects returned in the search
            while (objs.hasMoreElements())
            {
// Each item is a SearchResult object
                SearchResult match = (SearchResult) objs.nextElement();

// Print out the node name
                System.out.println("Found "+match.getName()+":");

// Get the node's attributes
                Attributes attrs = match.getAttributes();

                NamingEnumeration e = attrs.getAll();

// Loop through the attributes
                while (e.hasMoreElements())
                {
// Get the next attribute
                    Attribute attr = (Attribute) e.nextElement();

// Print out the attribute's value(s)
                    System.out.print(attr.getID()+" = ");
                    for (int i=0; i < attr.size(); i++)
                    {
                        if (i > 0) System.out.print(", ");
                        System.out.print(attr.get(i));
                    }
                    System.out.println();
                }
                System.out.println("---------------------------------------");
            }
        }
        catch (Exception exc)
        {
            exc.printStackTrace();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

从这里引用