Аутентификация пользователя с использованием LDAP и Java - PullRequest
0 голосов
/ 01 мая 2019

Я пытаюсь аутентифицировать пользователя с использованием 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? Это правильный способ решения этой проблемы?

1 Ответ

0 голосов
/ 01 мая 2019

Вы должны использовать ContextSource.getContext(principal, credentials) для аутентификации пользователя.

Получает экземпляр DirContext, прошедший проверку подлинности с использованием предоставленных участника и учетных данных. Обычно используется для простой аутентификации. Обратите внимание, что этот метод никогда не будет использовать пул Java LDAP, даже если этот экземпляр настроен для этого.Это необходимо для того, чтобы изменения пароля в целевом каталоге вступили в силу как можно скорее.

По соображениям безопасности пароль хэшируется, для аутентификации пользователей всегда следует обращаться к серверу LDAP, это одно изэто основные цели.

...