Подключение java к Active-Directory - ошибка 49, данные 5 - PullRequest
0 голосов
/ 11 апреля 2020

Я пытаюсь подключиться к AD (2012 R2) с java (8u241) и получаю эту ошибку

javax.naming.AuthenticationException: [LDAP: error code 49 - 80090308: LdapErr: DSID-0C0903C8, comment: AcceptSecurityContext error, data 5, v2580 ]

Ошибка 49, это означает, что пользователь / пароль неверен. Но это также может означать, что вход был заблокирован. Я выяснил это с помощью приложения ADExplorer (от sysinternals.com, Microsft): Моя проблема на ServerFault - вход в систему заблокирован из-за использования ip вместо имени . Active-Directory ответит неверным пользователем / паролем, когда хост - это ip вместо Domain-Name.

Код ошибки sub - 5. Я не нашел никакой документации по этому коду 5 нигде. (НЕ 52e. Я получаю 52e, когда ввожу неправильное имя пользователя)

Что это за ошибка (данные 5 LDAP Err 49) и как я могу ее исправить?

Мой код:

public void authenticate(String username, String password) throws Exception {
    @SuppressWarnings("UseOfObsoleteCollectionType")
    java.util.Hashtable<Object, Object> env = new java.util.Hashtable<>();
    env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
    String url = "LDAP://" + serverName.toUpperCase()+ '.' + domainName.toUpperCase();
    System.out.println("url = '" + url + "'");
    env.put(Context.PROVIDER_URL, url);

    String sp = takeUntil(domainName.toUpperCase(), '.') + "\\" + username;
    System.out.println("sp = '" + sp + "'");

    env.put(Context.SECURITY_AUTHENTICATION, "simple");
    env.put(Context.SECURITY_PRINCIPAL, sp);
    env.put(Context.SECURITY_CREDENTIALS, password.getBytes(StandardCharsets.UTF_8));

    DirContext ctx = new InitialDirContext(env); // javax.naming.AuthenticationException here
    ctx.close();
}

Результат (извиняется на сервере - Win Server 2012 R2):

C:\Users\Administrator\Desktop>java -jar ActiveDirectory.jar array.is blackhole ARRAY\muaaz P0987654321q
url = 'LDAP://BLACKHOLE.ARRAY.IS'
sp = 'ARRAY\muaaz'
javax.naming.AuthenticationException: [LDAP: error code 49 - 80090308: LdapErr: DSID-0C0903C8, comment: AcceptSecurityContext error, data 5, v2580 ]

Ответы [ 2 ]

0 голосов
/ 10 мая 2020

Я решил проблему, удалив ОС и установив другую сборку.

0 голосов
/ 11 апреля 2020

Число после «данных» составляет Windows код системной ошибки, который вы можете найти в документации Microsoft. Этот конкретный элемент находится на первой странице и означает «доступ запрещен».

Это скорее ошибка авторизации, чем аутентификация. Это означает: «Я знаю, кто вы, и вам не разрешено это делать».

Я не знаю точно, какие обстоятельства приведут к этой ошибке. Возможно, простая привязка отключена на вашем домене. Возможно, учетная запись, которую вы используете, имеет какие-то ограничения. Точно сказать не могу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...