Как фильтровать и ограничивать атрибуты группового объекта в LDAP - PullRequest
0 голосов
/ 03 октября 2019

Я хочу получить пользователей группы в LDAP с заданным фильтром (например, uid = "test *") и лимитом (только 10 пользователей в результатах).

Объект группывыглядит следующим образом.

cn=testRole,ou=Groups,dc=WSO2,dc=ORG

Этот объект имеет несколько атрибутов-членов, представляющих пользователей роли "testRole".

Теперь я использую следующий запрос для извлечения всех пользователей в группе.

(&(objectClass=groupOfNames)(cn=testRole))

И member устанавливается в качестве возвращаемого атрибута.

Когда я запускаю запрос, все 10000 пользователей в testRole извлекаются (как10000 значений атрибутов-членов).

Теперь

  1. Как ограничить количество значений атрибутов-членов?
  2. Как отфильтровать значения атрибутов-членов путем примененияфильтр по значению uid?

Заранее спасибо!

Я попытался установить возвращаемый атрибут как member;range=0-99, но похоже, что он работает только с AD, а не сLDAP. Мне нужно решение, которое будет работать с LDAP, независимо от того, AD это или нет.

1 Ответ

1 голос
/ 03 октября 2019
  1. Я думаю, что это невозможно, как с openLDAP. Идея заключается в том, чтобы сначала установить оверлей memberof, чтобы вы могли получать пользовательские записи - не путем запроса группы и извлечения всех атрибутов member, а путем непосредственного запроса пользователей, которые memberOf этой группы. В этой ситуации вы сможете разбить результаты на страницы с нужным диапазоном. Не говоря уже о том, что вы также сможете фильтровать по конкретному члену, например. (&(memberOf=<groupDN>)(uid=<uid>)) (о чем я думаю в 2-). См. Эти ссылки:

  2. Вы можете использовать следующий фильтр:

    (&(objectClass=groupOfNames)(cn=testRole)(member=uid=<uid>,ou=people,dc=example,dc=com))
    

    Но помните, что этот запрос просто захватывает запись groupOfNames с cn = testRole и содержит член с dn= ..., добавив сюда фильтр member, можно было бы просто предотвратить совпадение записи, если <uid> члена не существует, любой совпадающий uid ничего не изменит.

Я думаю, вы также можете сохранить запрос как есть, итерирование атрибутов элементов по диапазону от x до y с использованием java не должно быть слишком сложным, все зависит от того, что вам нужноделать с этим.

...