Я устанавливаю сервер LDAP и настраиваю Jenkins для принятия LDAP для аутентификации. В параметрах Jenkins у меня странное поведение с параметром Root DN
.
Документация говорит:
Корневой DN
Для аутентификации пользователя и определения ролей, данных ему, Дженкинс выполняет несколько запросов LDAP.
[...]
Но на практике серверы LDAP поддерживают обширный индекс данных, поэтому указывать это поле необходимо редко - просто позвольте Дженкинсу понять это, поговорив с LDAP.
Если вы укажете это значение, поле обычно будет выглядеть примерно так: dc = acme, dc = org.
Странное поведение : Если я не укажу параметр, мой пользователь не найден. Остальные параметры имеют значения по умолчанию.
LDAP для меня новичок, поэтому я, вероятно, делаю что-то не так. Я создал дерево LDAP, используя slapd
. Я создал одного пользователя adenoyelle
под узлом People
что я тоже создал. видеть ldapsearch
результат ниже:
root@myserver:~# ldapsearch -xLLL -b 'dc=acme,dc=com'
dn: dc=acme,dc=com
objectClass: top
objectClass: dcObject
objectClass: organization
o: acme.com
dc: acme
dn: cn=admin,dc=acme,dc=com
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: admin
description: LDAP administrator
dn: ou=people,dc=acme,dc=com
cn: people
objectClass: organizationalRole
objectClass: top
ou: people
dn: uid=adenoyelle,ou=people,dc=acme,dc=com
objectClass: account
objectClass: top
objectClass: simpleSecurityObject
uid: adenoyelle
Если я позволю Root DN
пусто, мой пользователь не может пройти аутентификацию. Но это сработает, если я дам это значение для параметра:
ou = люди, dc = acme, dc = com
Что я делаю не так? Я предполагаю, что мои узлы LDAP неправильные, но я не могу понять, почему. Может проблема с objectClass
ценности?
Если вы опустите это значение, клиент LDAP запросит у сервера корневую DSE, используемую в качестве базового DN. Если slapd настроен неправильно, ldapsearch не сможет получить для этого значение и, следовательно, не выполнит запрос.
Подробности здесь: Из OpenLDAP не возвращается Root DSE, цитируя:
Это фактически зарегистрировано как ошибка # 427842 против Ubuntu 9.10 (кармический).
Чтобы исправить это, скопируйте в fixRootDSE.ldif следующее:
dn: olcDatabase={-1}frontend,cn=config changetype: modify add: olcAccess olcAccess: to dn.base="" by * read olcAccess: to dn.base="cn=subschema" by * read
И выполнить
sudo ldapmodify -Y EXTERNAL -H ldapi:/// -f fixRootDSE.ldif
Это должно дать анонимный доступ к корневому DSE.