import java.util.Properties;
import javax.naming.Context;
import javax.naming.NamingEnumeration;
import javax.naming.directory.Attribute;
import javax.naming.directory.Attributes;
import javax.naming.directory.BasicAttribute;
import javax.naming.directory.DirContext;
import javax.naming.directory.InitialDirContext;
import javax.naming.directory.ModificationItem;
import javax.naming.directory.SearchControls;
import javax.naming.directory.SearchResult;
public class testClient {
public void testSearch(){
String dn="cn=Manager,dc=xxx,dc=com";
String searchDn1="ou=users,dc=xxx,dc=com";
String searchDnFilter="(|(cn=samwong)(telephoneNumber=12345678))";
Properties hs = new Properties();
hs.setProperty(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory");
hs.setProperty(Context.PROVIDER_URL,"ldap://192.168.1.177:389");
hs.setProperty(Context.SECURITY_AUTHENTICATION,"simple");
hs.setProperty(Context.SECURITY_PRINCIPAL,dn);
hs.setProperty(Context.SECURITY_CREDENTIALS,"password");
try {
/*指定了JNDI服务提供者中工厂类(factory class)的名称。Factory负
责为其服务创建适当的InitialContext对象。在上面的代码片断中,为文件
系统服务提供者指定了工厂类*/
DirContext ctx = new InitialDirContext(hs);
System.out.println("成功创建初始化context对象!");
SearchControls constraints = new SearchControls();
constraints.setSearchScope(SearchControls.SUBTREE_SCOPE);
NamingEnumeration en = ctx.search(searchDn1,searchDnFilter, constraints);
while (en != null && en.hasMoreElements()) {
Object obj = en.nextElement();
if (obj instanceof SearchResult) {
SearchResult si = (SearchResult) obj;
System.out.println("name: " + si.getName());
Attributes attrs = si.getAttributes();
if (attrs == null) {
System.out.println("No attributes");
} else {
Attribute attr = attrs.get("userPassword");
if(attr!=null){
Object o = attr.get();
byte[] s = (byte[]) o;
String pwd2 = new String(s);
System.out.println(pwd2);
}
}
} else {
System.out.println(obj);
}
System.out.println();
}
//ctx.lookup(name);
//Person obj=(Person) ctx.lookup(searchDn);
//System.out.print("personname:"+obj.getName()+"psersonage:"+obj.getAge());
ctx.close();
}catch(Exception ex ){
ex.printStackTrace();
System.exit(1);
}
/*
String dn="cn=Manager,dc=xxx,dc=com";
String searchDn="cn=SamWong,ou=users,dc=xxx,dc=com";
Properties hs = new Properties();
hs.setProperty(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory");
hs.setProperty(Context.PROVIDER_URL,"ldap://192.168.1.177:389");
hs.setProperty(Context.SECURITY_AUTHENTICATION,"simple");
hs.setProperty(Context.SECURITY_PRINCIPAL,dn);
hs.setProperty(Context.SECURITY_CREDENTIALS,"password");
try {
指定了JNDI服务提供者中工厂类(factory class)的名称。Factory负
责为其服务创建适当的InitialContext对象。在上面的代码片断中,为文件
系统服务提供者指定了工厂类
DirContext ctx = new InitialDirContext(hs);
System.out.println("成功创建初始化context对象!");
//ctx.lookup(name);
Object obj=ctx.lookup(searchDn);
ctx.get(searchDn)
ctx.close();
}catch(Exception ex ){
ex.printStackTrace();
System.exit(1);
}*/
}
/**
* @param args
*/
public static void main(String[] args) {
testClient client=new testClient();
client.testSearch();
}
}