import java.util.Hashtable;
import javax.naming.Context;
import javax.naming.NamingException;
import javax.naming.directory.DirContext;
import javax.naming.directory.InitialDirContext;
/**
* java验证AD域用户登录
* 传入用户名(userName)和密码(password)进行验证,验证成功返回用户名
* @author guob
*
*/
public class TestAD {
public String check(String userName,String password) {
String host = "10.156.129.72"; // AD服务器IP(一共2个AD域服务器,备份的效果,另一个是10.156.129.95)
String port = "389"; // 端口
String DN_OU = "OU=Capitaland China,OU=CCH,DC=capitaland,DC=com,DC=cn" ;
String DN_CN = "CN="+userName;
String url = new String("ldap://" + host + ":" + port);
Hashtable env = new Hashtable();
DirContext ctx;
env.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory");
//env.put(Context.SECURITY_AUTHENTICATION, "none");
env.put(Context.SECURITY_AUTHENTICATION, "simple");
env.put(Context.PROVIDER_URL, url);
//env.put(Context.SECURITY_PRINCIPAL, DN_CN+","+DN_OU);
env.put(Context.SECURITY_PRINCIPAL, userName);
env.put(Context.SECURITY_CREDENTIALS, password);
try {
ctx = new InitialDirContext(env);// 初始化上下文
System.out.println("认证成功");
ctx.close();
return userName; //验证成功返回name
} catch (javax.naming.AuthenticationException e) {
System.out.println("认证失败");
System.out.println("e.getExplanation():"+e.getExplanation());
System.out.println("e.getMessage():"+e.getMessage());
return "";
}catch (Exception e) {
System.out.println("认证出错:" + e);
return "";
}
}
public static void main(String[] args) {
TestAD T = new TestAD();
System.out.println("Result:"+T.check("lcms", "11111111"));
System.out.println("Result:"+T.check("shicn4", "P@ssw0rd"));
System.out.println("Result:"+T.check("shicn4", "wertyuio"));
}
}