import java.util.Properties; import javax.naming.Context; import javax.naming.NamingEnumeration; import javax.naming.NamingException; import javax.naming.directory.Attribute; import javax.naming.directory.Attributes; import javax.naming.directory.SearchControls; import javax.naming.directory.SearchResult; import javax.naming.ldap.InitialLdapContext; import javax.naming.ldap.LdapContext; public class DaoLDAPUserInfo{ private final String adminName = "it_support@xx.com.cn"; private final String adminPassword = "Aa111111"; private final String ldapURL = "LDAP://10.10.2.31:389/"; private final String searchFilter = "(&(objectClass=organizationalPerson)(name=*))"; private final String searchBase = "OU=LBN,DC=xx,DC=com,DC=cn"; private final String returnedAtts[] = { "sAMAccountName", "cn", "mail", "department", "mobile", "ipPhone" }; /** * 从ad导出数据到db * */ public boolean DaoAD() { Properties env = new Properties(); env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory"); // set security credentials, note using simple cleartext authentication env.put(Context.SECURITY_AUTHENTICATION, "simple"); env.put(Context.SECURITY_PRINCIPAL, adminName); env.put(Context.SECURITY_CREDENTIALS, adminPassword); // connect to my domain controller env.put(Context.PROVIDER_URL, ldapURL); try { // Create the initial directory context LdapContext ctx = new InitialLdapContext(env, null); // Create the search controls SearchControls searchCtls = new SearchControls(); // Specify the search scope searchCtls.setSearchScope(SearchControls.SUBTREE_SCOPE); int totalResults = 0; searchCtls.setReturningAttributes(returnedAtts); // Search for objects using the filter NamingEnumeration answer = ctx.search(searchBase, searchFilter, searchCtls); // Loop through the search results System.out.println(PubFun.getCurrentDate()+" "+PubFun.getCurrentTime()+"》》》从AD导出数据..."); while (answer.hasMoreElements()) { SearchResult sr = (SearchResult) answer.next(); mschema = new LDUserSchema(); // Print out the groups Attributes attrs = sr.getAttributes(); System.out.println(">>>" + sr.getName()); if (attrs != null) { try { for (NamingEnumeration ae = attrs.getAll(); ae .hasMore();) { Attribute attr = (Attribute) ae.next(); for (NamingEnumeration e = attr.getAll(); e .hasMore(); totalResults++) { e.next().toString(); } } } catch (NamingException e) { e.printStackTrace(); } } } ctx.close(); } catch (NamingException e) { e.printStackTrace(); } } }