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 { //環(huán)境設(shè)定 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){ //設(shè)定要取得的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; } }