Запросить Active Directory / LDAP, найти пользователей во вложенном организационном подразделении

Я настраиваю аутентификацию LDAP в TeamCity 7.1.2 в домене Windows (Active Directory).

В основном это работает (я могу войти в систему со своим пользователем домена!), Но каждый пользователь во всей компании может войти в систему.
-> Теперь я пытаюсь ограничить доступ только для разработчиков.

Я нашел

Поэтому мне просто нужно заменить CN=Group1,CN=Users,DC=example,DC=com на группу LDAP, в которой находится мой пользователь.
Но запросы к LDAP для меня совершенно в новинку, поэтому я не могу определить правильный синтаксис.

Мой пользователь здесь:

Снимок экрана Active Directory

So it's:

CompanyName.de/CompanyName/IT/Entwickler/

"CompanyName", "IT" и "Entwickler" являются организационными единицами.
Я понимаю, что синтаксис будет следующим:

OU=Entwickler,OU=IT,OU=CompanyName,DC=CompanyName,DC=de

Когда я помещаю это в файл конфигурации TeamCity, я не могу войти в систему, и TeamCity записывает это в свои файлы журнала:

Искать в LDAP: base = 'DC = CompanyName, DC = de', filter = '(& (sAMAccountName = MyUser) (memberOf = OU = Entwickler, OU = IT, OU = CompanyName, DC = CompanyName, DC = de)) ', scope = 2, attributes = [sAMAccountName, visibleName] привело к ошибке

а также:

Не удалось войти в систему для пользователя MyUser: javax.security.auth.login.LoginException: [LDAP: код ошибки 32 - 0000208D: NameErr: DSID-031001CD, проблема 2001 (NO_OBJECT), данные 0, наилучшее соответствие: 'DC = CompanyName , DC = de '

Что я делаю неправильно?

ПРИМЕЧАНИЕ.
Возможно мой запрос верен, и это проблема в TeamCity.
(версия, которую я использую, имеет иметь
немного issues, касающиеся LDAP, но они получают другие сообщения об ошибках, чем я)
Возможно, я опубликую это в системе отслеживания проблем TeamCity, но раньше я хотел убедитесь, что ошибка не возникает из-за неправильного запроса LDAP, отсюда и вопрос.


person Christian Specht    schedule 29.11.2012    source источник


Ответы (1)


memberOf ищет группу, а не подразделение. Вы должны создать группу для ограничения доступа, добавить в нее подходящих пользователей и указать отличительное имя группы в фильтре. Следует отметить, что простой фильтр memberOf = {DN} не учитывает членство во вложенной группе.

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

person Sean Hall    schedule 29.11.2012
comment
Не могли бы вы привести мне пример того, как будет выглядеть запрос, если я изменю базовое DN поиска на OU и уберу параметр memberOf из поиска? Как я уже сказал, я новичок в LDAP. Спасибо! - person Christian Specht; 30.11.2012
comment
@ChristianSpecht Запрос LDAP состоит из трех основных компонентов: основы поиска, фильтра поиска и области действия. В вашей ошибке я вижу Поиск в LDAP: base = 'DC = CompanyName, DC = de'. Не знаю, откуда это, можете ли вы установить базу на другой строке, может быть, teamcity.users.login.base? - person Sean Hall; 30.11.2012
comment
Я установил базу в файле конфигурации, но ни CN=Users,DC=CompanyName,DC=de, ни CN=Users,DC=CompanyName,DC=de не работали. Итак, я попробовал ваше второе решение (установите базовое DN для OU), и это сработало! - person Christian Specht; 30.11.2012
comment
@ Альфред: это teamcity.users.base=OU=IT,OU=CompanyName,DC=CompanyName,DC=de. Теперь, если модератор преобразовал ваш ответ в комментарий ... - person Christian Specht; 19.12.2013