Clara MG
Clara MG

Reputation: 123

Query to AD for unlimited results

I am using the next code to get all the users in the AD

Hashtable<String, String> env = new Hashtable<String, String>();
    env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
    env.put(Context.PROVIDER_URL, "ldap://grupoasisa.local:636");
    env.put(Context.SECURITY_PROTOCOL, "ssl");
    env.put(Context.SECURITY_PRINCIPAL, "DOMASISA\\"+USER_SERVICE);
    env.put(Context.SECURITY_CREDENTIALS, PASSWORD_SERVICE);

    try {
        DirContext ctx = new InitialLdapContext(env, null);

        SearchControls searchCtls = new SearchControls();

        String returnedAtts[]={"sAMAccountName", "description", "mail"};

        searchCtls.setReturningAttributes(returnedAtts);

        //Specify the search scope
        searchCtls.setSearchScope(SearchControls.SUBTREE_SCOPE);
        searchCtls.setTimeLimit(0);
        searchCtls.setCountLimit(0);

        //Specify the LDAP search filter
        String searchFilter="(&(objectCategory=person)(objectClass=user))";
        //Specify the Base for the search
        String searchBase = "DC=grupoasisa,DC=local";

        // Search for objects using the filter
        NamingEnumeration<SearchResult> answer = ctx.search(searchBase, searchFilter, searchCtls);

        //Loop through the search results
        while (answer.hasMoreElements()) {
            SearchResult searchResult = answer.next();
            Attributes attrs = searchResult.getAttributes();
            Attribute usuWin = attrs.get("sAMAccountName");
            Attribute racf = attrs.get("description");
            Attribute email = attrs.get("mail");    
        }
} catch (NamingException e) {
        System.err.println("Error: "+e.getMessage());
    } catch (Exception e) {
        System.err.println("Error: "+e.getMessage());
    }

And I am receiving only the 1000 first records although I was specifying that the search was unlimited. What is happening?

Thanks in advance.

Upvotes: 2

Views: 1242

Answers (1)

Michael-O
Michael-O

Reputation: 18415

Not possible, you have to paginate (PaginationControl) through the results. Try this answer.

Upvotes: 1

Related Questions