Ldap Query для возврата поддерева, только если родительское условие истинно

Я пытаюсь написать поисковый фильтр, который возвращает результаты вложенного дерева, только если родительское дерево удовлетворяет определенному условию... возможно ли это?

У меня есть следующая структура:

ou=ftp
   domainName=example.com
       ou=users
          uid=firstUser
          uid=secondUser
   domainName=otherdomain.com
       ou=users
          uid=othertUser
          uid=otherdUser

В domainName = example.com у меня есть атрибут accountStatus, который может быть "активным" или "неактивным".

Я хочу вернуть пользователей, только если accountStatus "активен".

Я попытался сделать составной фильтр следующим образом:

(&(&(objectclass=mailDomain)(accountStatus=active))(&(uid=*)(objectclass=posixAccount)))

objectclass = mailDomain и accountStatus = active принадлежит родительскому дереву. Запрос не возвращает никаких результатов, потому что он ищет все атрибуты на одном уровне.

Спасибо за помощь.

1 ответ

Хотя вы можете настроить пространство поиска как поддерево, список или даже одну запись, фильтр поиска всегда применяется к каждой отдельной записи набора результатов. Это обычно влияет на структуру информационного дерева каталога, а также на схему.

Держитесь подальше от "нормализации" и сделайте атрибуты доступными при входе пользователя вместо какого-либо родительского узла. Таким образом, вы значительно увеличиваете общую стоимость вашего каталога, позволяя простым клиентам LDAP использовать информацию в вашем каталоге.

Другие вопросы по тегам