Чтобы проверить комбинацию имени пользователя и пароля с помощью ldap, выполните следующие действия:
- подключитесь к серверу ldap с учетной записью masteruser
- найдите пользователя для проверки
- открыть другое соединение, используя InitialLdapContext и данную комбинацию.
Это прекрасно работает для меня, пока я не заметил, что некоторые правильные комбинации не будут работать .(в основном это учетные записи, которые были созданы совсем недавно)
Есть ли способ, когда пользователь указан в каталоге ldap, но ему не разрешено подключаться к самому серверу ldap ?!Мой текущий код просто использует masteruser для поиска имени пользователя для проверки, но, в конце концов, это просто новое соединение с проверкой комбинации имени пользователя и пароля.
Должен ли я соединиться с masteruser, а затем связать с комбинацией имени пользователя и пароля?
это часть, где я проверяю комбинацию:
static boolean CheckLDAPConnection(String user_name, String user_password) {
try {
Hashtable<String, String> env1 = new Hashtable<String, String>();
env1.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
env1.put(Context.SECURITY_AUTHENTICATION, "simple");
env1.put(Context.SECURITY_PRINCIPAL, user_name);
env1.put(Context.SECURITY_CREDENTIALS, user_password);
env1.put(Context.PROVIDER_URL, ip);
try {
//Connect with ldap
new InitialLdapContext(env1, null);
//Connection succeeded
System.out.println("Connection succeeded!");
return true;
} catch (AuthenticationException e) {
//Connection failed
System.out.println("Connection failed!");
e.printStackTrace();
return false;
}
}
catch (Exception e) {
}
return false;
}