我有一个本地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: [email protected]
到现在为止还挺好。 我可以使用“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问题,但是,slapd.conf上的ACL似乎是正确的:
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? 或者可能是我缺less一些ACLconfiguration,这是以某种方式影响对特定DN的userPassword的读访问权限。
我真的迷失在这里,任何build议表示赞赏!
干杯,
马塞洛。
#@openladp的人很友善的帮我debugging这个问题。 事实certificate,这是一个简单的细节(大多数情况下总是:)) – 当我创buildldif,我已经把密码以明文forms,但是,我没有做任何事情告诉openldap它实际上是明文我也不知道我必须(我也不知道或不知道该怎么做,但是这一点并不重要,就像你会在一瞬间看到的那样)。 一直以来,我必须做ACL(OpenLDAP拒绝读取userPassword),但问题是OpenLDAP正在尝试使用SHA-1进行身份validation,并且密码以明文forms存储。
解决scheme? 将密码存储为SHA-1哈希值 。 无论如何,没有人会希望将密码存储为明文。
所以,问题解决了!
干杯,