LDAP сравнить атрибуты - PullRequest
7 голосов
/ 19 мая 2011

Я хотел бы отфильтровать все объекты LDAP, где CN не равен sAMAccountName.Поэтому я написал следующий запрос, который, к сожалению, не работает и не соответствует RFC:

(!(cn=sAMAccountName))

Кто-нибудь знает, как получить желаемую функциональность?

BestС уважением Томас

Ответы [ 3 ]

2 голосов
/ 26 февраля 2016

Фильтры LDAP не позволяют использовать значение другого атрибута для сравнения фильтров. Вы должны получить запись и сравнить оба значения.

1 голос
/ 05 июля 2013

Если вы находитесь в среде Windows, вы можете использовать для этого язык выражений PowerShell.

Get-ADUser -Filter * -Server my.domain.name -Properties CN |
  Where-Object {$_.CN -ne $_.sAMAccountName}

Это довольно дорогой запрос, поскольку он возвращает каждый пользовательский объект, для которого PowerShell выполняет обработку,но это работает.

1 голос
/ 03 августа 2012

(!(cn=sAMAccountName)) является «RFC-совместимым», потому что правая часть утверждения считается значением атрибута cn.

Использование этого фильтра приведет к тому, что все записи будут возвращены в ответе на поиск, где присутствует значение атрибута cn, а правило соответствия для cn возвращает false для значения без учета регистра samaccountname ( при условии, что правило соответствия атрибута cn не было изменено по сравнению с опубликованным стандартом). Результаты будут зависеть от:

  • ограничение по времени на сервере
  • ограничение размера сервера
  • контроль доступа к серверу

Возможно, вы хотели использовать

  • cn=value-of-samaccount-name
...