我在使用 SVN 身份验证与 LDAP / Active Directory 配合使用时遇到了一些问题。我的 SVN 安装运行正常,但在 apache vhost 中启用 LDAP 后,我就是无法让我的用户进行身份验证。
我可以使用多种 LDAP 浏览器成功连接到 Active Directory,但似乎无法使其正常工作。
- SVN 安装在 /var/local/svn
- 服务器是 svn.domain.local
- 为了测试,我的存储库是 /var/local/svn/test
我的vhost文件如下:
<VirtualHost *:80>
ServerAdmin [email protected]
ServerAlias svn.domain.local
ServerName svn.domain.local
DocumentRoot /var/www/svn/
<Location /test>
DAV svn
#SVNListParentPath On
SVNPath /var/local/svn/test
AuthzSVNAccessFile /var/local/svn/svnaccess
AuthzLDAPAuthoritative off
AuthType Basic
AuthName "SVN Server"
AuthBasicProvider ldap
AuthLDAPBindDN "CN=adminuser,OU=SBSAdmin Users,OU=Users,OU=MyBusiness,DC=domain,DC=local"
AuthLDAPBindPassword "admin password"
AuthLDAPURL "ldap://192.168.1.6:389/OU=SBSUsers,OU=Users,OU=MyBusiness,DC=domain,DC=local?sAMAccountName?sub?(objectClass=*)"
Require valid-user
</Location>
CustomLog /var/log/apache2/svn/access.log combined
ErrorLog /var/log/apache2/svn/error.log
</VirtualHost>
在我的 error.log 中,我似乎没有收到任何绑定错误(我应该在其他地方寻找吗?),而只是收到以下内容:
[Thu Jun 21 09:51:38 2012] [error] [client 192.168.1.142] user alex: authentication failure for "/test/": Password Mismatch, referer: http://svn.domain.local/test/
在“AuthLDAPURL”的末尾,我看到人们使用 TLS 和 NONE,但对我来说似乎都没有帮助。
我已经加载了 ldap 模块,并检查了我所知道的所有信息,因此非常欢迎任何帮助。谢谢
答案1
REFERRALS off
在服务器中设置/etc/ldap/ldap.conf
并重试。
并尝试在 URL 行中添加“NONE”:
AuthLDAPURL "ldap://192.168.1.6:389/OU=SBSUsers,OU=Users,OU=MyBusiness,DC=domain,DC=local?sAMAccountName?sub?(objectClass=*)" NONE
尝试 ldapsearch。.ldaprc
在你的主目录中执行以下命令:
HOST 192.168.1.6
BASE DC=domain,DC=local
BINDDN CN=adminuser,OU=SBSAdmin Users,OU=Users,OU=MyBusiness,DC=domain,DC=local
用它:
ldapsearch -D "CN=adminuser,OU=SBSAdmin Users,OU=Users,OU=MyBusiness,DC=domain,DC=local" -W sAMAccountName=user
它将要求输入 BindDN 密码。
答案2
Diego 得到了要点,因为它最终让我成功了。这可能是更改虚拟主机中参数顺序的情况,但这对我来说是有效的。我还直接从 LDAP GUI 工具复制了管理员用户 DN,以确保我拥有正确的绑定详细信息:
<VirtualHost *:80>
ServerAdmin [email protected]
ServerAlias svn.domain.local
ServerName svn.domain.local
DocumentRoot /var/www/svn/
<Location />
DAV svn
SVNParentPath /var/local/svn/
SVNListParentPath On
AuthBasicProvider ldap
AuthType Basic
AuthzLDAPAuthoritative off
AuthName "SVN Server"
AuthLDAPURL "ldap://192.168.1.6:389/DC=domain,DC=local?sAMAccountName?sub?(objectClass=*)" NONE
AUTHLDAPBindDN "CN=admin,OU=Admin Users,OU=Users,OU=MyBusiness,DC=domain,DC=local"
AuthLDAPBindPassword ######
require valid-user
</Location>
</VirtualHost>
希望这能帮助别人!