//2012-05-15 johnpfeiffer
import java.util.Hashtable;
import javax.naming.Context;
import javax.naming.NameNotFoundException;
import javax.naming.NamingEnumeration;
import javax.naming.NamingException;
import javax.naming.directory.Attribute;
import javax.naming.directory.Attributes;
import javax.naming.directory.DirContext;
import javax.naming.directory.InitialDirContext;
import javax.naming.directory.SearchControls;
import javax.naming.directory.SearchResult;
public class LdapSearch
{
public static void main(String[] args) throws Exception
{
Hashtable <String , String> env = new Hashtable <String , String> ();
NamingEnumeration <SearchResult> results = null;
DirContext dctx = null;
try {
env.put( Context.INITIAL_CONTEXT_FACTORY , "com.sun.jndi.ldap.LdapCtxFactory" );
env.put( Context.SECURITY_AUTHENTICATION , "simple" );
env.put( Context.SECURITY_PRINCIPAL , "uid=example,ou=system");
env.put(Context.SECURITY_CREDENTIALS, "Sandbox7");
String ldapUrl = "ldap://10.10.10.228:389";
env.put( Context.PROVIDER_URL, ldapUrl );
dctx = new InitialDirContext( env );
String base = "ou=system";
SearchControls searchcontrols = new SearchControls(); // tree limit, count limit, time limit, attribs to return
searchcontrols.setSearchScope( SearchControls.SUBTREE_SCOPE );
String[] attributeFilter = { "uid" };
searchcontrols.setReturningAttributes( attributeFilter );
String searchFilter = "(uid=example)";
results = dctx.search( base , searchFilter , searchcontrols );
while( results.hasMore() )
{
SearchResult sr = results.next();
Attributes attrs = sr.getAttributes();
Attribute attr = attrs.get( "uid" );
System.out.println( attr.get() );
}
}catch( NameNotFoundException e )
{ System.err.println( e.getMessage() );
}catch( NamingException e )
{ throw new RuntimeException(e);
// AuthenticationException, AuthenticationNotSupportedException
}finally
{
if( results != null )
{ try { results.close(); } catch (Exception e) { }
}
if( dctx != null )
{ try { dctx.close(); } catch (Exception e) { }
}
}
}
} //end class