Microsoft AD - Отрицательный фильтр OU= LDAP

Microsoft AD - Отрицательный фильтр OU= LDAP

Я пытаюсь создать фильтр LDAP для MS AD, который фильтрует пользователей на основе некоторых OU (в моем случае исключение определенного OU, но также и включение не работает):

(&(cn=Testuser1)(|(ou:dn:=Included1)(ou:dn:=Included2)))
(&(cn=Testuser1)(!(ou:dn:=Excluded)))

не работает. Я проверил (ou:dn:=Included1), что перечисляет фактические объекты "папки" (отмеченные * ниже), но не пользователей ниже (с DN, содержащим ou). Я не могу использовать базу поиска, потому что она должна найти несколько:

ou=Included1,dc=example,dc=com *
  cn=Testuser1,ou=Included1,dc=example,dc=com +
ou=Included2,dc=example,dc=com
  cn=Testuser1,ou=Included2,dc=example,dc=com +
ou=Excluded,dc=example,dc=com
  cn=Testuser1,ou=Excluded,dc=example,dc=com - 

В моих двух примерах фильтров выше я хочу найти две записи Testuser1 (отмеченные знаком +), а не три (отмеченные знаком -).

Но на самом деле он не соответствует ни одному. Фактические записи пользователя не имеют других различий в атрибутах, по которым я могу фильтровать.

Похоже, что ou:dn:=синтаксис " " находит только те объекты, у которых первый компонент имени является искомым, а не любые другие...?

решение1

Фильтр отрицательного компонента OU=, по-видимому, не работает с Microsoft LDAP, поскольку это сконструированный атрибут (спасибо @semicolon за ссылку).

Однако можно использовать полное значение атрибута, например:

(&(CN=%u)(!(distinguishedName=CN=%u,OU=Excluded,dc=example,dc=com)))

Связанный контент