繁体   English   中英

来自JAVA中LDAP中所有用户

[英]All Users from in LDAP in JAVA

我想从LDAP获取所有活动用户。 LDAP有1k个用户(afaik,您只能在一个请求中从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个用户的列表,因此问题显然是只有1k个用户被获取。

问题:

我如何告诉Java获取1k用户->写入列表->获取下一个1k,直到没有更多用户可获取。

提前致谢!

答案取决于您使用的LDAP目录。 如果您使用的是C#,我假设它是Active Directory。 这篇文章介绍了如何使用分页结果控件来避免达到1000个限制。

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

相对类似问题的答案可以在该线程的答案#1中找到:

使用LDAP从Active Directory检索用户属性-JAVA

BR

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM