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;
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 );
}
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){
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 阅读(2433)
评论(1) 编辑 收藏 所属分类:
JNDI