Подключение к LDAP (Active Directory) с помощью NTLM

В настоящее время я использую пользователя и пароль в качестве учетных данных для подключения к ldap (для поиска в этом AD).

Мой код выглядит так:

env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL, ...);
env.put(Context.SECURITY_AUTHENTICATION, "simple");
env.put(Context.SECURITY_PRINCIPAL, ...);
env.put(Context.SECURITY_CREDENTIALS, ...);
env.put("com.sun.jndi.ldap.connect.timeout", ...);

try {
  ctx = new InitialLdapContext(env, null);
}
catch (NamingException e) {
    System.out.println("error")
}

Я хочу изменить этот код, чтобы он не использовал пароль пользователя и пароль в качестве учетных данных для доступа к LDAP. Я хочу, чтобы он аутентифицировался с использованием NTLM.

Как мне это сделать? Можете ли вы привести пример?


person Matan    schedule 13.08.2012    source источник


Ответы (2)


https://sourceforge.net/projects/javaldapntlmbind/

Решение использует UnboundID Java LDAP SDK, а для обработки NTLM — Java-библиотеку JCIF от samba.org. Благодаря использованию JCIF он не зависит от платформы и не требует запуска в Windows.

person Alex    schedule 20.12.2013

Не случайно, JGSS не поддерживает NTLM как механизм SASL. Используйте Kerberos (GSS-API) с SASL.

person Michael-O    schedule 13.08.2012
comment
Пробовал безуспешно. Не могли бы вы ответить на мой вопрос по адресу: stackoverflow.com/questions/12025998/ ? Спасибо! - person Matan; 19.08.2012
comment
Дважды спрашивать об одном и том же не нужно! Я не собираюсь переключаться между этими вопросами. - person Michael-O; 19.08.2012