爪哇哇

          一個軟件分析師的博客

          JAVA的對LDAP操作代碼(以DOMINO為例子)

          LdapConnector  連接類

          import J2EE技術的爬蟲.util.Hashtable;

          import javax.naming.Context;
          import javax.naming.directory.DirContext;
          import javax.naming.directory.InitialDirContext;
          import javax.naming.directory.SearchControls;

          public class LdapConnector {
           public final static String INITCTX = "com.sun.jndi.ldap.LdapCtxFactory";
           public final static String HOST_URL = "ldap://128.8.1.8:389";
              public static LdapConnector connector=null;
           
           private DirContext ctx;

           private Hashtable<String,String> env;
             
           public LdapConnector(String principal, String credentials) {
            env = new Hashtable();
            try {
             env.put(Context.INITIAL_CONTEXT_FACTORY, INITCTX);
             env.put(Context.PROVIDER_URL, HOST_URL);
             env.put(Context.SECURITY_AUTHENTICATION, "simple");
             env.put(Context.SECURITY_PRINCIPAL, principal);
             env.put(Context.SECURITY_CREDENTIALS, credentials);
             ctx = new InitialDirContext(env);
            } catch (Exception ex) {
             ex.printStackTrace();
            }
            
           }
           
           public  DirContext getDirContext(){
            return ctx;
           }
           
           public static SearchControls getSearchControls(){
            SearchControls constraints;
            constraints = new SearchControls();
            constraints.setSearchScope(SearchControls.SUBTREE_SCOPE);
            return constraints;
           }
           
           
           public static LdapConnector  init(){
               synchronized (LdapConnector.class) {
                if(connector==null)
              connector=new LdapConnector("lilb","1"); 
           }  
             return connector;
           }
          }

          測試類:

          import J2EE技術的爬蟲.util.ArrayList;

          import javax.naming.NamingEnumeration;
          import javax.naming.directory.Attribute;
          import javax.naming.directory.Attributes;
          import javax.naming.directory.DirContext;
          import javax.naming.directory.SearchResult;

          public class LdapText {

           /**
            * @param args
            */
           public static void main(String[] args) throws Exception{
            // TODO Auto-generated method stub
            String cn="";
            String dn="";
            
            String filter="";
            String searchBase="";
            NamingEnumeration<SearchResult> results;
            
            

          DirContext ctx =LdapConnector.init().getDirContext();
                  //先拿CN值 ================
                  searchBase="";
                  filter ="(uid=lilb)";
                  results =
             ctx.search(searchBase, filter, LdapConnector.getSearchControls());
            while (results != null && results.hasMore()) {
             SearchResult sr2 =  results.next();
             cn=(String)sr2.getAttributes().get("cn").get();
             dn=sr2.getName();
             System.out.println(dn);
            }
                  //=======================
                 
                  J2EE技術的爬蟲.util.List<String> uidList=new ArrayList<String>();
            
                  filter =
             "(&(objectClass=dominoGroup)(cn=IT事業部))";
                 
             results =
             ctx.search(searchBase, filter, LdapConnector.getSearchControls());
            
            while (results != null && results.hasMore()) {
             SearchResult sr =  results.next();
             System.out.println(sr.getName());
             
             Attributes attrs = sr.getAttributes();
             NamingEnumeration attrsEnum=attrs.get("member").getAll();
             System.out.println("組織里的人員有 :"+attrs.get("member"));
             while (attrsEnum != null && attrsEnum.hasMore()) {
              String str=(String)attrsEnum.next();
              System.out.println(str.equalsIgnoreCase(dn));
              NamingEnumeration<SearchResult> resultsPerson =
               ctx.search(str, "(objectClass=*)", LdapConnector.getSearchControls());//根據DN,再重新查找
              while (resultsPerson != null && resultsPerson.hasMore()) { 
               SearchResult srPerson =  resultsPerson.next();
               System.out.println(srPerson.getAttributes().get("cn").get());//里面人的CN
               System.out.println(srPerson.getAttributes().get("uid").get()+"@");//里面人的UID
               uidList.add(srPerson.getAttributes().get("uid").get().toString().toLowerCase());
              }
             }
             System.out.println("本組織是否存在這用戶 :"+uidList.contains("lilb"));
             
             
             
            }
           }

          }

          posted on 2007-04-10 14:21 李立波 閱讀(1647) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           

          My Links

          Blog Stats

          News

          常用鏈接

          留言簿(5)

          隨筆分類

          隨筆檔案

          文章檔案

          相冊

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 晋江市| 井冈山市| 华容县| 桑植县| 通江县| 定远县| 河曲县| 吉林省| 新兴县| 民和| 绿春县| 清流县| 金堂县| 彰化县| 启东市| 荥阳市| 绍兴县| 微山县| 临海市| 板桥市| 长顺县| 东源县| 姜堰市| 涞源县| 八宿县| 安塞县| 永城市| 开化县| 神池县| 贵阳市| 保德县| 武鸣县| 平山县| 中牟县| 剑阁县| 白河县| 肃南| 延边| 塔河县| 巨野县| 息烽县|