ldap 用户验证失败,在线等急急急!!!
验证代码如下:
String account = "Manager"; //binddn
String password = "pwd"; //bindpwd
String root = "dc=scut,dc=com"; // root
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL, "ldap://localhost:389/" + root);
env.put(Context.SECURITY_AUTHENTICATION, "simple");
env.put(Context.SECURITY_PRINCIPAL, "cn="+account+","+root );
env.put(Context.SECURITY_CREDENTIALS, password);
try {
// 链接ldap
ctx = new InitialDirContext(env);
System.out.println("认证成功");
} catch (javax.naming.AuthenticationException e) {
System.out.println("认证失败");
} catch (Exception e) {
System.out.println("认证出错:");
e.printStackTrace();
}
运行之后总是报ldap:49用户找不到的错误,
如果把env.put(Context.SECURITY_PRINCIPAL, "cn="+account+","+root );
env.put(Context.SECURITY_CREDENTIALS, password);注释掉就能通过匿名验证,这是什么原因?请高手指点。