Здравствуйте! Простите за задержку -- времени вообще нет, удалось немного посидеть за компьютером в аэропорту между рейсами =) . Но результат есть.
Вот мой минималистический конфигурационный файл slapd.conf:
include /etc/ldap/schema/core.schema
moduleload back_mdb.la
sasl-auxprops slapd
authz-regexp "uid=([^,]+),cn=digest-md5,cn=auth" "uid=$1,ou=People,dc=mycompany,dc=ru"
database mdb
directory /data/openldap-experiments/2016-06-23_sasl
suffix dc=mycompany,dc=ru
rootDN cn=manager,dc=mycompany,dc=ru
rootPW test
А вот каталог (файл init.ldif):
# Корневая запись
dn: dc=mycompany,dc=ru
objectClass: organization
objectClass: dcObject
dc: mycompany
o: My Company
# Ветка "Люди"
dn: ou=People,dc=mycompany,dc=ru
objectClass: organizationalUnit
ou: People
# Некто Иван
dn: uid=ivan,ou=People,dc=mycompany,dc=ru
objectClass: inetOrgPerson
uid: ivan
cn: Ivan Petrov
sn: Petrov
userPassword: ivanPassword
Запускаю slapd в интерактивном режиме:
slapd -f ./slapd.conf -h ldap://127.0.0.1:9000 -d 256
Из другого терминала добавляю каталог:
ldapadd -D 'cn=manager,dc=mycompany,dc=ru' -w test -H ldap://127.0.0.1:9000 -f ./init.ldif
Теперь можно подключиться к каталогу от имени пользователя ivan:
ldapsearch -LLL -H ldap://127.0.0.1:9000 -b 'dc=mycompany,dc=ru' -U ivan -w ivanPassword dn
SASL/DIGEST-MD5 authentication started
SASL username: ivan
SASL SSF: 128
SASL data security layer installed.
dn: dc=mycompany,dc=ru
dn: ou=People,dc=mycompany,dc=ru
dn: uid=ivan,ou=People,dc=mycompany,dc=ru
Вот и всё. Ключевым тут является отображение пользователей из аутентификационного псевдокаталога cn=digest-md5,cn=auth в рабочий каталог (см. директиву authz-regexp в конфигурационном файле), без этого отображения аутентификация работать не будет. Да, и пароли в атрибуте userPassword должны быть в открытом виде (обязательно защитите их с помощью ACL).
Остановить slapd в первом терминале можно нажав Ctrl+C.
Когда будете настраивать на настоящем каталоге,там будет динамическая конфигурация, так что, соответственно, нужно будет задать атрибуты olcSaslAuxprops и olcAuthzRegexp записи cn=config.
Егор