Поиск группы LDAP Active Directory по базе данных без детализации для включения нескольких OU - PullRequest
0 голосов
/ 12 марта 2019

Я пытаюсь получить все группы AD для аутентифицирующего пользователя в моем приложении Java, где группы происходят из двух разных организационных единиц. Пока что я могу получить только один набор групп или другой, используя Spring Security и установив базу поиска либо:

OU=RoleGroups,OU=UEU,OU=rEU,DC=ah1,DC=ad,DC=megacorp,DC=com

или

OU=RoleGroups,OU=MOR,OU=rEU,DC=ah1,DC=ad,DC=megacorp,DC=com

Они возвращают результат, только когда я использую их с простым поисковым фильтром:

(member=CN=Adam,OU=Users,DC=ah1,DC=ad,DC=megacorp,DC=com)

Spring Security с библиотекой spring-security-ldap позволяет мне сделать только один запрос, в противном случае мне придется переопределить сторонние библиотечные классы, чтобы сделать мой второй вызов.

Я только что пытался понять, могу ли я применить что-либо из этих двух SO вопросов:

Синтаксис корневого запроса LDAP для поиска более одного определенного подразделения

Spring LDAP-аутентификация с многопользовательским OU и множественным доступом CNs

но решение все еще ускользает от меня. Насколько я могу судить, изменив все на группы вместо пользователей, я должен сделать следующее:

Использовать порт 3268 вместо 389

Использовать поисковую базу DC=ah1,DC=ad,DC=megacorp,DC=com

Использовать поисковый фильтр (&(objectCategory=RoleGroup)(objectclass=group)(member={0}))

и это должно запустить мой запрос как «поиск в глобальном каталоге». Я не могу заставить это работать - никакие результаты не возвращаются - с любым изменением моей базы поиска от нулевой до строки нулевой длины к вышеупомянутому, и изменяя мой поисковый фильтр, мы надеемся, разумно.

Существует также метод поиска в глобальном каталоге AD, использующий какую-то числовую ссылку на userAccountControl и т. Д., Но при глубоком погружении в Microsoft AD далеко не ясно, существует ли аналогичный атрибут groupControl.

Я вижу подразделение организации под названием RoleGroups, и это Active Directory, но я не знаю, должен ли я ссылаться на него в моем поисковом фильтре, как показано выше:

&(objectClass=group)(member={0}))

или

&(objectCategory=RoleGroup)(objectclass=group)(member={0}))

где у меня есть objectClass, objectclass, objectCategory или objectcategory и ничего, кроме проб и ошибок, чтобы направлять меня - и до сих пор это все ошибки.

Полное отсутствие возвращаемых групп при попытке поиска из базы поиска DC=megacorp,DC=com с использованием простого фильтра вызывает у меня подозрение, что я, возможно, настроил что-то не так. Но что это, я не знаю. Я установил доступные свойства конфигурации Spring, такие как searchSubtree=true и derefLink=true

Ответы [ 2 ]

1 голос
/ 13 марта 2019

Атрибут member имеет синтаксис DN, поэтому он ожидает, что DN всего пользователя, а не только CN, будет соответствовать члену в группе.

0 голосов
/ 13 марта 2019

Я решил углубиться в проблему, используя инструмент Microsoft AD Client dsquery.

Изначально у меня была проблема с квадратными скобками в различающемся имени, например:

$ dsquery user -samid craxyz01
"CN=Bloggs\, Joe (SUPERHERO AGSC),OU=Users,OU=Client,DC=ah1,DC=ad,DC=megacorp,DC=com"

Чтобы получить dsquery для ответа, мне пришлось снять скобки:

$ dsquery * "DC=ah1,DC=ad,DC=megacorp,DC=com" -filter "(&(objectClass=group)(member=CN=Bloggs\, Joe \28SUPERHERO AGSC\29,OU=Users,OU=Client,DC=ah1,DC=ad,DC=megacorp,DC=com))"

Этот запрос детализирует все организационные единицы ниже DC=ah1,DC=ad,DC=megacorp,DC=com, поэтому он собирает все группы, будь то OU=UEU или OU=MOR.

Так что теперь в моем приложении Java с

база поиска группы = DC=ah1,DC=ad,DC=megacorp,DC=com

и фильтр поиска группы = (&(objectClass=group)(member={0}))

довольно очевидно, что Spring делает что-то не так, может быть, не выбрав косую черту /, но этотрудно сказать из-за отражения, которое это делает.Он вызывает LdapEncoder.filterEncode(), который выглядит так, как будто он должен работать.

Благодаря https://superuser.com/questions/1107493/dsquery-parameters

Я опубликую новый вопрос непосредственно о безопасности пружин и убедимся, что он отправляет ссылку.

...