有趣的OpenLDAP

时间:2016-09-29 15:57:57

标签: openldap centos7

我一直在已经使用FreeIPA进行用户身份验证的系统上设置OpenLDAP服务器。目的是为spring应用程序提供一种身份验证方法。

运行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"

使用此ldif:

更改普通DIT中的密码是个好主意
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)

有什么想法吗?

1 个答案:

答案 0 :(得分: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

我仍然遇到使用带有自定义端口的systemd启动slapd但是现在可以等待的问题。