Последние несколько дней я отчаянно читал официальные / пользовательские руководства, чтобы правильно настроить свой openldap, чтобы пользователи могли входить в веб-приложение для управления проектами (а именно Redmine). С учетом сказанного, позвольте мне поделиться базовой настройкой среды, с которой я имею дело.
Веб-приложение (-а):
Redmine, Phpldapadmin
LDAP:
Openldap
После установки я предпринял следующие шаги, чтобы перенастроить свой ldap, чтобы лучше отразить ldap, используемый в производстве (поскольку весь этот redmine + ldap еще не находится в производстве)
Изменено /usr/share/slapd/slapd.conf к этому:
include /etc/ldap/schema/core.schema
include /etc/ldap/schema/cosine.schema
include /etc/ldap/schema/nis.schema
include /etc/ldap/schema/inetorgperson.schema
pidfile /var/run/slapd/slapd.pid
argsfile /var/run/slapd/slapd.args
loglevel none
modulepath /usr/lib/ldap
moduleload back_mdb
sizelimit 500
tool-threads 1
backend mdb
database mdb
suffix "o=testcompany.com"
rootdn "cn=admin,o=testcompany.com"
directory "/var/lib/tc-ldap"
rootpw "password"
index objectClass eq
index uid eq
index ou eq
index default eq,sub
lastmod on
checkpoint 512 30
access to attrs=userPassword,shadowLastChange
by dn="cn=admin,o=testcompany.com" write
by anonymous auth
by self write
by * none
access to dn.base="" by * read
access to *
by dn="cn=admin,o=testcompany.com" write
by * read
Впоследствии slaptest -f /usr/share/slapd/slapd.conf -F /etc/ldap/slapd.d который породил мой новый cn = config.ldif
Установите соответствующего пользователя / группу на новый cn = config.ldif с участием chown -R openldap: openldap /etc/ldap/slapd.d/
Запустил сервис slapd и проверил, запущен ldap или нет. Так как это было и я мог получить к нему доступ с помощью phpldapadmin, я добавил организационная единица (ou = продажи), все коды стран и импортированные 3000 пользователей (используя ldapadd) Теперь мой ДИТ выглядит следующим образом
- o=testcompany.com
- ou=sales
- AD
+ uid=123456,c=AD,ou=sales,o=testcompany.com
+ ...
и это здорово, именно так оно и должно выглядеть, но я заметил, что cn = admin, o = testcompany.com запись не существует, хотя она использовала конфигурацию по умолчанию после того, как я установил openldap.
В Redmine я настроил и протестировал ldap аутентификация. Он работает правильно (он может подключаться к моему ldap, и если я хочу добавить нового пользователя и выбрать для него ранее настроенную аутентификацию ldap, я даже могу выбрать из записей, которые есть в моем ldap, что тоже здорово)
Однако (вот где моя проблема), когда я пытаюсь войти в Redmine с пользователем, которого я только что создал (с аутентификацией ldap), я всегда получаю Неверные учетные данные ошибка (хотя она работает как шарм, когда я вхожу в систему с любой другой учетной записью, созданной с помощью Простая аутентификация)
Эти события заставили меня поверить, что ошибка находится в конфигурации LDAP. После еще нескольких часов / дней возни с ACLs и dpkg-перенастроить slapd (и даже очистку-переустановку slapd и ldap-utils) я все еще не могу выйти за рамки этого пункта. И еще немного информации после dpkg-перенастроить slapd и создание нескольких пользователей по умолчанию dc = пример, 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 и почта в моем slapd.conf и это было одной из причин.
Во-вторых, по некоторым причинам, даже если я перенастроил свой ldap (а также переиндексировал его), мои изменения не отобразились.
Оказывается, после шага 5. (после запуска сервиса) также необходимо перезагрузить ваш slapd сервис sudo service slapd reload
или (sudo service slapd force-reload
при необходимости), чтобы slapd успел за изменениями.
Это решило мою проблему. теперь каждый может пройти аутентификацию с помощью ldap auth :)
Я хотел бы указать вам на хорошую статью на сайте Ubuntu - ldapguide
Но я бы вывел двух пользователей: один работает, а другой нет, и посмотрел бы на разницу. Думаю, вы обнаружите, что пароль не установлен. Не могли бы вы вывести это?
Попробуйте изменить корневой DNS, чтобы использовать 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