OpenLdapconfiguration问题

在过去的几天里,我一直在拼命阅读官方/用户制作的指南,以便正确configuration我的openldap以允许用户login到项目pipe理webapp(即Redmine)。 就这样说,请让我分享我正在处理的环境的基本设置。

WEBAPPLICATION(S):

Redmine,Phpldapadmin

LDAP:

OPENLDAP

安装之后,我采取了以下步骤来重新configuration我的LDAP以更好地反映生产中使用的LDAP(因为整个redmine + ldap尚未投入生产)

  1. 停止slapd服务,并从/etc/ldap/slapd.d中删除cn = config.ldif
  2. 修改/usr/share/slapd/slapd.conf到这个:

    include /etc/ldap/schema/core.schema include /etc/ldap/schema/cosine.schema include /etc/ldap/schema/nis.schema include /etc/ldap/schema/inetorgperson.schema pidfile /var/run/slapd/slapd.pid argsfile /var/run/slapd/slapd.args loglevel none modulepath /usr/lib/ldap moduleload back_mdb sizelimit 500 tool-threads 1 backend mdb database mdb suffix "o=testcompany.com" rootdn "cn=admin,o=testcompany.com" directory "/var/lib/tc-ldap" rootpw "password" index objectClass eq index uid eq index ou eq index default eq,sub lastmod on checkpoint 512 30 access to attrs=userPassword,shadowLastChange by dn="cn=admin,o=testcompany.com" write by anonymous auth by self write by * none access to dn.base="" by * read access to * by dn="cn=admin,o=testcompany.com" write by * read 
  3. 之后, slaptest -f /usr/share/slapd/slapd.conf -F /etc/ldap/slapd.d生成了我的新cn = config.ldif

  4. 使用chown -R将相应的用户/组设置为新的cn = config.ldif openldap:openldap /etc/ldap/slapd.d/

  5. 解雇slapd服务并检查ldap是否正在运行。 既然是这样,我可以用phpldapadmin访问它,我添加了一个organizationalUnit(ou = sales) ,所有的国家代码和导入3000个用户(通过使用ldapadd )现在我的DIT看起来如下

     - o=testcompany.com - ou=sales - AD + uid=123456,c=AD,ou=sales,o=testcompany.com + ... 

    这是非常好的,但是我注意到, cn = admin,o = testcompany.com条目不存在,而在我安装了openldap之后,它使用了默认的configuration。

  6. 在Redmine中,我configuration并testing了ldapauthentication 。 它工作正常(它可以连接到我的LDAP和如果我想添加一个新的用户,并select之前configurationldap身份validation,我甚至可以select在我的LDAP,这也是伟大的条目)

  7. 然而(这是我的问题所在)当我尝试login到Redmine与我刚刚创build的用户(与LDAPauthentication)我总是得到无效的凭据错误(虽然它像一个魅力,当我用任何其他帐户login,使用简单身份validation创build)

这些事件让我相信这个错误在LDAPconfiguration中。 经过几个小时/天的ACLdpkg-reconfigure slapd (甚至是清除 – 重新安装slapd和ldap-utils),我仍然无法超越这一点。 还有一点信息,在dpkg-reconfigure slapd并在默认的dc = example,dc = com下创build几个用户之后,我可以让他们login到Redmine就好了(甚至cn = admin,o = testcompany.com出现…)。

下面我会附上一些我尝试过的东西。 我希望有人可以帮助我提供一些关于我从哪里走下的小窍门(不知何故,我觉得我错过了这里的明显的)。

我到目前为止所尝试的:

  1. modify the default slapd.conf file, and repeat the process i've written above 2. create a completely new one 3. a lot of different ways to add/modify the ACL 4. read through a lot of mailing list, similar problems on redmine forums, and openldap mailing lists, still no success (i can paste a lot of links from my .txt if you need it) 

请尝试更改您的根目录dn使用dc = testcompany,dc = com删除点'。'
点'。' 是ldap DN规范的不同部分的分隔符https://tools.ietf.org/html/rfc1779#section-2.2
也可以尝试在你的slapd.conf文件中指定ldapv3,它识别o = as ou =
https://tools.ietf.org/pdf/rfc3494.pdf

我会指出你在Ubuntu网站 – ldapguide上写的很好

但是,我会输出两个用户正在工作,一个不在,看看不同之处。 我认为你会发现密码没有设置。 你能输出吗?

最后找出问题所在。

首先,我忘了在slapd.conf中包含索引: objectClassmail ,这是原因之一。

其次,由于某些原因,即使我重新configuration我的ldap(并重新编制它),我的更改不会显示。

事实certificate,在第5步之后(启动服务之后),还需要重新加载 slapd服务sudo service slapd reload或( sudo service slapd force-reload如有必要),以便slapd赶上更改。

这解决了我的问题。 现在每个人都可以使用ldap身份validation身份validation:)