Разработка LDAP Java - PullRequest
       22

Разработка LDAP Java

1 голос
/ 02 августа 2011

У меня есть три вопроса, связанных с LDAP и Java.

  1. Есть ли способ найти вновь созданных пользователей в активном каталоге Windows, используя Java?Теперь я получаю всех пользователей из цикла активных каталогов через них и использую атрибут whencreated для идентификации новых пользователей.

  2. Так же, как и предыдущий, есть ли способ найти пользователейатрибуты, которые недавно изменились в активном каталоге (например, изменилось имя или электронная почта), используя Java?В настоящее время я идентифицируюсь, используя атрибут whenchanged.

  3. Есть ли способ определить, заблокирована ли / разблокирована ли информация о пользователе, или он активен / деактивирован таким образом?

Ответы [ 3 ]

2 голосов
/ 02 августа 2011

LDAP поиск фильтры должны дать вам то, что вам нужно.

  1. Используйте (&(objectClass=user)(whenCreated>=20110701000000.0Z)), чтобы получить учетные записи пользователей, созданные 1 июля 2011 года или после этой даты.
  2. Используйте (&(objectClass=user)(whenChanged>=20110701000000.0Z)) для изменения учетных записей пользователей 1 июля 2011 года или после этой даты.
  3. Используйте (&(objectClass=user)(whenChanged>=20110701000000.0Z)(userAccountControl:1.2.840.113556.1.4.803:=2)) для изменения учетных записей 1 июля 2011 года или после этой даты, которые отключены. Используйте побитовый фильтр идентификатор правила сопоставления , чтобы проверить наличие определенных userAccountControl флагов .

Если эти запросы будут выполняться часто, вам может потребоваться index атрибуты whenCreated и whenChanged.

1 голос
/ 02 августа 2011

Active Directory поддерживает уведомление клиентов LDAP об изменении с помощью постоянных поисков (однако обратите внимание, что ограничение на 5 поисков на соединение). Лично я никогда не использовал это, но есть примеры здесь , здесь и здесь (в частности, обратите внимание, что Active Directory, очевидно, использует другой OID для этих поисков. Обратите внимание, что мониторинг ADD s довольно прост, но изменения потребуют некоторой работы со стороны вашего Java-приложения, так как Active Directory отправляет уведомления об изменениях при любой операции изменения, независимо от атрибута.

@ raddeman абсолютно прав в отношении блокировок / разблокировок и включен / отключен. Простые побитовые операции с userAccountControl помогут вам извлечь эти значения (например, userAccountControl & 2 == 2 означает, что пользователь отключен.

1 голос
/ 02 августа 2011

1) LDAP - это протокол, в котором вы не можете (что я знаю) отсортировать результат, не делая его вручную (в вашем случае, в Java). Еще одна вещь, которую вы можете найти - это значение, которое вы искали, которое хранится в его собственном поле, например msSFU30MaxUidNumber в Active Directory, чтобы получить самый большой UNIX UID в AD.

РЕДАКТИРОВАТЬ: Как отмечает @EJP, вы можете указать сортировку, если LDAP-сервер поддерживает это. В Java, посмотрите на javax.naming.ldap.SortControl

2) Я думаю, что это то же самое, что и 1.

3) Да, посмотрите на поле userAccountControl. Он содержит значения, которые можно найти здесь: http://support.microsoft.com/kb/305144, например, ACCOUNTDISABLE (2).

...