У меня есть локальный сервер OpenLDAP с парой пользователей. Я использую его в целях разработки, вот ldif:
#Top level - the organization
dn: dc=site, dc=com
dc: site
description: My Organization
objectClass: dcObject
objectClass: organization
o: Organization
#Top level - manager
dn: cn=Manager, dc=site, dc=com
objectClass: organizationalRole
cn: Manager
#Second level - organizational units
dn: ou=people, dc=site, dc=com
ou: people
description: All people in the organization
objectClass: organizationalunit
dn: ou=groups, dc=site, dc=com
ou: groups
description: All groups in the organization
objectClass: organizationalunit
#Third level - people
dn: uid=celoserpa, ou=people, dc=site, dc=com
objectclass: pilotPerson
objectclass: uidObject
uid: celoserpa
cn: Marcelo de Moraes Serpa
sn: de Moraes Serpa
userPassword: secret_12345
mail: marcelo@site.com
Все идет нормально. Я могу выполнить привязку с помощью «cn = Manager, dc = site, dc = com» и пароля 12345678 (пароль локального сервера, настройка на slapd.conf).
Однако я хотел бы связать с любым пользователем в рамках OU людей. В этом случае я бы хотел связать с: dn: uid = celoserpa, ou = people, dc = site, dc = com userPassword: secret_12345
Но я получаю «(49) - Недействительные учетные данные» ошибка каждый раз. Я пробовал использовать инструменты CLI (такие как ldapadd, ldapwhoami и т. Д.), А также ruby / ldap. Привязка с этими учетными данными завершается ошибкой из-за неверных учетных данных.
Я думал, что это может быть проблема ACL, однако ACL на slapd.conf кажутся правильными:
access to attrs=userPassword
by self write
by dn.sub="ou=people,dc=site,dc=com" read
by anonymous auth
access to * by * read
Я подозревал, что, возможно, OpenLDAP не сравнится с userPassword? Или, может быть, мне не хватает какой-то конфигурации ACL, которая каким-то образом влияет на доступ для чтения к userPassword для определенного DN.
Я действительно потерялся здесь, любое предложение приветствуется!
Привет,
Марсело.
Ребята @ #openladp были достаточно любезны, чтобы помочь мне отладить эту проблему. Оказалось, что это была простая деталь (как обычно :)). Когда я создавал ldif, я вводил пароль в виде открытого текста, однако я не делал ничего, чтобы сообщить openldap, что это действительно открытый текст. и я не знал, что должен (я не знал и не знаю, как это сделать, но это на самом деле не имеет значения, как вы сейчас увидите). Все время я думал, что это связано с ACL (OpenLDAP запрещает доступ для чтения к userPassword), но проблема заключалась в том, что OpenLDAP пытался аутентифицироваться с использованием SHA-1, а пароль хранился как открытый текст.
Решение? Сохраните пароль как хэш SHA-1. В любом случае никто не захочет хранить пароль в виде открытого текста.
Итак, вопрос решен!
Привет,