[英]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限制。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.