OpenLdap 配置问题

OpenLdap 配置问题

在过去的几天里,我一直在拼命阅读官方/用户制作的指南,以便正确配置我的 openldap,以允许用户登录到项目管理 webapp(即 Redmine)。话虽如此,请让我分享我正在处理的环境的基本设置。

Web 应用程序:

Redmine,Phpldapadmin

LDAP:

开放LDAP

安装后,我按照以下步骤重新配置我的 ldap,以更好地反映生产中使用的 ldap(因为整个 redmine + ldap 尚未投入生产)

  1. 停止 slapd 服务并删除cn=配置.ldif/etc/ldap/slapd.d
  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=配置.ldif

  4. 将适当的用户/组设置为新的cn=配置.ldifchown -R openldap:openldap /etc/ldap/slapd.d/

  5. 启动 slapd 服务并检查 ldap 是否正在运行。由于它正在运行,并且我可以使用 phpldapadmin 访问它,因此我添加了一个组织单位 (ou=sales),所有国家代码并导入3000个用户(通过使用ldap添加)现在我的DIT如下所示

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

    这很好,这正是它应该的样子,然而我注意到,cn=admin,o=testcompany.com条目不存在,而我在安装 openldap 后使用默认配置确实存在。

  6. 在 Redmine 中,我已经配置并测试了ldap 身份验证。它工作正常(它既可以连接到我的 ldap,如果我想添加新用户并为其选择之前配置的 ldap 身份验证,我甚至可以从我的 ldap 中的条目中进行选择,这也很棒)

  7. 然而(这就是我的问题所在)当我尝试使用我刚刚创建的用户(使用 ldap 身份验证)登录 Redmine 时,我总是得到无效证件错误(当我使用任何其他帐户登录时它工作正常,但使用简单身份验证

这些事件让我相信错误出在 LDAP 配置中。经过几个小时/几天的折腾,访问控制列表dpkg-重新配置 slapd(甚至清除并重新安装 slapd 和 ldap-utils)我仍然无法超越这一点。还有一点信息,之后dpkg-重新配置 slapd并在默认下创建一些用户dc=示例,dc=com,我可以让他们顺利登录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)

答案1

请尝试将您的根 DN 更改为使用 dc=testcompany,dc=com 删除点“。”
点“。”是 ldap DN 规范不同部分的分隔符 https://www.rfc-editor.org/rfc/rfc1779#section-2.2
还可以尝试在 slapd.conf 文件中指定 ldapv3,该文件将 o= 识别为 ou=
https://tools.ietf.org/pdf/rfc3494.pdf

答案2

我会向你推荐 Ubuntu 网站上的一篇好文章 -ldap指南

但我会输出两个用户,一个正在工作,一个没有工作,然后看看区别。我想你会发现密码没有设置。你能输出吗?

答案3

最终弄清楚了问题所在。

首先,我忘了包含索引:对象类邮件在我的slapd配置文件这就是原因之一。

其次,由于某些原因,即使我重新配置了我的 ldap(并重新索引了它),我的更改也不会显示。

事实证明,经过5.(启动服务后)还需要重新加载您的 slapd 服务sudo service slapd reload或(sudo service slapd force-reload如果有必要)以便 slapd 能够跟上变化。

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

相关内容