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

时间:2014-12-18 06:44:06

标签: 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 );

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

1 个答案:

答案 0 :(得分:3)

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

<强> AllSearch.java

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

Referenced from here