我正在使用 CentOS 6。我发现了一个很棒的文章关于如何在 CentOS 6 上安装和配置 OpenLDAP,我还找到了一些其他很棒的文档这里关于如何配置 LDAP 以在 Apache HTTPD 上工作(我使用的是 CentOS 6 附带的 2.2)。不幸的是,这两篇文章不一定指定如何将两者连接在一起。我提到的第二篇文章非常适合 Apache 演练,假设您已经很好地理解了 LDAP 语法,而我提到的第一篇文章非常适合,假设您已经想到了一种测试它的方法。似乎您必须是其中一个或另一个方面的专家才能完全完成任何演练。
因此,我们假设我已根据 CentOS OpenLDAP 演练文章配置了我的 LDAP 凭据。我添加了以下人员:
acme.ldif
dn: dc=acme,dc=com
objectClass: dcObject
objectClass: organization
dc: acme
o : acme
用户.ldif
dn: ou=Users,dc=acme,dc=com
objectClass: organizationalUnit
ou: Users
鲍勃.ldif
dn: cn=Bob Jones,ou=Users,dc=acme,dc=com
cn: Bob Jones
sn: Jones
objectClass: inetOrgPerson
userPassword: p@ssw0rd
uid: bjones
工程文件
dn: cn=Engineering,ou=Users,dc=acme,dc=com
cn: Engineering
objectClass: groupOfNames
member: cn=Bob Jones,ou=Users,dc=acme,dc=com
添加用户到组.ldif
dn: cn=Engineering,ou=Users,dc=acme,dc=com
changetype: modify
add: member
member: cn=Al Smith,ou=Users,dc=acme,dc=com
目录
dn: cn=Al Smith,ou=Users,dc=acme,dc=com
cn: Al Smith
sn: Smith
objectClass: inetOrgPerson
userPassword: 12345
uid: asmith
我从 SourceForge 下载了 LDAPExplorer Tool 2,并成功连接到该 LDAP 目录并对其进行了探索,它看起来就像 LDIF 文件所建议的那样。
以下内容来自我的 Apache HTTPD 的 httpd.conf 文件:
<Directory /var/www/html/authpage>
AuthType Basic
AuthName "Enter valid user name"
AuthLDAPURL ldap://magneto.acme.com:389/????
require valid-user
</Directory>
????
我不知道如何使我的 LDAP 语法与我的 LDAP 目录保持一致。我尝试了各种方法。我导航到 URL(本例中,magneto 是我的服务器主机名,我至少知道它是有效的),系统提示http://magneto.acme.com/authpage
我输入凭据。我输入的任何内容都不起作用。我尝试了ou=
和o=
和的组合dc=
,以及?uid
作为查询参数。
当我检查我的 Apache 时error_log
,我看到了这一行:
[Wed Sep 10 11:00:51 2014] [error] [client 10.78.182.243] access to /authpage failed, reason: verification of user id 'bjones' not configured
[Wed Sep 10 11:00:54 2014] [error] [client 10.78.182.243] access to /authpage failed, reason: verification of user id 'asmith' not configured
假设我的 LDAP 目录正常工作,并且 Apache 正在正确尝试对其进行身份验证,1. 如何编写正确的语法来进行身份验证全部用户还是只是特定群体?2. 根据所述内容,是否需要任何其他配置来配置用户验证error_log
?
答案1
ldap://host:port/basedn?attribute?scope?filter
就你的情况而言:
AuthLDAPURL ldap://magneto.acme.com:389/ou=Users,dc=acme,dc=com?uid?sub?(objectClass=inetOrgPerson)
笔记:如果您不允许在 LDAP 服务器上进行匿名搜索,则可能需要配置AuthLDAPBindDN
并AuthLDAPBindPassword
答案2
经过进一步搜索,我发现本文这提供了更多信息。事实证明,我的 Apache HTTPDhttpd.conf
文件中缺少了几行重要内容:
<Directory /var/www/html/authpage>
Order deny,allow
Deny from All
AuthName "Enter valid user name"
AuthType Basic
AuthBasicProvider ldap
AuthzLDAPAuthoritative off
AuthLDAPUrl ldap://magneto.acme.com/ou=Users,dc=acme,dc=com?uid
Require valid-user
Satisfy any
</Directory>
希望将来如果有人使用 CentOS 6 并使用 OpenLDAP 并通过 Apache HTTPD 设置 LDAP 身份验证,此 ServerFault 帖子中的链接将有所帮助。这需要大量的尝试、错误和搜索。