У меня есть набор частных репозиториев Subversion на компьютере с Windows Server 2003, доступ к которым разработчики получают через SVNServe по протоколу svn: //. В настоящее время мы используем authz и пароль файлы для каждого репозитория для управления доступом, однако с ростом числа репозиториев и разработчиков я рассматриваю возможность перехода на использование их учетных данных из ActiveDirectory. Мы работаем во всех магазинах Microsoft и используем IIS вместо Apache на всех наших веб-серверах, поэтому я предпочел бы продолжать использовать SVNServe, если это возможно.
Помимо того, что это возможно, меня также беспокоит, как перенести наши репозитории, чтобы история существующих пользователей соответствовала правильным учетным записям ActiveDirectory. Также имейте в виду, что я не сетевой администратор и не очень хорошо знаком с ActiveDirectory, поэтому мне, вероятно, придется обратиться к другим людям, чтобы при необходимости внести изменения в ActiveDirectory.
Какие у меня варианты?
ОБНОВЛЕНИЕ 1: Как видно из Документация SVN что с помощью SASL я смогу заставить SVNServe аутентифицироваться с помощью ActiveDirectory. Чтобы уточнить, ответ, который я ищу, заключается в том, как настроить SVNServe (если возможно) для использования ActiveDirectory для аутентификации, а затем как изменить существующий репозиторий, чтобы переназначить существующих пользователей svn на их учетные записи домена ActiveDirectory.
ОБНОВЛЕНИЕ 2: похоже, что поддержка SASL в SVNServe работает по модели плагина, и документация показана только в качестве примера. Глядя на Библиотека Cyrus SASL похоже, что поддерживается ряд «механизмов» аутентификации, но я не уверен, какой из них следует использовать для поддержки ActiveDirectory, и не могу найти никакой документации по таким вопросам.
ОБНОВЛЕНИЕ 3: Хорошо, похоже, что для связи с ActiveDirectory я хочу использовать Саслаутд вместо того sasldb для auxprop_plugin свойство. К сожалению, похоже, что согласно некоторым сообщениям (возможно, устаревшим и неточным) Саслаутд не основывается на Windows, и такие усилия считаются работа в процессе.
ОБНОВЛЕНИЕ 4: последнее сообщение, которое я нашел по этой теме, звучит так, как будто соответствующие двоичные файлы () доступны через Библиотека MIT Kerberos но похоже на автора этот пост на Nabble.com все еще возникают проблемы с работой.
ОБНОВЛЕНИЕ 5: похоже, из TortoiseSVN обсуждения а также этот пост на svn.haxx.se что даже если saslgssapi.dll или другие необходимые двоичные файлы доступны и настроены на сервере Windows, клиентам также потребуется такая же настройка для работы с этими репозиториями. Если это так, мы сможем получить поддержку ActiveDirectory от клиента Windows, только если в этих клиентах будут внесены изменения, такие как TortoiseSVN и сборка двоичных файлов CollabNet для поддержки таких схем аутентификации. Хотя это то, что предлагают эти сообщения, это противоречит тому, что я изначально предполагал из другого чтения, поскольку совместимость с SASL не должна требовать никаких изменений на клиенте, а только то, что сервер должен быть настроен для обработки механизма аутентификации. Прочитав немного внимательнее в документ о Cyrus SASL в Subversion В разделе 5 говорится: «1.5+ клиенты с поддержкой Cyrus SASL смогут аутентифицироваться на 1.5+ серверах с включенным SASL, при условии, что хотя бы один из механизмов, поддерживаемых сервером, также поддерживается клиентом». Очевидно, что поддержка GSSAPI (которая, как я понимаю, требуется для Active Directory) должна быть доступна как на клиенте, так и на сервере.
Должен сказать, я слишком много узнал о том, как Subversion обрабатывает аутентификацию, чем я когда-либо хотел. И, к сожалению, я просто искал ответ о том, могу ли я получить поддержку аутентификации Active Directory при использовании SVNServe на сервере Windows и доступе к нему из клиентов Windows. Согласно официальной документации, кажется, что это возможно, однако вы можете видеть, что конфигурация нетривиальна, если вообще возможна.
ОБНОВЛЕНИЕ: 6: Поскольку разработка Subversion 1.7 завершается, может ли кто-нибудь добавить что-нибудь о том, улучшит ли Subversion 1.7 ситуацию с аутентификацией SVNServe с использованием Active Directory?
Как уже упоминалось, VisualSVN Server - это то, что вам нужно. Это универсальный пакет для Windows, который просто использует Apache внутри - вы никогда не узнаете, если бы не пошли копаться в DLL, которые он устанавливает, хотя для всех это служба Windows, которая имеет оснастку mmc для управлять им. Вы можете изменить порт, на котором он работает, если у вас уже занят порт 80.
Насколько я понимаю, в настоящее время прорабатывается поддержка sasl через svnserve.
Вы можете использовать saslNTML вместо GSSAPI. Dll saslNTML устанавливается вместе с TSVN по умолчанию, и я думаю, что она также включена в клиент svn от collab.net.
есть два параметры вы должны установить в своем файле конфигурации sasl:
ntml_server
и необязательно
ntml_v2
и, конечно, вы должны установить список мехов в вашем файле конфигурации, чтобы включить NTML.
Я только один раз пробовал это с TSVN, когда реализовал все это. Но у меня был кто-то другой настроил для меня тестовый сервер, поэтому я понятия не имею, каковы точные параметры конфигурации.
Я использую apache с svn, работающим на debian linux, авторизуясь на сервере Active Directory. клиенты подключаются к репозиторию по протоколу http. если такая настройка вам подходит - продолжайте читать.
это также должно работать под apache для Windows, но я никогда не пробовал. то, что следует ниже, специфично для Debian, но должно работать аналогично в Windows / других дистрибутивах; вы не потеряете свою историю svn во время миграции ...
установить необходимое программное обеспечение:
apt-get install libapache2-svn subversion apache2
в конфигурации для apache vhost [символические ссылки на них можно найти в / etc / apache2 / sites-enabled]. внутри VirtualHost добавьте:
<Location /svn>
DAV svn
#change this to actual path
SVNPath /full/path/to/your/current/svn/directory
AuthType Basic
AuthName "SVN Server"
AuthBasicProvider ldap
AuthzLDAPAuthoritative Off
# provide here credentials for existing domain user.
# in my case domain is called domainName and user - user
AuthLDAPBindDN "domainName\user"
AuthLDAPBindPassword usersPassword
# put here ip of the domain controler and full path to OU containing accounts
AuthLDAPURL ldap://10.11.22.33:389/ou=Users,dc=domainName,dc=companyName,dc=whatever?sAMAccountName?sub?(objectClass=*)
Require valid-user
SVNAutoversioning on
AuthzSVNAccessFile /etc/apache2/svn_authz
</Location>
убедитесь, что apache загружает модуль ldap:
cd /etc/apache2/mods-enabled
ln -s ../mods-available/authnz_ldap.load
ln -s ../mods-available/ldap.load
/etc/init.d/apache2 reload
убедитесь, что apache может изменять файлы в репозитории svn:
chown www-data:www-data -R /full/path/to/your/current/svn/directory
ваш svn_authz должен содержать правила, указывающие, кто к чему имеет доступ. в моем случае:
[groups]
ops=jack.brown,john.smith
[/]
* = rw
[/priv]
* =
@ops = rw
вы можете узнать больше о синтаксисе этого файла Вот.
если вы зашли так далеко - ваши пользователи могут оформить заказ http: //server.address/svn/ используя любой клиент svn [черепаха / cmdline / visual svn], они увидят всю историю и продолжат чтение / запись в нее.