import java.util.Hashtable;
import java.util.Enumeration;
import javax.naming.*;
import javax.naming.directory.*;
import com.sun.jndi.ldap.*;
import com.sun.jndi.ssl.*;// for SSL
class Search {
/*
* config parameter
*/
public static final String ldapurl = "ldap://localhost:636";
public static final String binddn = "cn=admin";
public static final String password = "admin";
public static final String s_base = "c=jp";
public static final String filter = "cn=taro";
public static void main(String[] args) {
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
/* Specify host and port to use for directory service */
env.put(Context.PROVIDER_URL, ldapurl );
env.put(Context.SECURITY_AUTHENTICATION, "simple");
env.put(Context.SECURITY_PRINCIPAL, binddn );
env.put(Context.SECURITY_CREDENTIALS, password);
// for SSL
env.put("java.naming.ldap.factory.socket", "FjSSLLSocket" );
env.put(SSLSocket.SSL_VERSION , "3" );
env.put(SSLSocket.CRYPT , "RSA-3DES-SHA:RSA-DES-SHA");
env.put(SSLSocket.SLOT_PATH , "c:\\ssl_env\\slot" );
env.put(SSLSocket.TKN_LBL , "token1" );
env.put(SSLSocket.TKN_PWD , "slot123" );
env.put(SSLSocket.CERT_PATH , "c:\\ssl_env\\sslcert" );
env.put(SSLSocket.USER_CERT_NAME , "client_cert" );
try
{
/* get a handle to an Initial DirContext */
DirContext ctx = new InitialDirContext(env);
/* specify search constraints to search subtree */
SearchControls constraints = new SearchControls();
constraints.setSearchScope(SearchControls.SUBTREE_SCOPE);
/* search for all entries with commonname of taro */
NamingEnumeration results = ctx.search(s_base, filter, constraints);
/* for each entry print out name + all attrs and values */
while (results != null && results.hasMore()) {
SearchResult si = (SearchResult)results.next();
/* print its name */
System.out.println("name: " + si.getName());
Attributes attrs = si.getAttributes();
if (attrs == null) {
System.out.println("No attributes");
} else {
/* print each attribute */
for (NamingEnumeration ae = attrs.getAll();
ae.hasMoreElements();) {
Attribute attr = (Attribute)ae.next();
String attrId = attr.getID();
/* print each value */
for (Enumeration vals = attr.getAll();
vals.hasMoreElements();
System.out.println(attrId + ": " + vals.nextElement()));
}
}
System.out.println();
}
ctx.close();
}
catch(SSLException se)
{
System.out.println("Search example failed.");
int errorType = se.getType();
if(errorType == SSLException.CLNT_CERT_EXPIRED)
{
System.out.println("Client's cert is expired");
}
else if(errorType == SSLException.MEMORY_ERROR)
{
System.out.println("Parameter Error in SSL Environment File");
}
else
{
se.printStackTrace();
}
}
catch(NamingException ne)
{
System.out.println("Search example failed.");
System.out.println(ne);
ne.printStackTrace();
}
catch(Exception e)
{
System.out.println(e.getMessage());
System.out.println(e.getLocalizedMessage());
e.printStackTrace();
}
}
}
|