Назад | Перейти на главную страницу

Jenkins / Hudson - группа LDAP * поиск * не работает

Я пытаюсь получить Дженкинс для аутентификации пользователей через наши активные группы каталогов.

Если я вставлю пользователей, они будут правильно найдены. Если я вставлю названия групп, они не будут найдены.


Редактировать: Методом проб и ошибок я выяснил, что аутентификация через группы действительно работает, то есть после добавления группы KS-Soft в список, пользователи в этой группе может войти в систему. тем не мение, в списке, куда вводятся имена пользователей и групп, Дженкинс пытается отобразить значок, указывающий, является ли он пользователем или группой. Значок пользователя отображается правильно, но значок группы всегда является значком ошибки.

Таким образом, может показаться, что Jenkins может аутентифицировать пользователей через членство в группе, но не может проверить, существует ли данная строка имени группы в каталоге. Возможно ли это технически? (Может быть, просто неправильно отображены значки.)


Настройки Jenkins следующие: (примечание: mydomain и com имена пользователей разные, остальные точные значения)

Server  : ldap://ks-dc01.mydomain.com:389
root DN : dc=mydomain,dc=com
User Search Base : ou=KSUser
User Search Filter : userPrincipalName={0}
Group search base : ou=KSGroups
Manager DN : CN=Placeholder Martin,OU=Benutzer,OU=KSUser,DC=mydomain,DC=com
Manager Password : *****

С этой настройкой я ввожу пользователя martin.placeholder@mydomain.com в список, и тогда Дженкинс сможет найти этого пользователя, и я могу войти в систему.

Однако я не могу заставить Дженкинса разрешить имена групп. я использую AD Explorer чтобы подтвердить, что мои группы на самом деле ниже OU=KSGroups.

У меня здесь одна группа отображается как CN=KS-Soft в AD Explorer и имеет memberатрибут, в котором перечислены все интересующие меня пользователи. (Пользователь martin.placeholder@mydomain.com указан как CN=Placeholder Martin,OU=Benutzer,OU=KSUser,DC=mydomain,DC=com в этом attibute.)

Я пробовал эту строку для группы:

Обратите внимание, что в справке Jenkins по поводу Group search base:

Один из поисков, которые Дженкинс выполняет в LDAP, - это найти список групп для пользователя.

Это поле определяет запрос, который нужно запустить для идентификации организационной единицы, содержащей группы. Запрос почти всегда - «ou = groups», поэтому попробуйте сначала, хотя это поле можно оставить пустым для поиска от корневого DN.

Если попытки входа в систему приводят к ошибке «Превышен административный предел» или аналогичной ошибке, попробуйте сделать этот параметр как можно более конкретным для вашей структуры LDAP, чтобы уменьшить объем запроса. Если ошибка не исчезнет, ​​возможно, потребуется отредактировать WEB-INF/security/LDAPBindSecurityRealm.groovy файл, который включен в jenkins.war. Измените строку на: groupSearchFilter = "(| (member={0}) (uniqueMember={0}) (memberUid={1}))"; для запроса только поля, используемого в вашем LDAP для членства в группе, например: groupSearchFilter = "(member={0})"; Затем перезапустите Jenkins и повторите попытку входа.

Я пробовал оба значения в этом файле, и ни одно из них не работает.

была такая же проблема сегодня с Jenkins 2. LDAP настроен на работу, и я могу войти в систему как пользователь AD, я могу добавить пользователя AD в матрицу, но когда я добавляю группу в матрицу, для этой группы отображается сообщение «пользователь / группа не найдена» .

Наконец исправил это после https://wiki.jenkins-ci.org/display/JENKINS/LDAP+Plugin#LDAPPlugin-Groupsearchbase

Исправление заключается в добавлении (& (cn={0}) (objectclass=group) ) как фильтр группового поиска.

По умолчанию Дженкинс использует (& (cn={0}) (| (objectclass=groupOfNames) (objectclass=groupOfUniqueNames) (objectclass=posixGroup)))

В нашей группе AD есть только

objectClass: top
objectClass: group

Сегодня утром я на собственном горьком опыте узнал, что Дженкинс ЧУВСТВИТЕЛЬНО ПРИНИМАЕТСЯ, когда дело касается названий групп AD.
Просто добавлю это в качестве ответа на тот случай, если кто-то в отчаянии выдергивает свои волосы.
Это совершенно неочевидно, поскольку имена групп AD обычно нигде НЕ чувствительны к регистру.

Попробуйте сделать свой groupSearchBase полное определение, то есть "ou = KSGroups, dc = mydomain, dc = com". Кроме того, имена групп почти наверняка не будут заканчиваться на «@ mydomain.com» (если вы не назвали их таким образом специально).

Я бы предложил использовать «ldapsearch» из инструментов openldap или аналогичный инструмент командной строки для Windows, чтобы опробовать варианты groupSearchFilter пока вы не найдете тот, который дает желаемые результаты, а затем импортируйте его в файл .groovy.