无法使用Apache和LDAP对Subversion用户进行身份验证

时间:2010-07-05 08:32:37

标签: apache authentication ldap svn

我正在尝试对通过Apache HTTP Server访问的Subversion存储库使用LDAP身份验证。 无论我尝试什么,Apache都会生成以下错误消息:

authentication failed; URI /repos/branches/my-branch [ldap_search_ext_s() for user failed][Operations Error]

我已经使用Sysinternals的AD资源管理器连接到我的AD服务器,并且可以看到那里的数据,所以我认为这是我的LDAP URL搜索字符串的问题。我尝试了几种变体,但总是得到上述错误。这是我在httpd.conf中的内容。任何建议或想法来诊断这一点将不胜感激。

<Location /repos>
    DAV svn
    SVNPath C:\repos
    AuthType Basic
    AuthzLDAPAuthoritative off
    AuthBasicProvider ldap
    AuthName "IT Subversion repository"
    AuthLDAPURL "ldap://x.y.z.com:389/DC=y,DC=z,DC=com?sAMAccountName?sub?(objectClass=user)" NONE    
    Require valid-user
</Location>

6 个答案:

答案 0 :(得分:3)

我的问题是通过将端口从389更改为3268来销售。端口389仅查找Local Direcotry,但3268查找全局目录。令人困惑的是,在LDAP浏览器中(例如JXplorer)可正常工作两个端口。

答案 1 :(得分:1)

您似乎正在使用Active Directory,它不允许匿名绑定。尝试添加以下内容:

# Active Directory requires an authenticating DN to access records
# This is the DN used to bind to the directory service
# This is an Active Directory user account.
AuthLDAPBindDN "CN=someuser,CN=Users,DC=y,DC=z,DC=com"

# This is the password for the AuthLDAPBindDN user in Active Directory
AuthLDAPBindPassword some_secret_password

答案 2 :(得分:1)

我有一些类似的东西,虽然很奇怪。起初它在测试时,但在一些Apache重新启动和配置微调后,它停止工作。

在互联网上长时间搜索后,似乎我必须将端口从389更改为3268.这解决了我的“[ldap_search_ext_s()因用户失败] [操作错误]”出于某种原因的错误。我仍然不明白为什么,或者为什么它起初有效,但它确实适合我。

答案 3 :(得分:1)

遇到同样的问题,你需要在/etc/ldap/ldap.conf中指定:

REFERRALS off

解决了我的问题。

答案 4 :(得分:0)

我最近遇到了这个问题,你需要添加3个附加参数

AuthLDAPBindDN "CN=someuser,CN=Users,DC=y,DC=z,DC=com"
AuthLDAPBindPassword some_secret_password

像jgnagy建议的那样,当我添加

时,它也帮助了我
Satisfy Any 

答案 5 :(得分:0)

在早期版本中,简单的LDAPReferrals不存在,所以没有什么可以关闭的,真的......

我想如果你设法匹配一个新的LDAP / Apache,它有一个LDAP推荐作为一个选项,并且试图使用和更老的AD,你必须关闭它。

对于其他发现此问题的人,您应该按顺序尝试: telnet YOUR_AD_SERVER 389

要么你得到一个Connect,就像Escape字符那样〜,或者你的AD名称/ IP错误,或者你的防火墙阻止你的计算机访问端口389上的AD。

接下来,安装openldap命令行工具openldap-clients,看看是否可以使用ldapsearch(阅读手册页)直接搜索到AD服务器,而不在中间使用Apache。