import javax.naming.Context; import javax.naming.NamingEnumeration; import javax.naming.directory.*; import java.util.Hashtable; /** * User: gmc * Date: 16/02/11 * http://code.google.com/p/java-use-examples/source/browse/trunk/src/com/aw/ad/LdapBasicExample.java?r=2 */ public class LdapBasicExample { public static void main(String[] args) { String userName = "ldapaccess"; // Логин входа в АД Hashtable env = new Hashtable(); env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory"); env.put(Context.PROVIDER_URL, "ldap://192.168.2.250:389/dc=firma,dc=ua"); // Адрес сервера env.put(Context.SECURITY_AUTHENTICATION, "simple"); env.put(Context.SECURITY_PRINCIPAL, new String("firma" + "\\" + userName)); env.put(Context.SECURITY_CREDENTIALS, "ldapaccess"); // Пароль env.put(Context.REFERRAL, "follow"); env.put("com.sun.jndi.ldap.read.timeout", "500"); // Настройка таймаута. Но не помогает :( DirContext ctx = null; NamingEnumeration results = null; try { ctx = new InitialDirContext(env); SearchControls controls = new SearchControls(); controls.setSearchScope(SearchControls.SUBTREE_SCOPE); controls.getCountLimit(); // String usersName = "ldapaccess"; // String filter = "(userid="+usersName+")"; // String filter = "(objectclass=person)&(userid=" + usersName + ")"; // String filter = "(objectclass=person)"; String filter = "(mail=*)"; // Фильтр поиска String base=""; results = ctx.search(base, filter, controls); while (results.hasMore()) { SearchResult searchResult = (SearchResult) results.next(); Attributes attributes = searchResult.getAttributes(); Attribute attr = attributes.get("cn"); String cn = (String) attr.get(); System.out.println(" Person Common Name = " + attributes.get("cn")); // System.out.println(" Person Display Name = " + attributes.get("displayName")); System.out.println(" Person e-mail = " + attributes.get("mail")); //System.out.println(" Person logonhours = " + attributes.get("logonhours")); // System.out.println(" Person MemberOf = " + attributes.get("memberOf")); } } catch (Throwable e) { e.printStackTrace(); } finally { if (results != null) { try { results.close(); } catch (Exception e) { } } if (ctx != null) { try { ctx.close(); } catch (Exception e) { } } } } }