ldap проверить комбинацию имени пользователя и пароля через Java - PullRequest
3 голосов
/ 22 сентября 2011

Чтобы проверить комбинацию имени пользователя и пароля с помощью ldap, выполните следующие действия:

  1. подключитесь к серверу ldap с учетной записью masteruser
  2. найдите пользователя для проверки
  3. открыть другое соединение, используя 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;
}

Ответы [ 2 ]

3 голосов
/ 23 сентября 2011

Найдя DN пользователя, вы должны добавить эти учетные данные в среду первого контекста, а затем попытаться восстановить соединение ().Это делает операцию связывания LDAP.

0 голосов
/ 23 сентября 2011

Мы проверяем пользователя и пароль по LDAP, используя непосредственно его пользователя и пароль для создания соединения LDAP. Если соединение может быть создано, использование разрешено. Затем поиск разрешения пользователя в LDAP с тем же соединением (если нет разрешения не может получить доступ к приложению в отношении пользователя проверяется). Не может быть лучшим подходом, но использование главного пользователя для создания первого соединения LDAP невозможно в двухуровневом приложении (проблемы безопасности при хранении главного пользователя в клиентском графическом интерфейсе), как в нашем случае.

Может быть, вы можете изменить свой подход.

У этого подхода есть некоторые недостатки, такие как создание новых пользователей, поэтому необходимо предоставить специальные разрешения на LDAP «администратору» пользователя GUI для создания других пользователей, но не администрировать LDAP ...

...