LDAP-запрос с вложенной группой
Я пытаюсь построить запрос ldap к MS Active Directory. Я обнаружил, что для этого существует тип LDAP_MATCHING_RULE_IN_CHAIN. Что приводит к следующему синтаксису:
(&(sAMAccountName=Benna)(memberof:1.2.840.113556.1.4.1941:=CN=Group1,OU=Root,DC=domain,DC=local))
Проблема в следующем:
Запрос * перечисляет в сети первую вложенную группу.
В моем примере Group1 имеет следующие группы участников:
- Администраторы домена
- Члены домена
- Домен Компьютеры
И Бенна входит в группу членов домена, но запрос не дает мне результата *.
Когда я меняю фильтр на
(&(objectClass=user)(memberof:1.2.840.113556.1.4.1941:=CN=Group1,OU=Root,DC=domain,DC=local))
Я вижу, что запрос перечисляет только членов группы "Администраторы домена"*.
Так вот почему это не соответствует моему запросу выше.
Есть причина, почему это происходит?
* Протестировано с adsiedit.msc
РЕДАКТИРОВАТЬ:
хорошо - кажется, что это причина
https://support.microsoft.com/en-us/kb/275523
но возможно ли построить запрос к вложенной группе также для атрибута primaryGroupID? Или есть какой-нибудь способ иметь один запрос ldap, где вы можете использовать, чтобы определить, является ли пользователь членом группы (которая также может иметь вложенные группы)?
Спасибо Томас
3 ответа
Хорошо - кажется, что ограничение уровня доменного леса ниже, чем в 2003 году.
https://support.microsoft.com/en-us/kb/275523
После смены режима леса на 2003 он должен работать. Я изменился, но в настоящее время это не работает... подожду несколько минут и надеюсь, что это решение.
Это довольно раздражает делать со старыми инструментами командной строки, но модуль ActiveDirectory Powershell, который вы получаете с инструментами администрирования Remore Server, имеет простой способ вернуть все вложенные члены группы:
Get-ADGroupMember "groupname" -recursive
Вот статья в kb, которая объясняет команду: https://technet.microsoft.com/de-de/library/ee617193.aspx
Это работает, если ваша AD по крайней мере на сервере 2008 R2.
Определение членства во вложенной группе может быть сложным с чистыми запросами LDAP. Обратите внимание, что memberOf является составным атрибутом. Также обратите внимание, что primaryGroupID - это только идентификатор. Хотя MMC будет отображать основные группы на вкладке членства учетной записи, отличительное имя объекта фактически не помещается в атрибут участника этой группы.
Как отмечает megamorf, вам необходимо рекурсивно запрашивать информацию о членстве в группе для каждой группы. Продукт моей компании, Carbon, представляет собой веб-инструмент управления LDAP, который, помимо прочего, может отображать вложенные группы в виде графика. Так как это веб-интерфейс, вы можете использовать его из коробки Linux (или Mac или Windows), если у вас есть поддерживаемый браузер. Проверьте это на https://www.steelhive.com/. Вы можете скачать бесплатную демоверсию. Он поставляется как OVA / виртуальное устройство, ориентированное на VMware ESXi 5+.