posts - 23,comments - 12,trackbacks - 0


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;
 
    //是否能login
    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("連入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;
 }
}
 
posted on 2005-10-31 08:57 my java 阅读(2418) 评论(1)  编辑  收藏 所属分类: JNDI

FeedBack:
# re: LDAP实例
2007-11-18 11:20 | 雪浪
真的感谢你的分享与给与!!!  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航: