网上找到LDAP用户密码验证的方法,输入正确的密码验证通过,错误的密码便会验证失败,这是符合要求的,但是当密码我给空字符串(“”)的时候竟然也能验证通过,请问原因是什么?我想实...
网上找到LDAP用户密码验证的方法,输入正确的密码验证通过,错误的密码便会验证失败,这是符合要求的,但是当密码我给空字符串(“”)的时候竟然也能验证通过,请问原因是什么? 我想实现的是密码必须匹配才验证通过,空串跟真正密码不等需要返回验证失败的结果,请问该如何修改,谢谢大家~~
补充:不能通过首先判断password.equals(""),因为我们的应用程序中密码是可以为空的,完全靠LDAP来验证空串跟密码是否匹配就可以。
public boolean validateUserForAD(String username,String password){
String host = "172.16.10.190";
String port = "389";
String domain = "domain200";
{
Hashtable env = new Hashtable();
DirContext ctx;
String user = domain + "\\" + username;
String passwd = password;
env.put(Context.SECURITY_AUTHENTICATION, "simple");
env.put(Context.SECURITY_PRINCIPAL, user);
env.put(Context.SECURITY_CREDENTIALS, passwd);
String url = new String("ldap://" + host + ":" + port);
env.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL, url);
try {
ctx = new InitialDirContext(env);
ctx.close();
System.out.println("验证成功!");
return true;
} catch (NamingException err) {
err.printStackTrace();
System.out.println("验证失败!");
return false;
}
}
}
请大家注意我上面的补充,谢谢~·
展开