Настройка сервера SVN для нескольких пользователей по http

Настройка сервера SVN для нескольких пользователей по http

Функция аннотирования SVN довольно мощная и позволяет быстро определить, кого отслеживать для определенной функции в определенной строке кода. Эта функция становится немного более ограниченной (но все еще полезной), если пользователи получают доступ к SVN через http. При этом не происходит обмена учетными данными, поэтому аннотация не показывает имени строки, измененной разработчиком, который использует http для фиксации изменения.

Вопрос в том, есть ли способ для разработчика передать какие-либо учетные данные в SVN на сервере, чтобы однозначно идентифицировать его коммит? В этой среде требуется только наличие идентификатора. Альтернативные методы, такие как svn+ssh и файловые протоколы, недоступны. Наконец, этот сервер находится во внутренней локальной сети, а не публичной. Советы по https также приветствуются.

Сервер SVN работает на Linux с Apache2.

решение1

в конфигурации Apache:

<Location /svn>
    DAV svn
    SVNPath /mnt/big/svn
    AuthType Basic
    AuthName "SVN Server"
    AuthUserFile /etc/apache2/svn.pass
    Require valid-user
    AuthzSVNAccessFile /etc/apache2/svn_authz

и /etc/apache2/svn_authz может содержать детальное управление тем, кто и к чему может получить доступ:

[groups]
ops=user1,user2
it=user2,user3

[/]
* = rw

[/ops]
* =
@ops=rw

[/ro]
* = 
@ops = r
@it = r
user4 = rw

Если у вас есть ldap / сервер Active Directory, вы можете использовать его вместо AuthUserFile для аутентификации Apache.

решение2

Поскольку вы используете SVN через Apache, вы можете воспользоваться встроенными методами аутентификации Apache для управления доступом/отслеживания изменений в вашем репозитории. Пример ниже будет работать с настройкой в ​​стиле htaccess:

AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /path/to/user/list
Require valid-user

Вы можете настроить это в файле htaccess или в файле конфигурации VirtualHost.

решение3

Короткий ответ:mod_authz_svn

Немного информации об Apache + SVN + Mod_Autz_SVN и кое-что еще вы можете узнать из моих слайдов, представленных на Международной конференции PHP '09, доступных по адресуhttp://superalbert.it/download/misc/PHPCon09_SVN_advanced.pdf

решение4

В этом ответе предполагается, что ваши разработчики используют Windows и у вас есть контроллер домена Active Directory.

Вы можете присоединить сервер Linux SVN к домену, выполнив следующие действия:статья.

Оттуда вы настраиваете apache для аутентификации в AD с использованием Kerberos. Сначала установитеmod_auth_kerb, затем подключите apache2 к kerberos для аутентификации. См. Microsoftдокументация. Обязательно реализуйте SSL, если вас хоть как-то беспокоит безопасность между клиентом и сервером.

После того, как вы закончите, пользователи смогут войти в систему, используя свои пароли Windows, и действия будут назначены их пользователю.

К сожалению, я не могу предоставить вам конкретную информацию о конфигурации прямо сейчас, так как я нахожусь вне офиса и не имею доступа к нашему серверу SVN.

Связанный контент