Я пытаюсь аутентифицировать пользователя с использованием LDAP.Однако пароли SSHA хешируются в LDAP.Как можно аутентифицировать uid и пароль, поскольку я посылаю незашифрованный пароль в ldap.Вот мой код
Properties initialProperties=new Properties();
initialProperties.put( Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
initialProperties.put(Context.PROVIDER_URL,"ldap://localhost:10389");
initialProperties.put(Context.SECURITY_AUTHENTICATION,"simple");
initialProperties.put(Context.SECURITY_PRINCIPAL,"uid=admin,ou=system");
initialProperties.put(Context.SECURITY_CREDENTIALS,"secret");
NamingEnumeration<?> results = null;
try
{
DirContext ctx = new InitialDirContext(initialProperties);
System.out.println(ctx+"222 success");
SearchControls controls = new SearchControls();
controls.setSearchScope(SearchControls.SUBTREE_SCOPE);
String filter = "(&(objectClass=inetOrgPerson)(uid=" + uID + ")(userPassword="+pwd+")";
results = ctx.search("", filter, controls);
if (results.hasMore()) {
System.out.println("User found");
return true;
} else {
System.out.println("User not found");
return false;
}
}
catch (Exception e)
{
return false;
}
Пользователь sysout всегда не найден, так как он не может сопоставить открытый текст с хеш-паролем ssha?Как преобразовать пароль в SSHA перед отправкой в ldap? Это правильный способ решения этой проблемы?