我想从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,直到没有其他用户可以获取。
提前致谢!
答案 0 :(得分:0)
答案取决于您使用的LDAP目录。如果您使用C#,我认为它是Active Directory。这个post描述了如何使用分页结果控件来避免达到1000限制。
不,1000限制在所有LDAP服务器实现中都不是通用的。这是Active Directory默认使用的限制。使用分页结果控件的替代方法是增加MaxPageSize限制。
答案 1 :(得分:0)