Аутентификация LDAP для простого веб-приложения Java [база данных не используется] - PullRequest
0 голосов
/ 08 июня 2018

Я создал простое веб-приложение на Java, использующее сервлет и JSP для своей организации, в которое должна быть включена аутентификация LDAP.Тот, кто имеет действительный идентификатор моей организации, должен иметь доступ к веб-приложению.Перепробовал много примеров от Google, но не смог этого добиться.

Пожалуйста, предоставьте любой исходный код для достижения этой цели легко.

Всегда получаю следующее исключение, хотя учетные данные действительны.

javax.naming.AuthenticationException: [LDAP: error code 49 - Invalid Credentials]

Фрагмент из моего кода,

public static boolean authenticateJndi(String username, String password) throws Exception{
    Properties props = new Properties();
    props.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
    props.put(Context.PROVIDER_URL, "ldap://URL");
    props.put(Context.SECURITY_PRINCIPAL, "uid=admin,ou=system,o=example.com");//adminuser - User with special priviledge, dn user
    props.put(Context.SECURITY_CREDENTIALS, "password");//dn user password


    InitialDirContext context = new InitialDirContext(props);

    SearchControls ctrls = new SearchControls();
    ctrls.setReturningAttributes(new String[] { "givenName", "sn","memberOf" });
    ctrls.setSearchScope(SearchControls.SUBTREE_SCOPE);

    NamingEnumeration<javax.naming.directory.SearchResult> answers = context.search("o=example.com", "(uid=" + username + ")", ctrls);
    javax.naming.directory.SearchResult result = answers.nextElement();

    String user = result.getNameInNamespace();

    try {
        props = new Properties();
        props.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
        props.put(Context.PROVIDER_URL, "ldap://LDAPSERVER:PORT");
        props.put(Context.SECURITY_PRINCIPAL, user);
        props.put(Context.SECURITY_CREDENTIALS, password);

   context = new InitialDirContext(props);
    } catch (Exception e) {
        return false;
    }
    return true;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...