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 использовать информацию в вашем каталоге.