簡體   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