首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 其他相关 >

JNDI模式查询LDAP

2012-11-10 
JNDI方式查询LDAPimport java.util.Propertiesimport javax.naming.Contextimport javax.naming.NamingE

JNDI方式查询LDAP


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();
??

?}
}

热点排行