`

JNDI方式查询LDAP

    博客分类:
  • 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();
  

 }
}

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics