Как я могу переключить существующий набор хранилищ Subversion на использование ActiveDirectory? (Svnserve / окна)

12

У меня есть набор частных репозиториев Subversion на Windows Server 2003, к которым разработчики получают доступ через SVNServe по протоколу svn: //. В настоящее время мы используем файлы authz и passwd для каждого репозитория для управления доступом, однако, с ростом числа репозиториев и разработчиков, я рассматриваю возможность перехода на использование их учетных данных из 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 я собираюсь использовать saslauthd вместо sasldb для свойства auxprop_plugin . К сожалению, похоже, что согласно некоторым сообщениям (возможно, устаревшим и неточным) saslauthd не опирается на 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?

jpierson
источник
тогда посмотрите здесь .. stackoverflow.com/questions/333146 но мне кажется, что это довольно взломать. вы можете получить IIS бок о бок с apache [запустив второй, например, на другом порту или на другом ip]
pQd
2
+1 за этот вопрос. Это то, на что я продолжаю хотеть найти ответ и не могу. Большинство людей считают Apache приемлемым (обычно в визуальной форме). Но это неприятно, если у вас уже есть много ссылок svn: //. И мне просто лучше запускать svnserve для доступа к репозиторию, а не apache.
Джим Т
1
+1 очень хотел сделать это давным-давно, я действительно ненавижу запуск апача на оконной коробке, просто из принципа, когда это не нужно ... дополнительные баллы за сочетание этого с доступом SSL через IIS ^ ^
Оскар Дюверборн
@ Оскар - Я думаю, было бы замечательно, если бы кто-нибудь создал модуль WAS для IIS7 и выше для размещения как протокола http на основе apache, так и протокола svnserve в рамках IIS. Если бы у меня было больше времени, я бы углубился в создание чего-то подобного в .NET как проект с открытым исходным кодом.
jpierson

Ответы:

5

Как уже упоминалось, VisualSVN Server - это инструмент, который вам нужен. Это пакет «все в одном» для Windows, который, как оказалось, использует Apache внутри него - вы никогда не узнаете, если не покопаетесь в dll, который он устанавливает, для всех - это служба Windows, которая имеет оснастку mmc для администрировать это. Вы можете изменить порт, на котором он работает, если у вас уже занят порт 80.

Я понимаю, что поддержка sasl через svnserve сейчас работает.

gbjbaanb
источник
Если бы был способ заставить службу Apache работать через IIS или использовать оба порта 80, это было бы здорово. К сожалению, для тех, кто хочет придерживаться svnserve или использовать IIS, кажется, нет других вариантов, кроме как ждать, чтобы увидеть, завершается ли работа по поддержке sasl для svnserve. Если это не так уж и сложно, не могли бы вы дать ссылку на какое-нибудь место, где мы можем получить актуальную информацию об этой функции? Проект SVN, хотя и более недавний, кажется, не сообщает о своих усилиях и прогрессе сообществу через систему отслеживания ошибок.
jpierson
Мне любопытно, есть ли у вас какие-либо сведения о том, достигла ли sasl-поддержка, над которой работает / работает svnserve, какой-либо результат. Можем ли мы ожидать каких-либо улучшений в Subversion 1.7?
jpierson
1

я использую apache с svn, работающим на Debian Linux, авторизирующим снова активный сервер каталогов. клиенты подключаются к хранилищу по протоколу 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-клиент [tortoise / cmdline / visual svn], они увидят всю историю и продолжат чтение / запись в нее.

PQD
источник
1
Использование Apache может быть приемлемым, если нет других альтернатив, но на данный момент у нас уже есть несколько URL-адресов svn: //, на которые есть ссылки на наших внутренних форумах и в программном обеспечении отслеживания ошибок, и мы предпочли бы продолжать использовать эти URL-адреса. Также мы уже открыли соответствующие порты для SVNServe в нашем брандмауэре. Если был способ запустить Appache вместе с IIS на моем компьютере с Windows Server 2003, то это может быть реалистичным способом попробовать, хотя сейчас меня больше интересует, как заставить SVNServe проходить аутентификацию с использованием ActiveDirectory.
jpierson
1

Вы можете использовать saslNTML вместо GSSAPI. DLL-файл saslNTML по умолчанию устанавливается вместе с TSVN, и я думаю, что он также включен в svn-клиент от collab.net.

В вашем конфигурационном файле sasl есть две опции :

ntml_server

и необязательно

ntml_v2

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

Я только попробовал это однажды с TSVN, когда я реализовал все это. Но у меня был кто-то другой, настроивший для меня тестовый сервер, поэтому я понятия не имею, какие именно параметры конфигурации.

Стефан
источник
Отлично, скоро попробую и посмотрю, где можно найти.
jpierson
Я пробовал несколько вещей, но всегда получаю следующую ошибку, когда пытаюсь оформить заказ с помощью TortoiseSVN. Ошибка: ошибка аутентификации с сервера: SASL (-13): пользователь не найден: невозможно найти ошибку: обратный вызов: 2
jpierson
«пользователь не найден» означает, что компьютер не является частью домена, в котором вы пытаетесь пройти аутентификацию, или пользователь не известен в домене. Может быть, вы можете попытаться захватить сетевой трафик и попытаться выяснить, что происходит?
Стефан