LINUX.ORG.RU

Как в ldap(Open ldap) можно получить дерево organizationalUnit?

 ,


0

1

Допутим есть категории

-Работник
--Работник лесного хозяйства
--Работник ит отрасли
---Фронтенд
---Бекенд
--Работник рыбного промысла

Написал код

List<String> nameList = ldapTemplate.search("", "(objectClass=organizationalUnit)",
    new AttributesMapper<String>() {
    @Override
    public String mapFromAttributes(Attributes attributes) throws NamingException {
      String group = "";
      Attribute groupAttr = attributes.get("ou");
      Attribute userAttr = attributes.get("cn");
      if (groupAttr != null) {
        group = groupAttr.get() + "\n";
      }
      return group;
    }

В целом нормально работает, все группы отображает, но теряется иерархия, тоесть дерево вырождается в список.

Работник, Работник лесного хозяйства, Работник ит отрасли, Фронтенд, Бекенд, Работник рыбного промысла

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

(objectClass=organizationalUnit) Этот фильтр выбирет все группы, а если бы можно выбрать только дочерние и не глубже я бы мог сделать иерархию

Смотрел по инструкции https://social.technet.microsoft.com/wiki/contents… Но там не нашел возможности, возможно кому-то пригодится.

Ищи DN у своих записей, DN каждой записи будет отражать иерархию.

LDAP не возвращает иерархическую структуру, он возвращает набор полей разного типа, а что ты там с ними будешь делать - это твоё дело, либо делай группы (groupofnames) и добавляй в них, и ищи группы.

zgen ★★★★★
()
Последнее исправление: zgen (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.