使用 LDAP 和 Active Directory 进行 SVN 身份验证

使用 LDAP 和 Active Directory 进行 SVN 身份验证

我在使用 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>

希望这能帮助别人!

答案3

它可能不会直接回答你的问题,但你有没有考虑过使用颠覆边缘? 可以免费使用(AGPLv3 许可证)。

正如你所看到的截屏设置 LDAP 集成非常简单。您甚至可以安装 SSPI 模块,尽管这需要一些手动工作。

相关内容