Turns out I was nearly there. I simply missed the AuthzLDAPAuthoritative off
directive which is specific to my instance.
As a further note we also wanted to limit the repo to only identified users so we chained the authentication with a file as well. Example below:
RedirectMatch ^(/repos)$ $1/
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
<Location /repos/>
DAV svn
SVNParentPath /var/svn/repos
SVNListParentPath On
SVNAutoversioning On
AuthType Basic
AuthName "Subversion Repository"
AuthBasicProvider file ldap
AuthzLDAPAuthoritative off
AuthLDAPBindDN "OU=Service Accounts,OU=User Accounts,DC=example,DC=com"
AuthLDAPBindPassword xXxXxXx
AuthLDAPUrl "ldap://ldap.example.com:389/OU=User Accounts,DC=example,DC=com?sAMAccountName?sub?(objectClass=user)"
AuthzSVNAccessFile /etc/svn-authn
SVNIndexXSLT "/styles/svnindexICore.xsl"
AuthUserFile /etc/svn-auth-file
#AuthBasicProvider file ldap
Require valid-user
</Location>
Я не знаю о LDAP, поскольку я использовал автора SSPI для своей установки. Но я нашел эти страницы с хорошими деталями о конфигурации LDAP. (На всякий случай Вы еще не добрались до них):
http://blogs.open.collab.net/svn/2009/03/subversion-with-apache-and-ldap-updated.html
Апачская версия, кажется, имеет значение к синтаксису.
Также порядок, в котором загружаются модули LDAP.
Ваш LDAPUrl заставляет апача создать запрос: &(objectClass=user)(sAMAccountName=myuser)
И Ваш запрос командной строки: &(objectClass=user)(cn=myuser)
Какой корректен? Если Вы говорите, что Ваши тестовые работы командной строки хорошо, то Вам, вероятно, нужно:
AuthLDAPUrl "ldap://my.example.com:389/ou=User Accounts,dc=my,dc=example,dc=com?cn?sub?(objectClass=user)" NONE
У меня была такая же проблема. Идентичная конфигурация, которую я тестировал на Ubuntu, не работала на RHEL5. Я перешел с порта 389 на порт 3268 после прочтения этого , и это устранило мою проблему.
Сравнивая вашу конфигурацию с рабочей конфигурацией с Active Directory в Apache 2.2.3, я вижу только следующие различия:
AuthLDAPBindDN
NONE
после моего AuthLDAPURL
Помимо этих предложений, я бы порекомендовал запустить tcpdump
для разговора между Apache и Active Directory, чтобы узнать, что там происходит.