Як я можу переключити існуючий набір сховищ Subversion на використання ActiveDirectory? (svnserve / windows)


12

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

ОНОВЛЕННЯ 4: Найпізніша публікація, яку я знайшов на цю тему, звучить так, ніби відповідні бінарні файли () доступні через бібліотеку MIT Kerberos, але це здається, що у автора цього повідомлення на Nabble.com все ще виникають проблеми з тим, як працювати .

ОНОВЛЕННЯ 5: Це схоже на дискусії TortoiseSVN, а також цей пост на svn.haxx.seщо навіть якщо saslgssapi.dll або будь-які необхідні бінарні файли доступні та налаштовані на сервері Windows, клієнтам також знадобиться така ж настройка для роботи з цими сховищами. Якщо це правда, ми зможемо отримати підтримку ActiveDirectory від клієнта Windows тільки в тому випадку, якщо в цих клієнтах будуть внесені зміни, такі як TortoiseSVN та CollabNet побудова клієнтських бінарних файлів для підтримки таких схем аутентифікації. Незважаючи на те, що пропонують ці публікації, це суперечить тому, що я спочатку припускав, що я читав з іншого читання, оскільки сумісність з SASL не потребує змін клієнта, а лише налаштування сервера для роботи з механізмом аутентифікації. Прочитавши трохи уважніше в документі про Сайрус 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?


то дивіться тут .. stackoverflow.com/questions/333146, але мені це здається цілком рушником. ви можете отримати IIS поруч з apache [запустивши другий, наприклад, на іншому порту або на іншому ip]
pQd

2
+1 для цього питання. Я щось хочу, щоб знайти відповідь і зазнати невдачі. Більшість людей здаються апашеми прийнятними (як правило, у візуальній формі). Але це біль, якщо у вас вже багато svn: // посилань. І мені просто краще запускати svnserve для доступу до сховища, а не apache.
Jim T

1
+1 дуже хотів це зробити і давно, я справді ненавиджу запускати apache на вікні Windows просто з принципу, коли це не потрібно ... додаткові бали за поєднання цього з SSL-доступом через IIS ^ ^
Оскар Дувеборн

@Oskar - Я думаю, що було б чудово, якби хтось створив модуль WAS для IIS7 і вище для розміщення як http-протоколу, заснованого на апачі, так і протоколу svnserve все в IIS. Якби у мене було більше часу на руках, я б заглибився у створення такого подібного в .NET як проект з відкритим кодом.
jpierson

Відповіді:


5

Як уже згадувалося, сервер VisualSVN - це потрібний вам інструмент. Це все-в-одному пакет для Windows, який просто випадково використовує Apache всередині нього - ви ніколи не дізнаєтесь, якщо б ви не ходили тикатися по колу, яку він встановлює, хоча всім користувач службою Windows, яка має оснащення mmc для адмініструвати його. Ви можете змінити порт, на якому він працює, якщо у вас вже є порт 80.

Наскільки я розумію, зараз працює над підтримкою sasl через svnserve.


Якщо б був спосіб змусити службу Apache працювати через IIS або вони обоє використовувати порт 80, то це було б чудово. На жаль, для тих, хто хоче дотримуватися svnserve або використовувати IIS, схоже, не існує багатьох варіантів, крім того, як чекати, коли робота над підтримкою sasl для svnserve завершиться. Якщо це не так вже й багато проблем, можете, будь ласка, зв’язатись з якимсь місцем, де ми можемо отримати актуальну інформацію про цю функцію? Проект SVN, хоча і останній час, здається, не повідомляє про свої зусилля та прогрес дуже добре для громади через їхню помилку.
jpierson

Мені цікаво, чи можете ви мати якийсь внесок у те, чи підтримала підтримка sasl, над якою працює / працює над svnserve. Чи можемо ми сподіватися, що в Subversion 1.7 буде покращено?
jpierson

1

Я використовую apache зі svn, що працює на Linux Debian, що авторизує againsta активний сервер каталогів. клієнти підключаються до сховища через протокол http. якщо ця установка прийнятна для вас - продовжуйте читати.

це також повинно працювати під apache для windows, але я ніколи не пробував цього. Далі йде специфіка для debian, але вона повинна працювати аналогічно під Windows / іншими дистрибутивами; ви не втратите свою історію svn під час міграції ...

встановити необхідне програмне забезпечення:

apt-get install libapache2-svn subversion apache2

в конфігурації для vhost apache [посилання на них можна знайти в / 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], вони побачать усю історію та продовжать читати / писати до неї.


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

1

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

є два варіанти , які потрібно встановити у файлі конфігурації sasl:

ntml_server

і необов'язково

ntml_v2

і звичайно, ви повинні встановити список mech у своєму конфігураційному файлі, щоб він включав NTML.

Я лише один раз спробував це з TSVN, коли реалізував всю справу. Але у мене був хтось інший, який створив для мене тестовий сервер, тому я не маю уявлення, які саме параметри конфігурації.


Відмінно, я спробую це незабаром і побачу, куди мені дістатися.
jpierson

Я спробував декілька речей, але завжди отримую таку помилку, коли намагаюся перевірити за допомогою TortoiseSVN. Помилка: Помилка автентифікації від сервера: SASL (-13): користувача не знайдено: Неможливо знайти помилку: зворотний виклик: 2
jpierson

"користувач не знайдений" або означає, що комп'ютер не є частиною домену, на який ви намагаєтесь пройти автентифікацію, або користувач не знає про домен. Можливо, ви можете спробувати захопити мережевий трафік і спробувати з’ясувати, що відбувається?
Стефан
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.