Я хочу написать запрос LDAP, который проверяет, является ли пользователь (sAMAccountName) членом определенной группы. Можно ли сделать так, чтобы я получил либо 0, либо 1 результативную запись?
Думаю, я могу получить все группы для пользователя и проверить каждую на соответствие, но мне было интересно, могу ли я упаковать их в одно выражение LDAP.
Любые идеи?
Спасибо
Ответы:
Здесь вы сможете создать запрос с этим фильтром:
и когда вы запускаете это на своем сервере LDAP, если вы получаете результат, ваш пользователь yourUserName действительно является членом группы CN = YourGroup, OU = Users, DC = YourDomain, DC = com
Попробуйте и посмотрите, работает ли это!
Если вы используете C # / VB.Net и System.DirectoryServices, этот фрагмент должен помочь:
Предупреждение: это проверяет только непосредственное членство в группах и не проверяет членство в так называемой «основной группе» (обычно «cn = Users») в вашем домене. Он не обрабатывает вложенное членство, например, пользователь A является членом группы A, которая является членом группы B - тот факт, что пользователь A действительно является членом группы B, здесь также не отражается.
Марк
источник
Если вы используете OpenLDAP (например, slapd), который широко распространен на серверах Linux, вы должны включить наложение memberof, чтобы иметь возможность сопоставлять его с фильтром с помощью атрибута (memberOf = XXX).
Кроме того, после включения наложения атрибуты memberOf для существующих групп не обновляются (вам нужно будет удалить существующие группы и добавить их снова). Если вы включили оверлей для начала, когда база данных была пустой, все должно быть в порядке.
источник
Я бы добавил к ответу Марка еще одну вещь: атрибут memberOf не может содержать подстановочные знаки, поэтому вы не можете сказать что-то вроде «memberof = CN = SPS *» и ожидать, что он найдет все группы, начинающиеся с «SPS».
источник
Вы должны установить свою базу запросов на DN соответствующего пользователя, а затем установить свой фильтр на DN группы, членом которой вы хотите знать, являются ли они. Чтобы узнать, является ли jdoe членом офисной группы, ваш запрос будет выглядеть примерно так:
Если вы хотите увидеть ВСЕ группы, членом которых он является, просто запросите в поиске только атрибут memberof, например:
источник