来自JAVA的LDAP中的所有用户

时间:2016-05-25 13:38:02

标签: java c# ldap

我想从LDAP获取所有活动用户。 LDAP超过1k用户(在一次请求中,您只能从Ldap中获取1k用户)。 当使用C#时我使用了这个:

//Open connection to LDAP Server

using (var directoryEntry = new DirectoryEntry("LDAP"****************",
            {
                using (var directorySearcher = new DirectorySearcher(directoryEntry)
                {
                    PageSize = 1000,
                    Filter = "****************",
                    SearchScope = System.DirectoryServices.SearchScope.Subtree,
                    PropertiesToLoad =
                    {
                       ***,
                       ***,
                       ...
                    }
                })
                {
                    using (SearchResultCollection src = directorySearcher.FindAll())
                    {
                        try
                        {
                            foreach (SearchResult sr in src)
                            {
                                //Create User and add to a List of Users

现在我必须在Java代码中做同样的事情。我试过的是这个:

NamingEnumeration<SearchResult> results = ctx.search(ldapSearchBase, searchFilter, searchControls);

        SearchResult searchResult = null;

        while (results.hasMoreElements()) {
            searchResult = (SearchResult) results.nextElement();

            //Create User from searchResult Attributes and add to a List
        }

当这个Java代码完成时,我有一个包含1k用户的List,所以问题显然只有1k用户被获取。

问题:

我如何告诉Java获取1k用户 - &gt;写入列表 - &gt;得到下一个1k,直到没有其他用户可以获取。

提前致谢!

2 个答案:

答案 0 :(得分:0)

答案取决于您使用的LDAP目录。如果您使用C#,我认为它是Active Directory。这个post描述了如何使用分页结果控件来避免达到1000限制。

不,1000限制在所有LDAP服务器实现中都不是通用的。这是Active Directory默认使用的限制。使用分页结果控件的替代方法是增加MaxPageSize限制。

答案 1 :(得分:0)

相对类似问题的答案可以在这个帖子的答案#1中找到:

Retrieving user attributes from Active Directory using LDAP - JAVA

BR