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

Проблема конфигурации OpenLdap

Последние несколько дней я отчаянно читал официальные / пользовательские руководства, чтобы правильно настроить свой openldap, чтобы пользователи могли входить в веб-приложение для управления проектами (а именно Redmine). С учетом сказанного, позвольте мне поделиться базовой настройкой среды, с которой я имею дело.

Веб-приложение (-а):

Redmine, Phpldapadmin

LDAP:

Openldap

После установки я предпринял следующие шаги, чтобы перенастроить свой ldap, чтобы лучше отразить ldap, используемый в производстве (поскольку весь этот redmine + ldap еще не находится в производстве)

  1. Остановлен сервис slapd и удален cn = config.ldif из /etc/ldap/slapd.d
  2. Изменено /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
    
  3. Впоследствии slaptest -f /usr/share/slapd/slapd.conf -F /etc/ldap/slapd.d который породил мой новый cn = config.ldif

  4. Установите соответствующего пользователя / группу на новый cn = config.ldif с участием chown -R openldap: openldap /etc/ldap/slapd.d/

  5. Запустил сервис 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.

  6. В Redmine я настроил и протестировал ldap аутентификация. Он работает правильно (он может подключаться к моему ldap, и если я хочу добавить нового пользователя и выбрать для него ранее настроенную аутентификацию ldap, я даже могу выбрать из записей, которые есть в моем ldap, что тоже здорово)

  7. Однако (вот где моя проблема), когда я пытаюсь войти в 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