我正在尝试对通过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>
答案 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。