Java: запрос информации Active Directory с минимальной информацией о пользователе - PullRequest
2 голосов
/ 22 сентября 2009

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

В Java есть ли способ получить эту информацию, используя только имя пользователя и имя / адрес сервера домена? Я также открыт для сторонних пакетов для этого. Кроме того, вы можете предоставить мне (или указать) информацию о том, что нужно настроить в AD, чтобы разрешить это.

Надеюсь, это имеет смысл. Я не гуру рекламы, поэтому чем больше информации, тем лучше.

Ответы [ 2 ]

6 голосов
/ 22 сентября 2009

Ваша проблема с необходимостью войти в систему в первую очередь потому, что AD не разрешает анонимные запросы. Прежде чем вы сможете запросить базу данных, вы должны войти в систему («связать» в терминах LDAP) как действительный пользователь с достаточными правами для выдачи запроса.

Если администратор AD желает, вы можете попросить его создать специального пользователя (мы называем наш «ldapquery»), которому разрешено связывать и запрашивать базу данных. ИД пользователя и пароль для этого пользователя станут значениями конфигурации в вашем коде.

1 голос
/ 23 сентября 2009

Хорошо, так подробно излагая то, что мне сказали другие, и обширное исследование, которое я должен был провести с приведенными здесь подсказками, кажется, что я просто использовал бы своего «специального пользователя» в качестве информации для входа в мой код, прозрачный для пользователь, а затем выполнить запрос, используя свои учетные данные. Итак: в коде свяжите с помощью «специального пользователя», затем выполните запрос с текущим пользователем в качестве параметра запроса (sAMAccountName = username).

Спасибо всем за ваш вклад.

...