LDAPSoft AD Browser SQL Фильтр запросов LDAP на основе UserPasswordExpiryTimeComputed - PullRequest
0 голосов
/ 29 января 2020

Мы используем браузер LDAPSoft Ad для получения списка учетных записей службы AD. Мы пытаемся отфильтровать сервисные учетные записи, это все, пароль никогда не истекает. Мы пробовали запрос ниже и возвращали 0 результатов (мы установили флажок опции вложенного дерева, чтобы перечислить дочерние узлы). И мог видеть значение UserPasswordExpiryTimeComputed как ноль. Пожалуйста, помогите нам решить проблему.

SELECT from  OU=AAA,OU=VVV,OU=VVV,DC=DDD,DC=COM where msDS-UserPasswordExpiryTimeComputed  NOT NULL

Спасибо за продвижение.

1 Ответ

1 голос
/ 29 января 2020

Атрибут msDS-UserPasswordExpiryTimeComputed является составным атрибутом, что означает, что он рассчитывается во время его запроса. Значения не сохраняются. Из-за этого вы не можете использовать созданные запросы в запросах. Вы можете читать их только с учетной записи, которую вы уже нашли.

Если учетная запись настроена так, что пароль никогда не истекает, атрибут userAccountControl обновляется. Это битовый флаг, означающий, что каждый бит в двоичном представлении значения является флагом включения / выключения с различным значением.

Требуемая настройка - ADS_UF_DONT_EXPIRE_PASSWD, которая показана на документация в виде шестнадцатеричного значения 0x00010000. Это двоичное значение 1 0000 0000 0000 0000‬. Поэтому, когда 17-й бит равен 1, пароль никогда не истекает. Когда 17-й бит равен 0, срок действия пароля истекает. Однако вы можете использовать десятичный эквивалент 65536‬ в запросе.

Я обычно использую нотацию запроса LDAP, которая будет выглядеть следующим образом:

(&(objectClass=user)(userAccountControl:1.2.840.113556.1.4.803:=65536))

Это найдет все учетные записи пользователей. где пароль установлен, чтобы никогда не истек. Это странное число описывается здесь как идентификатор объекта (OID) LDAP_MATCHING_RULE_BIT_AND. Это побитовый оператор AND, который проверяет, установлен ли определенный бит.

Я не проверял это, но в записи SQL вы, вероятно, использовали бы &, то есть побитовый оператор И , например:

WHERE userAccountControl & 65536 = 65536
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...