锘??xml version="1.0" encoding="utf-8" standalone="yes"?>风间由美在线亚洲一区,亚洲欧洲日产国码一级毛片,亚洲一区二区三区在线视频http://www.tkk7.com/lmsun/category/4165.htmlzh-cnTue, 27 Feb 2007 12:07:43 GMTTue, 27 Feb 2007 12:07:43 GMT60LDAP瀹炰緥http://www.tkk7.com/lmsun/articles/17490.htmlmy javamy javaMon, 31 Oct 2005 00:57:00 GMThttp://www.tkk7.com/lmsun/articles/17490.htmlhttp://www.tkk7.com/lmsun/comments/17490.htmlhttp://www.tkk7.com/lmsun/articles/17490.html#Feedback0http://www.tkk7.com/lmsun/comments/commentRss/17490.htmlhttp://www.tkk7.com/lmsun/services/trackbacks/17490.html
import java.util.Properties;
import javax.naming.*;  
import javax.naming.directory.*;
/*
 * Created on 2005-10-26
 *
 * TODO To change the template for this generated file go to
 * Window - Preferences - Java - Code Style - Code Templates
 */

 

 

class LdapAuth
{
public static void main(String[] args)
{
    //***************** user information to be authenticated ********************************
    //*****************Please modify the following three properties accordingly ************
    String ldapHost= "ldap://aaa:389"; //ldap host + port number
   String DN = "cn=admin,cn=users,dc=aa,dc=com,dc=cn";
  String password = "changeit" ; 
 
    Properties props = new Properties(); 
    props.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");   

    props.put(Context.SECURITY_AUTHENTICATION, "simple");     //use simple authentication mechanism
    props.put(Context.SECURITY_PRINCIPAL, DN);   
    props.put(Context.SECURITY_CREDENTIALS, password); 
    props.put(Context.PROVIDER_URL, ldapHost); 

    long start = System.currentTimeMillis();
    long end=0;
    long time =0;

    try
        {
        System.out.println("authenticating"); 
        DirContext ctx = new InitialDirContext(props);
        System.out.println("authenticated");
        end = System.currentTimeMillis();
        time = end - start;
        System.out.println( "authentication takes = " + time + " millis");    
        System.out.println("successfully authenticate DN: "+DN);
     
        Attributes Atb = ctx.getAttributes("cn=username,ou=it,dc=aa,dc=com,dc=cn");
        NamingEnumeration enum = Atb.getAll();
        System.out.println("aa");
        while (enum.hasMore()) {
            Attribute attr = (Attribute)enum.next();
            System.out.println(attr);
        }

    }
        catch (Exception ex)
    {
        end = System.currentTimeMillis();
        time = end - start;
        System.out.println("Exception is "+ex.toString());
        ex.printStackTrace();
        System.out.println( "authentication takes = " + time + " millis");   
        System.out.println("fail to authenticate DN: "+DN);
    }
}
}







adauth.java

import java.lang.*;
import java.util.Hashtable ;
import javax.naming.*;
import javax.naming.directory.* ;
import javax.naming.ldap.*;
import javax.naming.spi.*;
 
 public class ADAuth {
 
    //鐠板璦畾
    private Hashtable env = null;
 
    //鐩寗
    DirContext ctx = null;
 
    //鏄惁鑳絣ogin
    boolean bLogin = false;
  
    //鏇存敼鏄惁鎴愬姛
    boolean getAttr = false;
   
 
  public ADAuth(String strId ,String strPassword ){
    env = new Hashtable();
    env.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory");
    env.put(Context.PROVIDER_URL, "ldap://xxx.xxx.xxx.xxx:389");
    env.put(Context.SECURITY_AUTHENTICATION,"Simple");
    env.put(Context.SECURITY_PRINCIPAL,"cn="+strId+",cn=users,DC=EEE,DC=abc,DC=com,DC=tw");
    env.put(Context.SECURITY_CREDENTIALS , strPassword );
 }//end ADAuth()
 
  public ADAuth(){
    this( "Administrator" , "xxxxxxx" );
  }
 
  public boolean checkAuth(){
    
 
    try{
      
      System.out.println("------------------");
      System.out.println("閫e叆LDAP--->");      
      ctx = new InitialDirContext(env);
      System.out.println("ok");
 
      bLogin = true ;
 
    } catch(javax.naming.AuthenticationException authe) {
      
      System.out.println("澶辨晽");
      bLogin = false ;
      
    } catch(Exception e) {
      
      System.out.println("澶辨晽");
      System.out.println(e);
      
    } finally{
      
        try{
          ctx.close();
        
        }catch(Exception Ignore){}
      
    } 
    return bLogin ;
  }
  
  public boolean getAttribute(String a){
    
       //璦畾瑕佸彇寰楃殑attribute
      String[] attrIds ={"displayName"};    
    
      try{
      
        ctx = new InitialDirContext(env);
        Attributes Atb = ctx.getAttributes("cn=users,DC=EEE,DC=abc,DC=com,DC=tw",attrIds);
        NamingEnumeration enum = Atb.getAll();
          while (enum.hasMore()) {
              Attribute attr = (Attribute)enum.next();
              System.out.println(attr);
          }
 
        System.out.println("------------------ok");
        getAttr = true;
            
    } catch(javax.naming.AuthenticationException authe) {
      
      System.out.println("澶辨晽");      
        getAttr = false;
      
    } catch(Exception e) {
      
      
      System.out.println("澶辨晽");
        getAttr = false;
                System.out.println(e);
      
    } finally{
      
        try{
          ctx.close();
        
        }catch(Exception Ignore){}
    }
    return getAttr;
 }
}
 


my java 2005-10-31 08:57 鍙戣〃璇勮
]]>
鐢╦dni 瀵筁DAP璇誨啓鎿嶄綔浠g爜http://www.tkk7.com/lmsun/articles/17071.htmlmy javamy javaThu, 27 Oct 2005 08:40:00 GMThttp://www.tkk7.com/lmsun/articles/17071.htmlhttp://www.tkk7.com/lmsun/comments/17071.htmlhttp://www.tkk7.com/lmsun/articles/17071.html#Feedback0http://www.tkk7.com/lmsun/comments/commentRss/17071.htmlhttp://www.tkk7.com/lmsun/services/trackbacks/17071.html 
import  java.util.Hashtable;  
 
import  javax.naming.Context;  
import  javax.naming.NamingException;  
import  javax.naming.directory.DirContext;  
import  javax.naming.directory.InitialDirContext;  
 
public  class  ActiveDirectoryConntct1  
{  
       public  static  void  main(String[]  args)  
       {  
               String  account="user1";  
               String  password="password1";  
               String  root="dc=test,dc=com";  //root  
 
               Hashtable  env  =  new  Hashtable();  
               env.put(Context.INITIAL_CONTEXT_FACTORY,  "com.sun.jndi.ldap.LdapCtxFactory");  
               env.put(Context.PROVIDER_URL,  "ldap://192.168.0.1:389/"  +  root);  
               env.put(Context.SECURITY_AUTHENTICATION,  "simple");  
               env.put(Context.SECURITY_PRINCIPAL,  "uid="  +  account  +  ","  +  root);  
               env.put(Context.SECURITY_CREDENTIALS,  password);  
 
               DirContext  ctx  =  null;  
               try  
               {  
                       ctx  =  new  InitialDirContext(env);  
                       System.out.println("璁よ瘉鎴愬姛");  
               }  
               catch(javax.naming.AuthenticationException  e)  
               {  
                       System.out.println("璁よ瘉澶辮觸");  
               }  
               catch(Exception  e)  
               {  
                       System.out.println("璁よ瘉鍑洪敊錛?);  
                       e.printStackTrace();  
               }  
 
               if(ctx  !=  null)  
               {  
                       try  
                       {  
                               ctx.close();  
                       }  
                       catch  (NamingException  e)  
                       {  
                               //ignore  
                       }  
               }  
               System.exit(0);  
       }  
}  
 
2.鏌ヨ  
DirContext  ctx  =  ...  
SearchControls  constraints  =  new  SearchControls();  
constraints.setSearchScope(SearchControls.SUBTREE_SCOPE);  
//constraints.setSearchScope(SearchControls.ONELEVEL_SCOPE);  
NamingEnumeration  en  =  ctx.search("",  "uid=*",  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  
               {  
                       for  (NamingEnumeration  ae  =  attrs.getAll();  ae.hasMoreElements();)  
                       {  
                               Attribute  attr  =  (Attribute)  ae.next();  
                               String  attrId  =  attr.getID();  
         
                               for  (Enumeration  vals  =  attr.getAll();vals.hasMoreElements();)  
                               {  
                                       System.out.print(attrId  +  ":  ");  
                                       Object  o  =  vals.nextElement();  
                                       if(o  instanceof  byte[])  
                                               System.out.println(new  String((byte[])o));  
                                       else  
                                               System.out.println(o);  
                               }  
                       }  
               }  
       }  
       else  
       {  
               System.out.println(obj);  
       }  
       System.out.println();  
}  
...  
ctx.close();  
 
3.娣誨姞  
DirContext  ctx  =  ...;  
String  newUserName  =  "user2";  
 
BasicAttributes  attrs  =  new  BasicAttributes();  
 
BasicAttribute  objclassSet  =  new  BasicAttribute("objectclass");  
objclassSet.add("person");    
objclassSet.add("top");    
objclassSet.add("organizationalPerson");    
objclassSet.add("inetOrgPerson");  
 
attrs.put(objclassSet);  
attrs.put("sn",  newUserName);  
attrs.put("uid",  newUserName);  
 
ctx.createSubcontext("uid="  +  newUserName,  attributes);  
...  
 
 
4.鍒犻櫎  
String  account  =  "user2";  
DirContext  ctx  =  ...;  
ctx.destroySubcontext("uid="  +  account);  
 
 
5.淇敼  
String  account  =  "user2";  
String  newDisplayName  =  "newDisplayName";  
 
ModificationItem  modificationItem[]  =  new  ModificationItem[1];  
modificationItem[0]  =  
           new  ModificationItem(  
                       DirContext.REPLACE_ATTRIBUTE,  
                       new  BasicAttribute("displayName",  newDisplayName);  
 
DirContext  ctx  =  ...;  
ctx.modifyAttributes("uid="  +  account,  modificationItem);  


my java 2005-10-27 16:40 鍙戣〃璇勮
]]>
鏈夊叧LDAP鍗忚鐨勬暣鐞?杞嚜csdn)http://www.tkk7.com/lmsun/articles/17067.htmlmy javamy javaThu, 27 Oct 2005 08:34:00 GMThttp://www.tkk7.com/lmsun/articles/17067.htmlhttp://www.tkk7.com/lmsun/comments/17067.htmlhttp://www.tkk7.com/lmsun/articles/17067.html#Feedback0http://www.tkk7.com/lmsun/comments/commentRss/17067.htmlhttp://www.tkk7.com/lmsun/services/trackbacks/17067.html聽(tīng)

聽(tīng)聽(tīng)聽(tīng) LDAP鐨勮嫳鏂囧叏縐版槸Lightweight Directory Access Protocol,鍗寵交閲忕駭鐩綍璁塊棶鍗忚.鎴戜滑
鐭ラ亾,浜轟滑瀵硅綆楁満緗戠粶鐨勪嬌鐢ㄥ拰綆$悊娑夊強(qiáng)浜?jiǎn)鍚効U嶅簽鏉傜殑璧勬簮,淇℃伅.涓轟簡(jiǎn)鎻愰珮鎬ц兘,渚夸簬浣?BR>鐢?鏈夋晥綆$悊鍒嗗竷寮忓簲鐢ㄧ殑鏈嶅姟,璧勬簮,鐢ㄦ埛鍙?qiáng)鍒殑瀵硅薄淇℃?榪欎簺淇℃伅闇瑕佹竻鏅?涓鑷村湴緇?BR>緇囪搗鏉?鍩轟簬榪欐牱鐨勯渶姹?鎻忚堪鍚勭鐢ㄦ埛,搴旂敤,鏂囦歡,鎵撳嵃鏈哄拰鍏跺畠鍙粠緗戠粶璁塊棶鐨勮祫婧愮殑
淇℃伅琚泦涓埌涓涓壒孌婄殑鏁版嵁搴撲腑,榪欑鏁版嵁搴撹縐頒負(fù)鐩綍.鐩綍瀛樻斁瀵硅薄鐨勫叕寮鎴栭潪鍏紑鐨?BR>淇℃伅,榪欎簺淇℃伅浠ユ煇縐嶉『搴忕粍緇?鎻忚堪浜?jiǎn)姣忎釜瀵硅薄鐨劸l嗚妭.鐢?shù)璇澖?鍥句功棣嗚棌涔﹀崱鐗囩洰褰曞氨鏄?BR>甯歌鐨勭洰褰?
聽(tīng)聽(tīng)聽(tīng)聽(tīng) LDAP鏄熀浜嶺.500鏍囧噯鐨?璁塊棶 X.500 鐩綍闇瑕佹煇縐嶅崗璁?渚嬪:鐩綍璁塊棶鍗忚 (DAP).
鐒惰?DAP 闇瑕佸ぇ閲忕殑緋葷粺璧勬簮鍜屾敮鎸佹満鍒舵潵澶勭悊澶嶆潅鐨勫崗璁?LDAP 浠呴氳繃浣跨敤鍘熷 X.500
鐩綍瀛樺彇鍗忚 (DAP) 鐨勫姛鑳藉瓙闆嗚屽噺灝戜簡(jiǎn)鎵闇鐨勭郴緇熻祫婧愭秷鑰?鑰屼笖鍙互鏍規(guī)嵁闇瑕佸畾鍒?姝?BR>澶?涓嶺.500涓嶅悓,LDAP鏀寔TCP/IP,榪欏璁塊棶Internet鏄繀欏葷殑.
聽(tīng)聽(tīng)聽(tīng) 涓轟簡(jiǎn)鑳藉LDAP鍗忚榪涜鏇村ソ鐨勭悊瑙?鎴戜滑闇瑕佸浠ヤ笅姒傚康鏈夊垵姝ョ殑璁よ瘑:
鐩綍:Directory,瀛樻斁瀵硅薄鐨勪俊鎭?榪欎簺淇℃伅浠ユ煇縐嶉『搴忕粍緇?璇︾粏鎻忚堪姣忎釜瀵硅薄.
鐩綍淇℃伅鏍?DIT,Directory Information Tree,鐩綍鏉$洰鐨勯泦鍚堟瀯鎴愪簡(jiǎn)鐩綍淇℃伅鏍?
鏉$洰:Entry,鐩綍淇℃伅鏍?wèi)涓殑涓涓粨鐐?鏄竴涓璞′俊鎭殑闆嗗悎,鏄洰褰曚俊鎭腑鏈鍩烘湰鐨?BR>鍗曚綅,鍖呭惈璇ュ璞$殑涓緋誨垪灞炴?
灞炴?Attribute,灞炴ф弿榪板璞$殑鐗瑰緛.涓涓睘鎬х敱灞炴х被鍨?type)鍜屼竴涓垨澶氫釜灞炴у?BR>(values)鏋勬垚.
鐩稿鏍囪瘑鍚?RDN,Relative Distinguished Name,鏉$洰鐨勫悕瀛?
鍞竴鏍囪瘑鍚?DN,Distinguished Name,鍦ㄤ竴涓洰褰曚俊鎭爲(wèi)涓敮涓鏍囪瘑涓涓潯鐩殑鍚嶅瓧.
聽(tīng)聽(tīng)聽(tīng) LDAP錛堣交閲忕駭鐩綍璁塊棶鍗忚錛孡ightweight Directory Access Protocol)鏄疄鐜版彁渚涜縐頒負(fù)鐩綍鏈嶅姟鐨勪俊鎭湇鍔°?
鐩綍鏈嶅姟鏄竴縐嶇壒孌婄殑鏁版嵁搴撶郴緇燂紝鍏朵笓闂ㄩ拡瀵硅鍙栵紝嫻忚鍜屾悳绱㈡搷浣滆繘琛屼簡(jiǎn)鐗瑰畾鐨勪紭鍖栥傜洰褰曚竴鑸敤鏉ュ寘鍚弿
榪版х殑錛屽熀浜庡睘鎬х殑淇℃伅騫舵敮鎸佺簿緇嗗鏉傜殑榪囨護(hù)鑳藉姏銆傜洰褰曚竴鑸笉鏀寔閫氱敤鏁版嵁搴撻拡瀵瑰ぇ閲忔洿鏂版搷浣滄搷浣滈渶瑕佺殑
澶嶆潅鐨勪簨鍔$鐞嗘垨鍥炲嵎絳栫暐銆傝岀洰褰曟湇鍔$殑鏇存柊鍒欎竴鑸兘闈炲父綆鍗曘傝繖縐嶇洰褰曞彲浠ュ瓨鍌ㄥ寘鎷釜浜轟俊鎭亀eb閾劇粨銆?
jpeg鍥懼儚絳夊悇縐嶄俊鎭備負(fù)浜?jiǎn)璁块棶瀛樺偍鍦ㄧ洰褰曚腑鐨勪俊鎭Q屽氨闇瑕佷嬌鐢ㄨ繍琛屽湪TCP/IP涔嬩笂鐨勮闂崗璁擫DAP銆?

聽(tīng)聽(tīng)聽(tīng) LDAP鐩綍涓殑淇℃伅鏄槸鎸夌収鏍?wèi)鍨嬀l撴瀯緇勭粐錛屽叿浣撲俊鎭瓨鍌ㄥ湪鏉$洰(entry)鐨勬暟鎹粨鏋勪腑銆傛潯鐩浉褰撲簬鍏崇郴鏁版嵁搴撲腑
琛ㄧ殑璁板綍錛涙潯鐩槸鍏鋒湁鍖哄埆鍚岲N錛圖istinguished Name錛夌殑灞炴э紙Attribute錛夛紝DN鏄敤鏉ュ紩鐢ㄦ潯鐩殑錛孌N鐩稿綋浜?
鍏崇郴鏁版嵁搴撹〃涓殑鍏抽敭瀛楋紙Primary Key錛夈傚睘鎬х敱綾誨瀷錛圱ype錛夊拰涓涓垨澶氫釜鍊鹼紙Values錛夌粍鎴愶紝鐩稿綋浜庡叧緋繪暟
鎹簱涓殑瀛楁錛團(tuán)ield錛夌敱瀛楁鍚嶅拰鏁版嵁綾誨瀷緇勬垚錛屽彧鏄負(fù)浜?jiǎn)鏂逛究妫绱㈢殑闇瑕侊紝LDAP涓殑Type鍙互鏈夊涓猇alue錛?
鑰屼笉鏄叧緋繪暟鎹簱涓負(fù)闄嶄綆鏁版嵁鐨勫啑浣欐ц姹傚疄鐜扮殑鍚勪釜鍩熷繀欏繪槸涓嶇浉鍏崇殑銆侺DAP涓潯鐩殑緇勭粐涓鑸寜鐓у湴鐞嗕綅緗?
鍜岀粍緇囧叧緋昏繘琛岀粍緇囷紝闈炲父鐨勭洿瑙傘侺DAP鎶婃暟鎹瓨鏀懼湪鏂囦歡涓紝涓烘彁楂樻晥鐜囧彲浠ヤ嬌鐢ㄥ熀浜庣儲(chǔ)寮曠殑鏂囦歡鏁版嵁搴擄紝鑰屼笉
鏄叧緋繪暟鎹簱銆傜被鍨嬬殑涓涓緥瀛愬氨鏄痬ail錛屽叾鍊煎皢鏄竴涓數(shù)瀛愰偖浠跺湴鍧銆?

WebLogic鐨勫唴緗殑LDAP Server鏀寔IETF LDAP涓篖DAPv3鍒跺畾鐨勬帶鍒惰闂ā鍨嬨備笅闈㈣繖涓墖鏂皢璁茶堪鍦ㄥ唴緗殑LDAP
Server涓庢牱瀹炵幇鎺у埗璁塊棶銆傚彲浠ラ氳繃緙栬緫璁塊棶鎺у埗鏂囦歡鏉ュ皢榪欎簺瑙勫垯鐩存帴搴旂敤鍒扮洰褰曠殑鍏ュ彛銆?BR>WebLogic涓殑璁塊棶鎺у埗鏂囦歡鏄痑cls.prop銆傚湪Server鐨刲ib涓彲浠ユ壘鍒拌繖涓枃浠躲?BR>榪欎釜鏂囦歡鐨勬墍鏈夎闂帶鍒惰鍒欓兘琚敞閲婃帀浜?jiǎn)锛屽鏋滄兿x(chóng)洿鏀硅繖浜涜鍒欙紝浣犺鎵嬪伐鏇存敼榪欎釜鏂囦歡銆?BR>娉ㄦ剰錛歐ebLogic Server鍐呯疆鐨凩DAP Server鍦ㄩ粯璁ょ殑鎯呭喌涓嬪彧鍏佽Admin甯愬彿璁塊棶錛學(xué)ebLogic Server鐨剆ecurity providers
鍙嬌鐢ˋdmin甯愬彿璁塊棶鍐呯疆鐨凩DAP Server銆傚鏋滀綘涓嶆兂浣跨敤澶栭儴鐨凩DAP Brower璁塊棶WebLogic Server鐨勫唴緗殑LDAP Server錛?BR>鎴栬呬綘鍙兂浣跨敤Admin甯愬彿璁塊棶鍐呯疆鐨凩DAP Server錛屼綘涓嶉渶瑕佺紪杈慳cls.prop鏂囦歡錛?BR>璁塊棶鎺у埗鏂囦歡錛圱he Access Control File錛?/P>

璁塊棶鎺у埗鏂囦歡錛坅cls.prop錛夊寘鍚唴緗殑LDAP Server鐨勬暣涓洰褰曠殑瀹屾暣鐨勮闂帶鍒跺垪琛紙ACL錛夈?BR>榪欎釜鏂囦歡涓殑姣忎竴琛岄兘鍖呭惈涓涓闂帶鍒惰鍒欍備竴涓闂帶鍒惰鍒欑敱涓嬮潰鎺ヤ釜閮ㄥ垎緇勬垚錛?BR>聽(tīng)聽(tīng)聽(tīng) 璁塊棶鎺у埗浣嶇疆(Access Control Location)
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) 姣忎釜璁塊棶鎺у埗瑙勫垯閮藉簲鐢ㄤ簬LDAP鐩綍涓殑涓涓粰瀹氱殑浣嶇疆銆傝繖涓綅緗氬父鏄竴涓尯鍒懡鍚嶏紙DN錛夛紝浣嗘湁涓涓緥澶栵紝榪欏氨鏄痆root]錛屽鏋滆闂帶鍒惰鍒欏簲鐢ㄥ埌鏁翠釜鐩綍錛屽垯鍙渶瑕佹寚瀹氫綅緗負(fù)[root]灝卞彲浠ヤ簡(jiǎn)錛?BR>聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) 濡傛灉琚闂垨鏇存敼鐨勫叆鍙g殑浣嶇疆涓庤闂帶鍒惰鍒欐寚瀹氱殑浣嶇疆涓嶇浉絳夛紝鎴栧湪璁塊棶鎺у埗瑙勫垯鎸囧畾鐨勪綅緗殑涓嬬駭錛屽垯榪欎釜璁塊棶鎺у埗瑙勫垯灝嗕笉浼?xì)琚墽琛屻?/P>

聽(tīng)聽(tīng) 璁塊棶鎺у埗鑼冨洿錛圓ccess Control Scope錛?BR>聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) 璁塊棶鎺у埗鑼冨洿鏈?縐嶏細(xì)
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) Entry-涓涓狤ntry鑼冨洿鐨勮闂帶鍒跺垪琛ㄥ彧鍦ㄤ笅闈㈢殑鎯呭喌涓嬭鎵ц錛?BR>聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) LDAP鐩綍鐨勫叆鍙g殑DN涓庤闂帶鍒惰鍒欐寚瀹氱殑浣嶇疆鐩稿悓銆傝繖鏍風(fēng)殑瑙勫垯瀵逛簬鍖呭惈浜?jiǎn)姣旘q惰鍜屽壇鍏ュ彛鏇存晱鎰熶俊鎭殑鍗曠嫭鍏ュ彛闈炲父鏈夌敤銆?BR>聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) Subtree-鎰忓懗鐫璁塊棶鎺у埗瑙勫垯鎸囧畾鐨勪綅緗強(qiáng)瀛愭爲(wèi)閮藉彲浠ラ傜敤榪欐潯瑙勫垯銆?BR>聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) 濡傛灉Entry涓嶴ubtree鍦ㄨ闂帶鍒惰鍒欎腑鏈夊啿紿侊紝鍒橢ntry瑕佷紭鍏堜簬Subtree銆?/P>

聽(tīng)聽(tīng) 璁塊棶鏉冮檺錛圓ccess Rights錛?BR>聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) 璁塊棶鏉冮檺搴旂敤浜庢暣涓璞℃垨瀵硅薄鐨勫睘鎬э紝鏈?涓鹼細(xì)grant錛堝噯璁革級(jí)鎴杁eny錛堟嫆緇濓級(jí)銆傝闂潈闄愭寚瀹氫簡(jiǎn)LDAP鎿嶄綔鐨勭被鍨嬨?BR>聽(tīng)聽(tīng)
聽(tīng)聽(tīng) 璁稿彲(grant鎴杁eny)

聽(tīng)聽(tīng) 搴旂敤瑙勫垯鐨勫睘鎬?attribute)

聽(tīng)聽(tīng) 鍏佽鎴栨嫆緇濊闂殑涓婚(subject)
聽(tīng)聽(tīng) 鍦╳eblogic鍙互緙栧啓紼嬪簭鏉ヨ闂甃DAP.涓婃墜鏃跺彲浠ラ夋嫨JXplorer宸ュ叿銆?BR>聽(tīng)聽(tīng) 1.LDAP Server鍙?qiáng)LDAP Browser錛?BR>聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) 瀵逛簬WLS LDAP涓虹悊瑙h搗鏉ョ畝鍗曪紝鍘繪帀闄愬埗鐨勬柟娉曟槸淇敼bea\weblogic81\server\lib\acls.prop鏂囦歡鍚庛備慨鏀規(guī)柟娉曪細(xì)
鍦ㄨ鏂囦歡鏈鍚庢坊鍔犱互涓嬪嚑琛屻?BR>[root]|entry#grant:s,r,o,w,c,m#[all]#public
[root]|subtree#grant:s,r,o,w,c,m#[all]#public:
[root]|subtree#grant:a,d,e,i,n,b,t#[entry]#public:
cn=schema|entry#grant:s,r,o,w,c,m#[all]#public:
cn=schema|entry#grant:a,d,e,i,n,b,t#[entry]#public:
娉ㄦ剰錛岃鏂囦歡涓繖浜涜涔嬮棿錛屼互鍙?qiáng)鍏朵粬琛屼箣闂翠笉鑳芥湁绌鸿锛屽惁鍒欏惎鍔╓LS浼?xì)鎶ラ敊鐨勩備慨鏀瑰ソ涔嬪悗灝卞彲浠ュ惎鍔╓LS浜?jiǎn)锛?BR>鍚姩鍚庤繘鍏onsole閲屼慨鏀筁dap Server鐨勫瘑鐮併傚瘑鐮佷慨鏀瑰畬鍚庨渶瑕佸啀閲嶆柊鍚姩涓嬈LS銆?BR>LDAP鍒氫笂鎵嬬殑鏃跺欐病鏈夋柟渚跨殑宸ュ叿浼?xì)寰堣垂鍔层傛垜鐪嬩簡(jiǎn)CSDN涓娾滃厰鍏摜鈥濈殑鏂囩珷錛岀敤JXplorer錛屾劅瑙夊緢涓嶉敊銆?BR>鎯崇湅榪欑瘒鏂囩珷錛屽埌CSDN涓婃悳涓涓嬧滃厰鍏摜鈥濓紝緋誨垪涓璑o.12灝辨槸鍏充簬JXplorer鐨勯厤緗拰浣跨敤銆傛垜鐨勮繛鎺ュ弬鏁板涓嬶細(xì)
Host:localhost//鏍規(guī)嵁瀹為檯淇敼
Port:7001
Protocol:LDAP v3
Base DN:dc=ldapdomain//鏍規(guī)嵁瀹為檯淇敼
Level:User+Password
User DN:cn=Admin
Password:weblogic//鏍規(guī)嵁瀹為檯淇敼
.緙栫▼鎿嶄綔LDAP Server銆?BR>聽(tīng)涓嬮潰鍥涗釜JAVA鏂規(guī)硶錛屽垎鍒敤浜庡垵濮嬪寲錛屾煡璇紝娣誨姞錛屽垹闄わ紝淇敼錛屽叧闂繛鎺ャ?BR>聽(tīng)璁板緱姣忔閮介渶瑕佸厛澶ф榪炴帴錛屾搷浣滐紝鐒跺悗鍏抽棴榪炴帴銆傚拰浣跨敤鏁版嵁搴撳樊涓嶅銆?BR>聽(tīng)
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) 棣栧厛鏄渶瑕佺敤鍒扮殑澶存枃浠訛細(xì)
import java.util.Hashtable;
import java.util.Enumeration;
import javax.naming.Context;
import javax.naming.NamingException;
import javax.naming.directory.DirContext;
import javax.naming.directory.InitialDirContext;
import javax.naming.directory.SearchControls ;
import javax.naming.NamingEnumeration;
import javax.naming.directory.SearchResult;
import javax.naming.directory.Attributes ;
import javax.naming.directory.Attribute;
import javax.naming.directory.BasicAttributes;
import javax.naming.directory.BasicAttribute;
import javax.naming.directory.ModificationItem;
import java.lang.reflect.Method;
import java.io.BufferedReader;
import java.io.InputStreamReader;


鐒跺悗鏄竴涓被鍩燂紝鐢ㄤ簬淇濆瓨?shù)笂涓嬫枃锛?xì)
聽(tīng)
DirContext ctx = null;
聽(tīng)
鐒跺悗鏄垵濮嬪寲錛?BR>聽(tīng)
聽(tīng)聽(tīng)聽(tīng) public void init(){
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) String account="Admin";//鎿嶄綔LDAP鐨勫笎鎴楓傞粯璁ゅ氨鏄疉dmin銆?BR>聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) String password="weblogic";//甯愭埛Admin鐨勫瘑鐮併?BR>聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) String root="dc=ldapdomain"; //鎵鎿嶄綔鐨刉LS鍩熴備篃灝辨槸LDAP鐨勬牴鑺傜偣鐨凞C
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) Hashtable env = new Hashtable();
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");//蹇呴』榪欐牱鍐欙紝鏃犺鐢ㄤ粈涔圠DAP鏈嶅姟鍣ㄣ?BR>聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) env.put(Context.PROVIDER_URL, "ldap://localhost:7001/" + root);//LDAP鏈嶅姟鍣ㄧ殑鍦板潃:绔彛銆傚WLS绔彛灝辨槸7001
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) env.put(Context.SECURITY_AUTHENTICATION, "none");//鎺堟潈鐣屽埆錛屽彲浠ユ湁涓夌鎺堟潈綰у埆錛屼絾鏄鏋滆涓哄彟澶栦袱縐嶉兘鏃犳硶鐧誨綍錛屾垜涔熶笉鐭ラ亾涓哄暐錛屼絾鏄彧鑳借鎴愯繖涓?none"銆?BR>聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) env.put(Context.SECURITY_PRINCIPAL, "cn=" + account + "," + root);//杞藉叆鐧婚檰甯愭埛鍜岀櫥褰曞瘑鐮?BR>聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) env.put(Context.SECURITY_CREDENTIALS, password);
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) try{
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) ctx = new InitialDirContext(env);//鍒濆鍖栦笂涓嬫枃
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) System.out.println("璁よ瘉鎴愬姛");//榪欓噷鍙互鏀規(guī)垚寮傚父鎶涘嚭銆?BR>聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) }catch(javax.naming.AuthenticationException e){
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) System.out.println("璁よ瘉澶辮觸");
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) }catch(Exception e){
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) System.out.println("璁よ瘉鍑洪敊錛?+e);
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) }
聽(tīng)}


鏌ヨ鎿嶄綔錛?BR>聽(tīng)
聽(tīng)public void search(){//鎴戝彧鑳芥寜鐓ф煇浜涘睘鎬ф煡鎵捐妭鐐癸紝鍋惰繕?shù)笉浼?xì)鎬庝箞鏌ユ壘涓涓洰褰曟垨鎸夌収鏇村鏉傜殑姝e垯寮忔煡鎵劇壒瀹氳妭鐐癸紡鐩綍
聽(tīng) try{
聽(tīng)聽(tīng) SearchControls constraints = new SearchControls();
聽(tīng)聽(tīng) constraints.setSearchScope(SearchControls.SUBTREE_SCOPE);
聽(tīng)聽(tīng) System.out.print("what would you want to search:");
聽(tīng)聽(tīng) BufferedReader bd=new BufferedReader(new InputStreamReader(System.in));
聽(tīng)聽(tīng) String s=bd.readLine();
聽(tīng)聽(tīng) NamingEnumeration en = ctx.search("", "uid="+s, constraints); //瑕佹煡璇㈢殑UID銆傚鏋滄槸*鍒欏彲浠ユ煡鍒版墍鏈塙ID鐨勮妭鐐?BR>聽(tīng)聽(tīng) if(en == null){
聽(tīng)聽(tīng)聽(tīng) System.out.println("Have no NamingEnumeration.");
聽(tīng)聽(tīng) }
聽(tīng)聽(tīng) if(!en.hasMoreElements()){
聽(tīng)聽(tīng)聽(tīng) System.out.println("Have no element.");
聽(tīng)聽(tīng) }
聽(tīng)聽(tīng) while (en != null && en.hasMoreElements()){//鍙互鏌ュ嚭澶氫釜鍏冪礌
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) Object obj = en.nextElement();
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) if(obj instanceof SearchResult){
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) SearchResult si = (SearchResult) obj;
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) System.out.println("\tname: " + si.getName());
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) Attributes attrs = si.getAttributes();
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) if (attrs == null){
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) System.out.println("\tNo attributes");
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) }else{
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) for (NamingEnumeration ae = attrs.getAll(); ae.hasMoreElements();){//鑾峰緱璇ヨ妭鐐圭殑鎵鏈夊睘鎬?BR>聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) Attribute attr = (Attribute) ae.next();//涓嬩竴灞炴?BR>聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) String attrId = attr.getID();//鑾峰緱璇ュ睘鎬х殑灞炴у悕
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) for (Enumeration vals = attr.getAll();vals.hasMoreElements();){//鑾峰緱涓涓睘鎬т腑鐨勬墍鏈夊睘鎬у?BR>聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) System.out.print("\t\t"+attrId + ": ");
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) Object o = vals.nextElement();//涓嬩竴灞炴у?BR>聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) if(o instanceof byte[])
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) System.out.println(new String((byte[])o));
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) else
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) System.out.println(o);
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) }
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) }
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) }
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) }
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) else{
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) System.out.println(obj);
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) }
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) System.out.println();
聽(tīng)聽(tīng) }
聽(tīng) }catch(Exception e){
聽(tīng)聽(tīng) System.out.println("Exception in search():"+e);
聽(tīng) }
聽(tīng)聽(tīng)聽(tīng) }
聽(tīng)
娣誨姞鎿嶄綔錛?BR>聽(tīng)
聽(tīng)聽(tīng)聽(tīng) public void add(){
聽(tīng)聽(tīng)聽(tīng)聽(tīng) try{
聽(tīng)聽(tīng) String newUserName = "stella";
聽(tīng)聽(tīng) BasicAttributes attrs = new BasicAttributes();
聽(tīng)聽(tīng) BasicAttribute objclassSet = new BasicAttribute("objectclass");
聽(tīng)聽(tīng) objclassSet.add("person");
聽(tīng)聽(tīng) objclassSet.add("top");
聽(tīng)聽(tīng) objclassSet.add("organizationalPerson");
聽(tīng)聽(tīng) objclassSet.add("inetOrgPerson");
聽(tīng)聽(tīng) objclassSet.add("wlsUser");
聽(tīng)聽(tīng) attrs.put(objclassSet);
聽(tīng)聽(tīng) attrs.put("sn", newUserName);
聽(tīng)聽(tīng) attrs.put("uid", newUserName);
聽(tīng)聽(tīng) attrs.put("cn", newUserName);
聽(tīng)聽(tīng) ctx.createSubcontext("uid=" + newUserName+",ou=people,ou=myrealm", attrs);聽(tīng) //娣誨姞涓涓妭鐐癸紝鎴戣繕?shù)笉浼?xì)娣誨姞鐩綍
聽(tīng) }catch(Exception e){
聽(tīng)聽(tīng) System.out.println("Exception in add():"+e);
聽(tīng) }
聽(tīng)聽(tīng)聽(tīng) }


淇敼鎿嶄綔錛?BR>聽(tīng)
聽(tīng)聽(tīng)聽(tīng) public void edit(){
聽(tīng)聽(tīng)聽(tīng)聽(tīng) try{
聽(tīng)聽(tīng) String account = "stella";//淇敼浠ュ墠鏃х殑鍊?BR>聽(tīng)聽(tīng) String sn = "stella sn";//淇敼浠ュ悗鏂扮殑鍊?BR>聽(tīng)聽(tīng) ModificationItem modificationItem[] = new ModificationItem[1];
聽(tīng)聽(tīng) modificationItem[0] =
聽(tīng)聽(tīng)聽(tīng) new ModificationItem(
聽(tīng)聽(tīng)聽(tīng)聽(tīng) DirContext.REPLACE_ATTRIBUTE,
聽(tīng)聽(tīng)聽(tīng)聽(tīng) new BasicAttribute("sn", sn));//鎵淇敼鐨勫睘鎬?BR>聽(tīng)聽(tīng) ctx.modifyAttributes("uid=" + account, modificationItem);聽(tīng)聽(tīng)聽(tīng) //鎵ц淇敼鎿嶄綔
聽(tīng) }catch(Exception e){
聽(tīng)聽(tīng) System.out.println("Exception in edit():"+e);
聽(tīng) }
聽(tīng)聽(tīng)聽(tīng) }


鍒犻櫎鑺傜偣鎿嶄綔錛?BR>聽(tīng)
聽(tīng)聽(tīng)聽(tīng) public void delete(){
聽(tīng)聽(tīng)聽(tīng)聽(tīng) try{
聽(tīng)聽(tīng) String uid = "stella";
聽(tīng)聽(tīng) ctx.destroySubcontext("uid=" + uid);聽(tīng) //鎸夌収UID鍒犻櫎鏌愪釜鑺傜偣銆傛垜榪樹(shù)笉浼?xì)鍒犻櫎涓涓洰褰曘?BR>聽(tīng)聽(tīng) }catch(Exception e){
聽(tīng)聽(tīng)聽(tīng) System.out.println("Exception in edit():"+e);
聽(tīng)聽(tīng) }
聽(tīng)聽(tīng)聽(tīng) }


鍏抽棴榪炴帴錛?BR>聽(tīng)
聽(tīng)聽(tīng)聽(tīng) public void close(){
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) if(ctx != null)
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) {
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) try
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) {
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) ctx.close();
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) }
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) catch (NamingException e)
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) {
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) System.out.println("NamingException in close():"+e);
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) }
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) }聽(tīng)聽(tīng)聽(tīng)
聽(tīng)聽(tīng)聽(tīng) }
鎴戝LDAP鐨勭悊瑙o細(xì)瀹冩槸鐢ㄤ簬瀵硅祫婧愮殑綆$悊鍜屾湇鍔$殑璁塊棶鍗忚錛屽湪Weblogic騫沖彴涓婄殑JNDI錛堝寘鍚獷JB鍜孌ataSource)閮芥槸鎻愪緵瀹冩潵鎻愪緵鐨勩?BR>姝f槸JNDI鐨勬湇鍔″拰RMI緇撳悎灝卞艦鎴怞2EE騫沖彴涓婂垎甯冨紡鐨勫簲鐢紝鍥犳璇村埌搴曞眰錛岃繕鏄疞DAP鍗忚鐨勬敮鎸併?/P>

my java 2005-10-27 16:34 鍙戣〃璇勮
]]>
ldap渚嬪瓙http://www.tkk7.com/lmsun/articles/17065.htmlmy javamy javaThu, 27 Oct 2005 08:30:00 GMThttp://www.tkk7.com/lmsun/articles/17065.htmlhttp://www.tkk7.com/lmsun/comments/17065.htmlhttp://www.tkk7.com/lmsun/articles/17065.html#Feedback0http://www.tkk7.com/lmsun/comments/commentRss/17065.htmlhttp://www.tkk7.com/lmsun/services/trackbacks/17065.html 杞嚜錛?A >http://www.webasp.net/article/13/12722_print.htm

/* 1. 浠嶭DAP鏈嶅姟鍣ㄤ腑鎻愬彇甯哥敤鍚峜n銆佸彲鍖哄垎鍚嶅瓧uid銆佸瘑鐮乽serpassword銆丒mail鍦板潃mail
* 鍏朵腑浣跨敤Netscape LDAP鏈嶅姟鍣ㄤ綔涓烘祴璇曠幆澧冿紝浣跨敤simple璁よ瘉鏂瑰紡鐧誨綍LDAP鏈嶅姟鍣ㄣ?
* 2. 鐢ㄥ懡鍚嶁榓dmin鈥欏瘑鐮佹槸鈥?鈥欙紝鏁翠釜紼嬪簭浣跨敤SDK1.4.1涓殑JNDI鏍囧噯鎺ュ彛銆?
* 3. 涓轟簡(jiǎn)閰嶅悎DOMINO鏁版嵁搴撳紑鍙戯紝鍋囪鐢ㄦ埛鐧誨綍鏃跺欑殑IP鍦板潃宸茬粡璁板綍鍦ㄤ簡(jiǎn)瀛楁uid涓紝騫剁敤鈥橈紝鈥欓殧寮
* 紼嬪簭鏈緇堝皢鎵撳嵃涓涓寘鎷墍鏈夌敤鎴峰悕錛屽瘑鐮侊紝IP鍦板潃鐨勫瓧絎︿覆銆?
* 4. 鍦ㄥ鐞嗗垎紱葷敤鎴峰悕鍜孖P鍦板潃鐨勬椂鍊欙紝寮曞叆浜?jiǎn)姝e垯琛ㄨ緫旨忕殑鋴社敤銆?
*/
package mm;

//寮曞叆LDAP鐨勫寘
import java.lang.*;
import java.util.Hashtable;
import java.util.Enumeration;
import javax.naming.*;
import javax.naming.directory.*;
//import mm.splitString;

public class JNDISearch{
public static String INITCTX = "com.sun.jndi.ldap.LdapCtxFactory"; //椹卞姩
public static String MY_HOST = "ldap://localhost:389"; //涓繪満鍦板潃鍜岀鍙?
public static String MY_SEARCHBASE = "o=airius.com"; //鍩虹偣鍏ュ彛
public static String MY_FILTER = "(mail=west)"; //榪囨護(hù)鏉′歡
public static String MGR_DN="uid=admin,ou=Administrators,ou=TopologyManagement,o=NetscapeRoot"; //鐢ㄦ埛鍚?
public static String MGR_PW="1"; //瀵嗙爜
public static String MY_ATTRS[] = {/*"cn","userpassword","mail",*/"cn"};
//StringBuffer res = new StringBuffer(); //鐢ㄦ潵杈撳叆鍚嶅瓧錛孖P鍦板潃鐨勫璞?
public static String temp = new String();


public String search() throws Exception{
StringBuffer res = new StringBuffer();
try{
//寤虹珛榪炴帴
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY,INITCTX);
env.put(Context.PROVIDER_URL,MY_HOST);
env.put(Context.SECURITY_AUTHENTICATION,"simple"); //浣跨敤綆鍗曡璇佹潵璁よ瘉鐢ㄦ埛
env.put(Context.SECURITY_PRINCIPAL,MGR_DN);
env.put(Context.SECURITY_CREDENTIALS,MGR_PW);
DirContext ctx = new InitialDirContext(env);

//璁劇疆鏌ヨ鑼冨洿騫跺紑濮嬫煡璇?
SearchControls constraints = new SearchControls();
constraints.setSearchScope(SearchControls.SUBTREE_SCOPE);
NamingEnumeration results = ctx.search(MY_SEARCHBASE,MY_FILTER,constraints);

//鎵撳嵃鏌ヨ緇撴灉
while (results != null && results.hasMore()){
SearchResult sr = (SearchResult) results.next();
//String dn = sr.getName();
String dn = sr.getName()+","+MY_SEARCHBASE;
System.out.println("==============================================");
System.out.println("Distinguished Name is: "+dn);

// 鎵撳嵃鎸囧畾鐨勫瓧孌?/////////////////////////////////////////////////////////////////
Attributes ar = ctx.getAttributes(dn,MY_ATTRS);
if(ar==null) {
//瀵瑰簲鐨剈id娌℃湁澶氫綑鐨勫睘鎬?
System.out.println("Entry "+dn+" has none of the specified attributes\n");
} else {
//寮濮嬫樉紺哄搴旂殑瀛楁
for(int i=0;iAttribute attr = ar.get(MY_ATTRS[i]);
if(attr!=null) {
System.out.print(MY_ATTRS[i]+" : ");
for(Enumeration vals = attr.getAll();
vals.hasMoreElements(); ) {
temp = (String)vals.nextElement();
System.out.println("\t"+temp);
res.append(temp+"/");
}
}
System.out.println("\n");
}
///////////////////////////////////////////////////////////////////////////////////


/* 鎵撳嵃鍏ㄩ儴鐨勫瓧孌?//////////////////////////////////////////////////////////////////
Attributes attrs = sr.getAttributes();
for(NamingEnumeration ne = attrs.getAll();
ne.hasMoreElements(); ){
Attribute attr = (Attribute) ne.next();
String attrID = attr.getID();
System.out.println(attrID+": ");
for(Enumeration vals = attr.getAll();vals.hasMoreElements(); ){
System.out.println("\t"+vals.nextElement());
}
*//////////////////////////////////////////////////////////////////////////////////
}
}
}catch (Exception e){
e.printStackTrace();
System.exit(1);
}
System.out.println(res.toString()+"\n\n\n\n");

//splitString sp = new splitString();
//System.out.println("涓鍏辨湁"+sp.splitString(res.toString()).length+"涓繑鍥?); //鎵撳嵃鏄劇ず緇撴灉錛岃綆楄繑鍥炵殑鏁扮粍鍊?
//return sp.splitString(res.toString());
return res.toString();

}

///////////////////////////////////////////////////////////////////////////////////////////
// 浣跨敤姝e垯琛ㄨ揪寮忔潵鍒嗘嫞鎻愬彇鐨勫瓧絎︿覆 ///////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////

}

my java 2005-10-27 16:30 鍙戣〃璇勮
]]>
浣跨敤 Java 灝?ActiveDirectory 閫茶瑾嶈瓑(杞笘)http://www.tkk7.com/lmsun/articles/16856.htmlmy javamy javaWed, 26 Oct 2005 05:09:00 GMThttp://www.tkk7.com/lmsun/articles/16856.htmlhttp://www.tkk7.com/lmsun/comments/16856.htmlhttp://www.tkk7.com/lmsun/articles/16856.html#Feedback0http://www.tkk7.com/lmsun/comments/commentRss/16856.htmlhttp://www.tkk7.com/lmsun/services/trackbacks/16856.html鐩鎬俊澶ч儴浠界殑浼佹キ涓倓鏄互 Microsoft Exchange Server 2000 鎴栦互涓婄増鏈綔鐐哄叕鍙哥殑 EMail 鏈嶅嫏緋葷當(dāng)錛屽洜鐐?Exchange Server 2000 鍙互蹇熺殑鎻愪緵韜喚瑾嶈瓑銆侀兊浠舵湇鍕欍佽浜嬫泦銆佷互鍙?qiáng)閫氳▕閷勬湇鍕欍傛湰綃囦互涓鍊嬬啊鍠殑紼嬪紡紕艱鏄庡浣曚嬌鐢?Java + JNDI LDAP provider 閫忛亷 ActiveDirectory 閫茶韜喚瑾嶈瓑銆?
  • 鍏跺鎻愪緵韜喚瑾嶈瓑鏈嶅嫏鐨勬槸 ActiveDirecory 鐩寗鏈嶅嫏緋葷當(dāng)錛屽拰 Exchange Server 鏄矑鏈夐棞淇傜殑銆備絾鏄洜鐐哄湪寤虹疆 Exchange Server 鏅傛渻閫忛亷 ActiveDirectory 鐩寗鏈嶅嫏璦橀寗浣跨敤鑰呯浉闂滆硣璦婏紝鎵嶆渻鏈?Exchange Server 鍙互鎻愪緵韜喚瑾嶈瓑鐨勯尟瑕恒傚洜姝や互涓嬭鏄庣殑娓│鍙渶 ActiveDirectory 瀛樺湪鍗沖彲銆?
鍦ㄩ茶娓│鍓嶏紝璜嬪厛瀹夎 >>JNDI LDAP provider 涓﹀畬鎴愭墍闄勭▼寮忕殑綬ㄨ浣滄キ寰岋紝鍗沖彲閫茶娓│銆傛脯瑭︾殑鏂瑰紡鐐猴細(xì) java -cp . test.ADAuth email password 鐪?isLogon 緄愭灉鐐?true 鎴?false 鍗沖彲銆?

瀹屾垚瑾嶈瓑寰岋紝鍙忛亷寤虹珛鐨?鐩寗鏈嶅嫏 鐗╀歡鎿峰彇鏇村鐨?LDAP 鐩寗璦婃伅錛屼笉閬庣洰鍓嶉倓鍦ㄦ脯瑭︿腑...

ADAuth.java 婧愮⒓鍒楄〃

package test;

import javax.naming.*; import javax.naming.directory.*;

import java.util.Hashtable;

/** * 寤虹珛涓鍊嬮忛亷 ActiveDirectory 瑾嶈瓑閬庣殑浣跨敤鑰呯墿浠? * * @author Ada */ public class ADAuth {

/** * @return 瑾嶈瓑鏄惁閫氶亷 */ publicstaticboolean login( String email, String password ) {

/** LDAP 鐠板璁婃暩 */ Hashtable env = null;

/** 鐩寗 */ DirContext ctx = null;

/** 瑾嶈瓑鐙鎱?*/ boolean logged = true;

env = new Hashtable(); env.put( Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory"); // 璦樺緱淇敼 ActiveDirectory 瀵﹂殯鎻愪緵涓繪浣嶅潃 env.put( Context.PROVIDER_URL, "ldap://active.directory.server:389"); // 浣跨敤 username + password 閫茶瑾嶈瓑 env.put( Context.SECURITY_AUTHENTICATION, "simple" ); // 浣跨敤鑰呯殑瀹屾暣 email 錛屼篃灝辨槸 AD 涓殑 ${sAMAccountName}@your.domain.name env.put( Context.SECURITY_PRINCIPAL, email ); // 瑾嶈瓑鐣舵檪鐨勫瘑紕? env.put( Context.SECURITY_CREDENTIALS, password );

try { // 鑻ュ彲寤虹珛鐩寗鐗╀歡錛屽嵆琛ㄧず瀹屾垚鐧誨叆 ctx = new InitialDirContext( env ); logged = true; } catch( AuthenticationException authe ) { // 鎺堟瑠澶辨晽 logged = false; System.out.println( authe ); } catch( Exception e ) { // 涓嶆槑閷 System.out.println( e ); } finally { try { // 璦樺緱鎶婄洰閷勯棞闁? ctx.close(); } catch ( Exception Ignore ) { } }

return logged; }

/** * 涓誨煼琛岀▼搴? * @author Ada */ publicstatic void main( String[] args ) {

// 涓瀹氳 email + 瀵嗙⒓鎵嶈兘鐧誨叆 if( args.length == 2 ) { System.out.println( "is Logon? : " + login( args[0], args[1] ); } else { System.out.println( "EMail/Password not initialed!" ); } } }

鍙︿竴渚?

/*
聽(tīng)*聽(tīng)ADAuth.java
聽(tīng)*
聽(tīng)*聽(tīng)Created聽(tīng)on聽(tīng)2004騫?鏈?9鏃?聽(tīng)涓婂崍聽(tīng)11:37
聽(tīng)*/
import聽(tīng)java.util.Hashtable;
import聽(tīng)javax.naming.Context;
import聽(tīng)javax.naming.AuthenticationException;
import聽(tīng)javax.naming.directory.DirContext;
import聽(tīng)javax.naming.directory.InitialDirContext;
/**
聽(tīng)*
聽(tīng)*聽(tīng)@author聽(tīng)聽(tīng)ajax
聽(tīng)*/
public聽(tīng)class聽(tīng)ADAuth聽(tīng){
聽(tīng)聽(tīng)聽(tīng)聽(tīng)DirContext聽(tīng)ctx聽(tīng)=聽(tīng)null;
聽(tīng)聽(tīng)聽(tīng)聽(tīng)Hashtable聽(tīng)env聽(tīng)=聽(tīng)null;
聽(tīng)聽(tīng)聽(tīng)聽(tīng)/**聽(tīng)Creates聽(tīng)a聽(tīng)new聽(tīng)instance聽(tīng)of聽(tīng)ADAuth聽(tīng)*/
聽(tīng)聽(tīng)聽(tīng)聽(tīng)public聽(tīng)ADAuth(String聽(tīng)acct,String聽(tīng)password)聽(tīng){
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)env聽(tīng)=聽(tīng)new聽(tīng)Hashtable();
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)env.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory");
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)/*
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)*聽(tīng)Ldap://寰屽彲鎺ctive聽(tīng)directory鐨剆erver鍚嶇ū鎴杋p,port鍙互涓嶇敤key,闋愯ō鐐?89
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)*/
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)env.put(Context.PROVIDER_URL,"Ldap://192.168.1.16:389");
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)env.put(Context.SECURITY_AUTHENTICATION,聽(tīng)"simple");
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)/*
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)*聽(tīng)鍏徃綞插煙鐐郝?tīng)company.com.tw
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)*
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)*聽(tīng)鎵浠ユ湁閫欎竴孌德?tīng)DC=company,DC=com,DC=tw
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)*/
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)env.put(Context.SECURITY_PRINCIPAL,"cn="+acct+",cn=users,DC=鍏徃AD鐨勭恫鍩熷悕");//,DC=com,DC=tw");
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)env.put(Context.SECURITY_CREDENTIALS,password);
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)try{
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)ctx聽(tīng)=聽(tīng)new聽(tīng)I(yíng)nitialDirContext(env);
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)System.out.println("椹楄閫氶亷");
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)}catch(AuthenticationException聽(tīng)authe){
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)System.out.println("椹楄澶辨晽");
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)}catch(Exception聽(tīng)e){
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)System.out.println(e);
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)}finally{
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)try{
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)ctx.close();
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)}catch(Exception聽(tīng)I(yíng)gnore){}
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)}
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)}
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)public聽(tīng)static聽(tīng)void聽(tīng)main(String[]聽(tīng)args){
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)new聽(tīng)ADAuth("甯寵櫉","瀵嗙⒓");
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)}
}



my java 2005-10-26 13:09 鍙戣〃璇勮
]]>
JNDI鍩虹http://www.tkk7.com/lmsun/articles/16782.htmlmy javamy javaTue, 25 Oct 2005 09:23:00 GMThttp://www.tkk7.com/lmsun/articles/16782.htmlhttp://www.tkk7.com/lmsun/comments/16782.htmlhttp://www.tkk7.com/lmsun/articles/16782.html#Feedback0http://www.tkk7.com/lmsun/comments/commentRss/16782.htmlhttp://www.tkk7.com/lmsun/services/trackbacks/16782.html闃呰鍏ㄦ枃

my java 2005-10-25 17:23 鍙戣〃璇勮
]]>
主站蜘蛛池模板: 亚洲中文字幕无码一区二区三区 | 中文字幕乱码亚洲无线三区| 久久免费精彩视频| 国产亚洲精品激情都市| 永久在线观看免费视频| 亚洲一区二区三区四区在线观看| 女同免费毛片在线播放| 国产在线播放免费| 亚洲AV无码国产精品永久一区| 日韩免费一区二区三区| 男人j进女人p免费视频| 亚洲精品美女久久久久99| 久久精品无码专区免费东京热| 亚洲一区二区三区免费视频| 在线观看免费为成年视频| 老司机午夜精品视频在线观看免费| 国产aⅴ无码专区亚洲av麻豆| 国产免费牲交视频| 免费播放在线日本感人片| 色婷婷综合缴情综免费观看| 国产国拍亚洲精品mv在线观看| 中文字幕在线免费观看| 久久精品免费一区二区三区| 亚洲a∨无码男人的天堂| 亚洲精品第五页中文字幕| 免费a级毛片大学生免费观看| 国产免费网站看v片在线| 一区在线免费观看| 亚洲国产成人精品电影| 中文字幕专区在线亚洲| 亚洲中文字幕伊人久久无码| 免费在线观看视频网站| 国产亚洲蜜芽精品久久| 亚洲免费视频网站| 亚洲国产专区一区| 91在线视频免费播放| 一级做a爰性色毛片免费| 又硬又粗又长又爽免费看| 一级做a爰性色毛片免费| a在线免费观看视频| 暖暖免费在线中文日本|