Получение только активных учетных записей в активном каталоге - PullRequest
2 голосов
/ 01 марта 2012

Я хотел бы отправить строку поиска в Active Directory Microsoft (с использованием Java), которая гласит: «Дайте мне всех пользователей, у которых включена учетная запись».

В настоящее время у меня есть:

String search_string = "(& (objectClass = user))";

но, конечно, это только дает мне пользователей на AD. Хотелось бы также получить только тех, кто активен. Это на Java, но я не думаю, что это имеет значение для LDAP.

Ответы [ 2 ]

9 голосов
/ 01 марта 2012

Чтобы получить включенных пользователей, вы должны проверить атрибут userAccountControl и, в частности, его второй бит, который соответствует флагу ACCOUNTDISABLE. MS KB 305144 .

Это можно сделать с помощью фильтра LDAP следующим образом:

(!(userAccountControl:1.2.840.113556.1.4.803:=2))

Проверьте эту статью о Фильтрация по битовым полям , чтобы узнать, как это работает.

Также вы должны знать, что учетные записи компьютеров наследуются от типа пользователя, поэтому вы должны добавить условие в свой фильтр, чтобы отфильтровать их. Вы также можете проверить бит для флага NORMAL_ACCOUNT (512), чтобы отфильтровать другие виды учетных записей.

Я не знаю, что вы подразумеваете под активными пользователями, поэтому не могу вам помочь.

4 голосов
/ 01 марта 2012

Насколько я понимаю, критерий Active-Directory позволяет проверить, является ли учетная запись активной или нет.

Как использовать флаги UserAccountControl для управления свойствами учетной записи пользователя дает вам состояние учетной записи, вас может заинтересовать:

  • ACCOUNTDISABLE (2)
  • LOCKOUT (16)

Чтобы использовать это поле в фильтре, вы можете использовать LDAP_MATCHING_RULE_IN_CHAIN ​​OID, как описано в Статья Microsoft Синтаксис поискового фильтра .

(&(objectCategory=person)(!(userAccountControl:1.2.840.113556.1.4.804:=18)))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...