Последние несколько дней я отчаянно читал официальные / пользовательские руководства, чтобы правильно настроить мой openldap, чтобы пользователи могли входить в веб-приложение для управления проектами (а именно Redmine). С учетом сказанного, позвольте мне поделиться базовой настройкой среды, с которой я имею дело.
Веб-приложение (я):
Redmine, Я отчаянно читал официальные / пользовательские руководства, чтобы правильно настроить мой openldap, чтобы пользователи могли входить в веб-приложение для управления проектами (а именно Redmine). С учетом сказанного, позвольте мне поделиться базовой настройкой среды, с которой я имею дело.
Веб-приложение (я):
Redmine, Я отчаянно читал официальные / пользовательские руководства, чтобы правильно настроить мой openldap, чтобы пользователи могли входить в веб-приложение для управления проектами (а именно Redmine). С учетом сказанного, позвольте мне поделиться базовой настройкой среды, с которой я имею дело.
Веб-приложение (я):
Redmine, Phpldapadmin
LDAP:
Openldap
После установки я предпринял следующие шаги, чтобы переконфигурировать свой ldap, чтобы лучше отразить ldap, используемый в производстве (поскольку весь этот redmine + ldap еще не в производстве )
- Остановлен сервис slapd и удален cn = config.ldif из /etc/ldap/slapd.d
Modified /usr/share/slapd/slapd.conf на это:
include /etc/ldap/schema/core.schema включить /etc/ldap/schema/cosine.schema включить /etc/ldap/schema/nis.schema включить /etc/ldap/schema/inetorgperson.schema pidfile /var/run/slapd/slapd.pid argsfile /var/run/slapd/slapd.args loglevel none путь к модулю / usr / lib / ldap moduleload back_mdb размерность 500 инструмент-резьба 1 бэкэнд mdb база данных mdb суффикс "o = testcompany.com" rootdn "cn = admin, o = testcompany.com" каталог "/ var / lib / tc-ldap" rootpw "пароль" индекс objectClass eq индекс uid eq index ou eq индекс по умолчанию eq, sub lastmod на КПП 512 30 доступ к attrs = userPassword, shadowLastChange by dn = "cn = admin, o = testcompany.com" написать от анонимной авторизации самостоятельно написать автор: * none доступ к dn.base = "" по * чтению доступ к * by dn = "cn = admin, o = testcompany.com" написать автор: * читать
После этого slaptest -f /usr/share/slapd/slapd.conf -F /etc/ldap/slapd.d сгенерировал мой новый cn = config.ldif
Set соответствующий пользователь / группа для нового cn = config.ldif с chown -R openldap: openldap /etc/ldap/slapd.d/
Запустил службу slapd и проверил, есть ли ldap работает или нет. Так как это было, и я мог получить к нему доступ с помощью phpldapadmin, я добавил организационную единицу (ou = sales) , все коды стран и импортировал 3000 пользователей (с помощью ldapadd ). Теперь мой DIT выглядит следующим образом
- o = testcompany.com - ou = продажи - AD + uid = 123456, c = AD, ou = sales, o = testcompany.com + ...
и это здорово, это именно то, как должно выглядеть, однако я заметил, что запись cn = admin, o = testcompany.com не существует, хотя она использовала конфигурация по умолчанию после того, как я установил openldap.
В Redmine я настроил и протестировал ldap-аутентификацию . Он работает правильно (он может одновременно подключаться к моему ldap, и если я хочу добавить нового пользователя и выбрать для него ранее настроенную аутентификацию ldap, я могу даже выбрать из записей, которые есть в моем ldap, что тоже здорово)
Однако (вот где моя проблема), когда я пытаюсь войти в Redmine с пользователем, которого я только что создал (с аутентификацией ldap), я всегда получаю ошибку Invalid credentials (хотя это работает как очарование, когда я вхожу в систему с любой другой учетной записью, создано с помощью Simple Authentication )
Эти события привели меня к мысли, что ошибка находится в конфигурации LDAP. После еще нескольких часов / дней возни с ACL s и dpkg-reconfigure slapd (и даже очисткой-переустановкой slapd и ldap-utils) я все еще не могу выйти за рамки этого точка. И еще одна небольшая информация, после dpkg-reconfigure slapd и создания нескольких пользователей по умолчанию dc = example, dc = com , я могу заставить их войти в Redmine. (и даже появляется cn = admin, o = testcompany.com ...)
Ниже я прикреплю несколько вещей, которые я пробовал. Я надеюсь, что кто-нибудь может помочь мне несколькими советами о том, где я сошел с тропы (почему-то я чувствую, что упускаю очевидное).
Что я пробовал до сих пор:
1. modify the default slapd.conf file, and repeat the process i've written above 2. create a completely new one 3. a lot of different ways to add/modify the ACL 4. read through a lot of mailing list, similar problems on redmine forums, and openldap mailing lists, still no success (i can paste a lot of links from my .txt if you need it)
Наконец выяснил, в чем проблема.
Прежде всего, я забыл включить индексы: objectClass и mail в свой slapd.conf , и это было одной из причин.
Во-вторых, по некоторым причинам, даже если я перенастроил свой ldap (а также переиндексировал его), мои изменения не отобразились.
Оказывается, после шага 5. (после запуска службы) также необходимо перезагрузить вашу службу slapd sudo service slapd reload
или ( sudo service slapd force-reload
, если необходимо), чтобы slapd, чтобы не отставать от изменений.
Это решило мою проблему. теперь каждый может пройти аутентификацию с помощью ldap auth :)
Пожалуйста, попробуйте изменить корень dn на dc=testcompany,dc=com
удалить точку '...'
Точка "..." - это разделитель для другой части ldap DN.
спецификация
https://tools.ietf.org/html/rfc1779#section-2.2
также попробуйте указать ldapv3 в файле slapd.conf.
который распознает o= как ou=
https://tools.ietf.org/pdf/rfc3494.pdf