我试图将LDAP与专用于SVN存储库的Apache 2.4服务器链接,因此我使用Apache mods dav_svn和authnz_ldap。LDAP本身可以正常工作。
我可以设法将服务器与管理员DN绑定,并搜索所需的用户。
连接时,如果用户不存在,则为[No such object]错误(是!)。但是,如果用户存在,则即使密码正确,LDAP也会始终返回[无效凭据]错误。
这是Apache error.log结束
[authnz_ldap:debug] [pid 9243:tid 2990508864] mod_authnz_ldap.c(516): [client ::1:46639] AH01691:
auth_ldap authenticate: using URL ldap://my_ldap_ip:port/ou=aaaa,dc=company,dc=fr?uid?sub
[ldap:debug] [pid 9243:tid 2990508864] util_ldap.c(379): AH01278:
LDAP: Setting referrals to On.
[authnz_ldap:info] [pid 9243:tid 2990508864] [client ::1:46639] AH01695:
auth_ldap authenticate: user mr.myself authentication failed; URI /svn/ [ldap_simple_bind() to check user credentials failed][Invalid credentials]
[auth_basic:error] [pid 9243:tid 2990508864] [client ::1:46639] AH01617:
user mr.myself: authentication failure for "/svn/": Password Mismatch
这是我的配置文件
<VirtualHost domain:443>
ServerName domain
SSLEngine On
SSLCertificateFile /path/to/ssl/cert.pem
SSLCertificateKeyFile /path/to/ssl/key.pem
SSLProtocol all
SSLCipherSuite HIGH:MEDIUM
<Location /svn>
DAV svn
SVNParentPath /path/to/svn/repositories
SVNListParentPath ON
AuthType Basic
AuthName "a nice message"
AuthBasicProvider ldap
AuthLDAPURL ldap://my_ldap_ip:port/ou=aaaa,dc=company,dc=fr?uid?sub
AuthLDAPBindDN cn=mr-admin,ou=cccc,ou=bbbb,dc=company,dc=fr
AuthLDAPBindPassword clear_password
<RequireAll>
Require valid-user
Require ssl
Require ldap-group cn=svngroup,ou=ffff,ou=eeee,ou=dddd,dc=company,dc=fr
</RequireAll>
</Location>
</VirtualHost>
除了此文件,我添加到Apache的唯一配置是ports.conf中的“ Listen 443 ”
您对问题是什么有想法吗?我已经搜索了一段时间,并且我需要尽快进行这项工作。
感谢您的阅读(对不起,英语不好)
-------编辑:其他详细信息
这是我的整个代码
为了清楚起见,我仅更改了域,路径,DN名称和bindDN密码。
我有同样的结果来改变的时候
uid
到cn
这是ldapsearch结果
。
ldapsearch -x -H ldap://my_ldap_ip:port/ -D cn=mr.myself,ou=gggg,ou=aaaa,dc=company,dc=fr -w 'p4(sSwo]rd' -v
ldap_initialize( ldap://my_ldap_ip:port/??base )
ldap_bind: Invalid credentials (49)
ldapsearch -x -H ldap://my_ldap_ip:port/ -D cn=mr.myself,ou=gggg,ou=aaaa,dc=company,dc=fr -w p4(sSwo]rd -v
bash: syntax error near unexpected token "("
您的用户dn是什么?同样,转储流量对于理解错误是非常有用的,尤其是因为您没有在ldap和apache之间加密任何内容时。您正在使用哪个目录服务器?
—
砸死
@stoned用户DN类似于“ cn = mr.myself,ou = gggg,ou = aaaa,dc = company,dc = fr”
—
Irhala
尝试更换
—
砸死
uid
在ldap://my_ldap_ip:port/ou=aaaa,dc=company,dc=fr?uid?sub
用cn
。您可以转储apache和ldap之间的通信吗?另外,这是您的真实代码,还是您跳过了具有不同身份验证部分的代码?
@stoned这是我的整个代码,为清楚起见,我仅更改了域,路径,DN名称和bindDN密码。更改
—
Irhala,2015年
uid
为cn
我尝试使用
—
Irhala
mod_dumpio
,但是在auth_ldap authenticate : using URL ldap://....
[Invalid credentials]