package org.jeecg.modules.to.util;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import javax.naming.AuthenticationException;
import javax.naming.Context;
import javax.naming.NamingEnumeration;
import javax.naming.NamingException;
import javax.naming.directory.SearchControls;
import javax.naming.directory.SearchResult;
import javax.naming.ldap.Control;
import javax.naming.ldap.InitialLdapContext;
import javax.naming.ldap.LdapContext;
import javax.naming.ldap.PagedResultsControl;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintStream;
import java.util.Hashtable;
import static org.jeecg.modules.to.util.paged.parseControls;
@Slf4j
@Component
public class adserver {
public void connect() {
Hashtable<String, String> HashEnv = new Hashtable<String, String>();
HashEnv.put(Context.SECURITY_AUTHENTICATION, "simple");
HashEnv.put(Context.SECURITY_PRINCIPAL, "12@123.com");
HashEnv.put(Context.SECURITY_CREDENTIALS, "Wel1co2m0");
HashEnv.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
HashEnv.put("com.sun.jndi.ldap.connect.timeout", "3000");
HashEnv.put(Context.PROVIDER_URL, "ldap://" + "域名地址" + ":" + 389);
try {
LdapContext ctx = new InitialLdapContext(HashEnv, null);
String searchBase = "OU=DGF,OU=CN,DC=kul-dc,DC=xxx,DC=com";
String searchFilter = "(&(objectCategory=person)(objectClass=user))";
SearchControls searchCtls = new SearchControls();
searchCtls.setSearchScope(SearchControls.SUBTREE_SCOPE);
searchCtls.setReturningAttributes(null);
searchCtls.setSearchScope(SearchControls.SUBTREE_SCOPE);
int pageSize = 900;
byte[] cookie = null;
Control[] ctls = new Control[]{new PagedResultsControl(pageSize, true)};
ctx.setRequestControls(ctls);
int totalResults = 0;
do {
NamingEnumeration results = ctx.search(searchBase,
searchFilter, searchCtls);
while (results != null && results.hasMoreElements()) {
SearchResult sr = (SearchResult) results.next();
System.out.println("name: " + sr);
log.info(totalResults + "adserver" + sr);
totalResults++;
}
cookie = parseControls(ctx.getResponseControls());
ctx.setRequestControls(new Control[]{new
PagedResultsControl(pageSize
, cookie, Control.CRITICAL)});
} while ((cookie != null) && (cookie.length != 0));
ctx.close();
System.out.println("Total entries: " + totalResults);
} catch (AuthenticationException e) {
System.out.println("身份验证失败!");
e.printStackTrace();
} catch (NamingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}