2016-09-29 4 views
0

Я настраивал сервер OpenLDAP на систему, которая уже использует FreeIPA для аутентификации пользователей. Целью является предоставление метода аутентификации для весеннего приложения.Fun with OpenLDAP

Я заметил некоторые странные вещи при запуске команд ldapadd и ldapmodify. Я думал, что это может быть связано с неправильным паролем, поэтому я попытался обновить olcRootPW.

Я думал, что это может быть хорошей идеей, чтобы найти учетную запись RootDN и текущий RootDN хэш пароля:

sudo ldapsearch -H ldapi:// -LLL -Q -Y EXTERNAL -b "cn=config" "(olcRootDN=*)" dn olcRootDN olcRootPW 

Это возвращенное:

dn: olcDatabase={2}hdb,cn=config 
olcRootDN: cn=Manager,dc=myldap,dc=local 
olcRootPW: {SSHA}6amwprJqmgudYDYPbJaO3BgeAp6898 

до сих пор так хорошо, так что давайте обновления в пароль с файлом Ldif - newpass.ldif:

dn: olcDatabase={2}hdb,cn=config 
changetype: modify 
replace: olcRootPW 
olcRootPW: {SSHA}KPxel+B7Ua6Q9PPaM7xdaGSDqK0A1234 

Выполнить эту команду:

sudo ldapmodify -H ldapi:// -Y EXTERNAL -f ~/newpass.ldif 

До сих пор так хорошо, мы получаем сообщение об успехе:

SASL/EXTERNAL authentication started 
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth 
SASL SSF: 0 
modifying entry "olcDatabase={2}hdb,cn=config" 

его хорошая идея, чтобы изменить пароль в обычном DIT с этим LDIF:

dn: cn=Manager,dc=myldap,dc=local 
changetype: modify 
replace: userPassword 
userPassword: {SSHA}KPxel+B7Ua6Q9PPaM7xdaGSDqK0A1234 

Когда я примените этот ldif с помощью этой команды:

sudo ldapmodify -a -v -H ldap:/// -x -D "cn=Manager,dc=myldap,dc=local" -W -f ~/newpasswd.ldif 

Я получаю следующая ошибка:

ldap_initialize(ldap://:389/??base) 
Enter LDAP Password: 
replace userPassword: 
    {SSHA}KPxel+B7Ua6Q9PPaM7xdaGSDqK0A1234 
modifying entry "cn=Manager,dc=myldap,dc=local" 
ldap_modify: No such object (32) 

Я видел это много при использовании «-D» переключатель, и я не могу понять, что происходит?

Я видел то же самое при добавлении этого LDIF:

dn: dc=myldap,dc=local 
objectClass: top 
objectClass: dcObject 
objectclass: organization 
o: myldap.local 

dc: myldap 
dn: cn=Manager,dc=myldap,dc=local 
objectClass: organizationalRole 
cn: Manager 
description: Directory Manager 

dn: ou=People,dc=myldap,dc=local 
objectClass: organizationalUnit 
ou: People 

dn: ou=Group,dc=myldap,dc=local 
objectClass: organizationalUnit 
ou: Group 

Запуск этой команды дают ошибку:

sudo ldapadd -x -D cn=Manager,dc=myldap,dc=local -W -f baseldapdomain.ldif 

Enter LDAP Password: 
ldap_bind: No such object (32) 

Любые идеи?

ответ

0

я решил запустить OpenLDAP на том же хосте, что и приложение, а затем запустить Slapd на другой локальный порт:

sudo /usr/sbin/slapd -u ldap -h "ldapi:/// ldap:/// ldap://localhost:9090" 

Так при применении Ldif файлов это работает:

sudo ldapadd -x -D cn=Manager,dc=cdfldap,dc=local -H ldap://localhost:9090 -W -f baseldapdomain.ldif 

I У меня все еще есть проблемы с запуском slapd с помощью systemd с пользовательским портом, но который может подождать.

+0

Извлечение /// хостов из файла службы разрешает работать только с настраиваемой конфигурацией порта: [Unit] Описание = Пользовательская служба openLDAP После = network.целевой [Service] Type = разветвление Restart = всегда RestartSec = 5s StandardOutput = системный журнал StandardError = системного журнала ExecStart =/USR/SBIN/Slapd -h "LDAP: // LDAP_IP: 9090" пользователя = LDAP [Установить] WantedBy = multi-user.target – Chris