在过去的几天里,我一直在拼命阅读官方/用户制作的指南,以便正确配置我的 openldap,以允许用户登录到项目管理 webapp(即 Redmine)。话虽如此,请让我分享我正在处理的环境的基本设置。
Web 应用程序:
Redmine,Phpldapadmin
LDAP:
开放LDAP
安装后,我按照以下步骤重新配置我的 ldap,以更好地反映生产中使用的 ldap(因为整个 redmine + ldap 尚未投入生产)
- 停止 slapd 服务并删除cn=配置.ldif从/etc/ldap/slapd.d
修改的/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
然后,slaptest -f /usr/share/slapd/slapd.conf -F /etc/ldap/slapd.d这产生了我的新cn=配置.ldif
将适当的用户/组设置为新的cn=配置.ldif和chown -R openldap:openldap /etc/ldap/slapd.d/
启动 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 后使用默认配置确实存在。
在 Redmine 中,我已经配置并测试了ldap 身份验证。它工作正常(它既可以连接到我的 ldap,如果我想添加新用户并为其选择之前配置的 ldap 身份验证,我甚至可以从我的 ldap 中的条目中进行选择,这也很棒)
然而(这就是我的问题所在)当我尝试使用我刚刚创建的用户(使用 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 进行身份验证:)