Поиск пользователя и связанных групп по LDAP в одном поиске - PullRequest
0 голосов
/ 30 ноября 2018

Новое в LDAP.Наш LDAP устроен так: люди и группы.У людей есть пользовательская информация, такая как имя, uid и почта.Группы имеют имя группы и поле с несколькими членами, значение которого имеет вид cn = First Last, cn = people, dc = comic, dc = com, в котором перечислены пользователи, которые являются членами группы.

В настоящее время начинается с useridи пароль, выполняя два поиска: 1) Получить пользователя, выполнив поиск в базовом домене People по uid = value.Затем от пользователя получают имя и фамилию.2) Поиск в базовом домене групп на основе member = cn = First Last, cn = People, dc = comic, dc = com и перебор списка объектов групп, возвращенных в поле имени группы.

Am justИнтересно, есть ли способ сделать все это в одном поиске или два запроса необходимы?

Ответы [ 2 ]

0 голосов
/ 30 ноября 2018

Это возможно при условии, что вы реализуете Обратное наложение обслуживания членства в группах .

Чтобы определить, в какие группы входит запись, без выполнения дополнительных поисков, memberOf оверлей - это именно то, что вам нужно.

Наложение memberof обновляет атрибут (по умолчанию memberOf) всякий раз, когда происходят изменения в атрибуте членства (по умолчанию member) записей объектного класса (по умолчанию groupOfNames), настроенного для запуска обновлений.Таким образом, он обеспечивает обслуживание списка групп, членом которого является запись, когда обычное обслуживание групп выполняется путем изменения членов в записи группы.

Вы можете найти этот СерверСообщение о неисправности полезно как.

Как только у вас есть готовый к использованию атрибут memberOf, вам, возможно, придется вручную запускать ldapmodify для каждой записи группы, но только один раз, чтобы все записи member s могли быть подготовлены с соответствующимигруппа dn в соответствующем атрибуте memberOf.

Наконец, чтобы выполнить поиск членства в группе для данного пользователя, вам нужно просто выполнить поиск записи пользователя и выполнить итерацию атрибута memberOf, чтобы получить dn группы.

0 голосов
/ 30 ноября 2018

К сожалению, вы не можете делать то, что хотели бы за одну операцию.

Кроме того, то, что вы делаете, не всегда будет работать.Вместо того, чтобы извлекать имя и фамилию пользователя, вы должны извлечь их отличительное имя (атрибут dn) и выполнить поиск группы на основе этого.Имена и фамилии могут быть изменены в LDAP и могут произойти из-за брака / развода / т. Д.

...