Как я могу вызвать Active Directory с помощью проверки подлинности Windows без запроса имени пользователя и пароля?

Вы можете увидеть пример доступа к LDAP с использованием класса InitialLdapContext в Java в следующих сообщениях:

http://forums.sun.com/thread.jspa?threadID=603815

http://forums.devshed.com/ldap-programming-76/active-directory-services-using-java-api-89586.html

Для этого требуется ввести логин и пароль (даже если учетная запись службы или пользователь, запускающий Java-процесс, уже вошли в систему, чтобы иметь возможность работать).

Поскольку учетная запись пользователя или службы уже вошла в систему - они уже могут запускать команды активного каталога, подобные приведенным ниже, без имени пользователя или пароля:

dsquery user -samid "login" |dsget user -samid -email -display

Так зачем Java нужен пароль для входа, если этот запрос уже доступен для Windows? Косуке намекает, что это не обязательно в этом сообщении в заключении:

https://community.oracle.com/blogs/kohsuke/2008/06/12/more-active-directory-integration-java

Как мы можем вызвать Active Directory в Java без:

  • с использованием логина или пароля (под учетной записью, которая уже вошла в систему)?
  • выполнение команды в командной строке?

person hawkeye    schedule 18.06.2009    source источник


Ответы (1)


Вероятно, это происходит потому, что

  • Вы используете библиотеки / контексты LDAP для связи с Active Directory, и эти библиотеки должны поддерживать другие типы LDAP (считается ли AD даже LDAP?)
  • Это требуется поставщикам этих реализаций. Связь LDAP осуществляется через поставщиков, которые предоставляют реализацию, а не в реальной среде выполнения Java.
  • Пароль текущего пользователя (я надеюсь) на самом деле не предоставляется Windows для Java.

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

В другом сообщении блога по этой теме Когда дело доходит до Active Directory, Кохсуке немного подробнее рассказывает о том, почему дела обстоят именно так в мире Java.

person matt b    schedule 18.06.2009