Can';t使用Apache和LDAP对Subversion用户进行身份验证

Can';t使用Apache和LDAP对Subversion用户进行身份验证,apache,authentication,ldap,svn,Apache,Authentication,Ldap,Svn,我正在尝试对Subversion存储库使用LDAP身份验证,通过ApacheHTTP服务器访问。 无论我尝试什么,Apache都会生成以下错误消息: authentication failed; URI /repos/branches/my-branch [ldap_search_ext_s() for user failed][Operations Error] 我已经使用Sysinternals中的AD explorer连接到我的AD服务器,并且可以看到其中的数据,所以我认为这是LDAP

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

authentication failed; URI /repos/branches/my-branch [ldap_search_ext_s() for user failed][Operations Error]
我已经使用Sysinternals中的AD explorer连接到我的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>

DAV svn
SVNPath C:\repos
AuthType Basic
authzldapoff
AuthBasicProvider ldap
AuthName“IT Subversion存储库”
AuthLDAPURL“ldap://x.y.z.com:389/DC=y,DC=z,DC=com?sAMAccountName?sub?(objectClass=user)“无
需要有效用户

您似乎正在使用不允许匿名绑定的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

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

AuthLDAPBindDN "CN=someuser,CN=Users,DC=y,DC=z,DC=com"
AuthLDAPBindPassword some_secret_password
就像jgnagy建议的那样,当我添加

Satisfy Any 

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

我想如果您设法匹配了一个新的LDAP/Apache,其中有LDAP引用作为一个选项,并且尝试使用旧的AD,那么您必须关闭它

如果有其他人发现此问题,您应按顺序尝试以下内容: 远程登录您的广告服务器389

要么你得到了一个连接,比如转义字符是~,要么你的广告的名称/IP错误,要么你的防火墙阻止了你的计算机访问389端口上的广告


接下来,安装OpenLDAP命令行工具、OpenLDAP客户端,并查看是否可以使用LDAPScript(读取man页面)直接搜索到您的广告服务器,而没有Apache在中间。

< P>我有一些Simular,虽然陌生人。起初,它是在测试时启动的,但在一些Apache重启和配置微调之后,它停止了工作


在互联网上搜索了很长时间后,我似乎不得不将端口从389更改为3268。由于某种原因,这解决了我的“[ldap\u search\u ext\u s()for user failed][Operations Error]”错误。我仍然不明白为什么,或者为什么它一开始起作用,但对我来说确实如此。

也有同样的问题,您需要在/etc/ldap/ldap.conf中指定:

REFERRALS off

解决了我的问题。

通过将端口从389更改为3268,解决了我的问题。端口389只查找本地目录,但3268查找全局目录。令人困惑的是,LDAP浏览器(例如JXplorer)中的两个端口都正常工作。

错误日志不应该提供更详细的错误消息吗?我在错误日志中得到的信息如上所示,即[Mon Jul 05 09:08:03 2010][warn][client 127.0.0.1][9556]验证LDAP身份验证:用户XXXXXXXXXXXX身份验证失败;URI/repos/branchs/my branch[ldap_search_ext_s()for user failed][Operations Error]此页面讨论ldap引用选项,必须关闭该选项。很遗憾,我不知道如何在Windows上关闭Apache 2.2。似乎有一个LDAPReferrals指令,可以在httpd.conf文件中设置,但是mod_ldap 2.2没有实现,只有2.3,它仍然是alpha版本,任何人都可以阅读它,上面还有一些额外的相关内容