пятница, 8 мая 2009 г.

SVN + LDAP + HTTPD

Теория. Чтобы управлять доступом к СВН репозиторию, можно пользоваться списками доступа, как это описано практически во всех руководствах по СВН. Текстовый файл, всё просто и ясно. Чтобы не создавать его руками, можно использовать одну из десятка аналогичных найденых на freshmeat.net. Лично я пользовался USVN.
Прошло время, и для авторизации я начал использовать LDAP, но разрешения по-прежнему раздавал USVN. Чтобы пользоваться исключительно LDAP, я создал специальную группу ou=svn,ou=Groups,dc=domain,dc=com и добавил в нее нужных мне людей.
И сразу проблема. Стоит добавить пользователя в эту группу, апач (httpd) отказывается пускать свеже-добавленного пользователя, пока не будет перезапущен. При чем с текстовыми файлами такой проблемы не наблюдалось - как только добавил пользователя в список доступа - он тут же получает доступ. Такой ход событий мне совсем не нравился, и причина была найдена. Кэширование LDAP-записей апачем всему виной. Чтобы решить проблему, пришлось запретить кэширование совсем. Не знаю как это отразиться на крупных инсталяциях httpd+mod_svn_ldap, но я пока ничего страшного не заметил.
Итак, в конфигурацию сервера добавляем строку:
LDAPOpCacheEntries 0
Настройка самого mod_svn, прописанная в конфигурации виртуального хоста может быть следующей:

'<'Location'>'
ErrorDocument 404 default
DAV svn
SVNParentPath /var/svn
SVNListParentPath off

AuthName "svn"
AuthType Basic
AuthBasicProvider ldap
AuthzLDAPAuthoritative on
AuthLDAPUrl ldap://localhost/ou=Users,dc=domain,dc=com?uid
AuthLDAPGroupAttribute memberUid
AuthLDAPGroupAttributeIsDN off
require ldap-group cn=SVN,ou=Groups,dc=domain,dc=com

'<'/Location'>'
Собственно, теперь можно отказаться от услуг "третьих" программ по управлению доступом к SVN репозиторию.

Комментариев нет: