针对 ldap 的 Apache2 身份验证因“找不到用户”而失败
Posted
技术标签:
【中文标题】针对 ldap 的 Apache2 身份验证因“找不到用户”而失败【英文标题】:Apache2 authentication against ldap fails with "user not found" 【发布时间】:2017-06-06 08:30:18 【问题描述】:我最近安装了 slapd (2.4.40+dfsg-1+deb8u2),我正在尝试通过 ldap 验证 apache2 (2.4.10-10+deb8u7)。系统本身是 debian (8.6)。
Ldap 应该在默认端口上的 localhost 上运行,并且使用 phpldapadmin DN ( cn=admin,dc=1000,dc=hu ) 似乎没问题。对于 apache2 authenticationaion,我使用 .htaccess 文件,基本身份验证(htpasswd 文件)也可以正常工作。
我的配置是:
AuthName "Add your login message here."
AuthType Basic
AuthBasicProvider ldap
AuthLDAPURL "ldap://localhost:389/dc=1000,dc=hu?sAMAccountName?sub?(objectClass=*)"
AuthLDAPBindDN "cn=admin,dc=1000,dc=hu"
AuthLDAPBindPassword ******
require ldap-user testtest test ttest
.
无论我做什么,我都在 apache2 日志中收到“找不到用户”错误:
==> /var/log/apache2/error.log <==
[Sat Jan 21 12:54:29.272676 2017] [auth_basic:error] [pid 27767] [client 127.0.0.1:52852] AH01618: user ttest not found: /t1/
==> /var/log/apache2/access.log <==
127.0.0.1 - ttest [21/Jan/2017:12:54:29 +0100] "GET /t1/ HTTP/1.1" 401 738 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Firefox/45.0"
==> /var/log/apache2/error.log <==
[Sat Jan 21 12:54:44.388323 2017] [auth_basic:error] [pid 27766] [client 127.0.0.1:52854] AH01618: user test not found: /t1/
==> /var/log/apache2/access.log <==
127.0.0.1 - test [21/Jan/2017:12:54:44 +0100] "GET /t1/ HTTP/1.1" 401 738 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Firefox/45.0"
==> /var/log/apache2/error.log <==
[Sat Jan 21 12:54:49.460321 2017] [auth_basic:error] [pid 27770] [client 127.0.0.1:52856] AH01618: user testtest not found: /t1/
==> /var/log/apache2/access.log <==
127.0.0.1 - testtest [21/Jan/2017:12:54:49 +0100] "GET /t1/ HTTP/1.1" 401 738 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Firefox/45.0"
ttest、test 和 testtest 是我系统中的用户名、sn、cn。
AuthLDAPBindPassword 的密码经过三重检查,用户也是如此。
我在哪里犯了错误? AuthLDAPURL 在这种情况下是否具有正确的值?
【问题讨论】:
【参考方案1】:似乎 AuthLDAPURL 问题
我变了:
ldap://localhost:389/dc=1000,dc=hu?sAMAccountName?sub?(objectClass=*) ldap://localhost:389/dc=1000,dc=hu?namerefer to
【讨论】:
【参考方案2】:我遇到了同样的错误,这与在 Active Directory 中使用默认属性“uid”有关,而不是指定 sAMAccountName。
AuthLDAPURL ldap://192.168.1.1:389/dc=domain,dc=local?sAMAccountName
【讨论】:
【参考方案3】:好吧,在上面的例子中,AuthLDAPURL 对于所描述的设置是错误的。它应该只是:
AuthLDAPURL ldap://localhost/dc=256,dc=hu?cn?sub
.
【讨论】:
我想要,但网站说我需要等待 2 天才能接受我自己的答案(还有 32 天)。以上是关于针对 ldap 的 Apache2 身份验证因“找不到用户”而失败的主要内容,如果未能解决你的问题,请参考以下文章
针对 Active Directory 的 LDAP 身份验证可接受的 SECURITY_PRINCIPAL 格式是啥?
Spring Security - 在Spring Boot中针对LDAP使用Active Directory对用户进行身份验证
PHP - 针对 Windows 2003 Active Directory 的 LDAP 身份验证(用户 ID 不同于名字和姓氏)