Jak mogę przełączyć istniejący zestaw repozytoriów Subversion, aby korzystać z ActiveDirectory? (svnserve / windows)

12

Mam zestaw prywatnych repozytoriów Subversion na komputerze z systemem Windows Server 2003, do którego programiści uzyskują dostęp za pośrednictwem SVNServe za pośrednictwem protokołu svn: //. Obecnie używamy plików authz i passwd dla każdego repozytorium do kontrolowania dostępu, jednak wraz z rosnącą liczbą repozytoriów i programistów rozważam przejście na używanie ich poświadczeń z ActiveDirectory. Działamy w sklepie Microsoft i używamy IIS zamiast Apache na wszystkich naszych serwerach internetowych, więc wolę nadal używać SVNServe, jeśli to możliwe.

Oprócz tego jestem również zaniepokojony tym, jak migrować nasze repozytoria, aby historia istniejących użytkowników była mapowana na prawidłowe konta ActiveDirectory. Pamiętaj również, że nie jestem administratorem sieci i nie znam się dobrze z ActiveDirectory, więc prawdopodobnie będę musiał przejść przez inne osoby, aby w razie potrzeby wprowadzić zmiany w ActiveDirectory.

Jakie są moje opcje?

AKTUALIZACJA 1: Z dokumentacji SVN wynika, że korzystając z SASL powinienem mieć możliwość uwierzytelnienia SVNServe za pomocą ActiveDirectory. Aby wyjaśnić, odpowiedź, której szukam, brzmi: jak skonfigurować SVNServe (jeśli to możliwe) do używania ActiveDirectory do uwierzytelniania, a następnie jak zmodyfikować istniejące repozytorium, aby ponownie przypisać istniejących użytkowników svn do ich kont logowania do domeny ActiveDirectory.

AKTUALIZACJA 2: Wygląda na to, że obsługa SASL w SVNServe działa na podstawie modelu wtyczki, a dokumentacja pokazuje tylko jako przykład. Patrząc na bibliotekę Cyrus SASL wygląda na to, że obsługiwanych jest wiele „mechanizmów” uwierzytelniania, ale nie jestem pewien, który z nich będzie używany do obsługi ActiveDirectory, ani nie mogę znaleźć żadnej dokumentacji dotyczącej takich kwestii.

AKTUALIZACJA 3: Ok, wygląda na to, że do komunikacji z ActiveDirectory chcę użyć saslauthd zamiast sasldb dla właściwości auxprop_plugin . Niestety wydaje się, że według niektórych postów (być może przestarzałych i niedokładnych) saslauthd nie opiera się na systemie Windows i takie starania są uważane za prace w toku .

AKTUALIZACJA 4: Ostatni post, który znalazłem na ten temat, brzmi tak, jakby odpowiednie pliki binarne () były dostępne za pośrednictwem biblioteki Kerberos MIT, ale wygląda na to, że autor tego postu na Nabble.com nadal ma problemy z działaniem .

AKTUALIZACJA 5: Wygląda jak z dyskusji TortoiseSVN, a także z tego postu na svn.haxx.seże nawet jeśli saslgssapi.dll lub inne niezbędne pliki binarne są dostępne i skonfigurowane na serwerze Windows, klienci również będą potrzebować tego samego dostosowania w celu pracy z tymi repozytoriami. Jeśli to prawda, będziemy mogli uzyskać wsparcie ActiveDirectory z klienta Windows tylko wtedy, gdy zostaną wprowadzone zmiany w tych klientach, takich jak TortoiseSVN i kompilacja plików binarnych klienta CollabNet w celu obsługi takich schematów uwierzytelniania. Chociaż takie są sugestie tych postów, jest to sprzeczne z tym, co pierwotnie zakładałem na podstawie innych odczytów, że zgodność z SASL nie powinna wymagać żadnych zmian na kliencie, a jedynie skonfigurowanie serwera do obsługi mechanizmu uwierzytelniania. Po dokładniejszym przeczytaniu dokumentu o Cyrus SASL w Subversionsekcja 5 stwierdza: „Klienci 1.5+ z obsługą Cyrus SASL będą mogli uwierzytelniać się na serwerach 1.5+ z włączoną obsługą SASL, pod warunkiem, że klient obsługuje co najmniej jeden z mechanizmów obsługiwanych przez serwer”. Tak więc obsługa GSSAPI (która, jak rozumiem, jest wymagana dla Active Directory), musi być dostępna na kliencie i serwerze.

Muszę powiedzieć, że dowiaduję się o wiele za dużo o tym, jak Subversion obsługuje uwierzytelnianie, niż kiedykolwiek chciałem. I niestety po prostu szukałem odpowiedzi na pytanie, czy mogę mieć obsługę uwierzytelniania Active Directory podczas używania SVNServe na serwerze Windows i uzyskiwania dostępu do tego z klientów Windows. Według oficjalnej dokumentacji wydaje się, że jest to możliwe, jednak można zauważyć, że konfiguracja nie jest trywialna, jeśli w ogóle możliwa.

AKTUALIZACJA: 6: Ponieważ prace nad Subversion 1.7 się kończą, czy ktoś mógłby dodać coś o tym, czy Subversion 1.7 poprawi się po uzyskaniu uwierzytelnienia SVNServe przy użyciu Active Directory?

jpierson
źródło
spójrz tutaj .. stackoverflow.com/questions/333146, ale wydaje mi się, że to całkiem niezły hack. możesz uzyskać IIS ramię w ramię z apache [uruchamiając drugi np. na innym porcie lub innym IP]
pQd
2
+1 za to pytanie. To jest coś, na co wciąż chcę znaleźć odpowiedź, ale mi się nie udaje. Większość ludzi uważa apache za akceptowalny (zwykle w formie visualsvn). Ale to jest ból, jeśli masz już dużo referencji svn: //. I po prostu lepiej mi jest uruchomić svnserve dla dostępu do repozytorium niż apache.
Jim T
1
+1 naprawdę bardzo chciałem to zrobić dawno temu, naprawdę nie lubię uruchamiać apache na Windowsie po prostu z zasady, kiedy nie powinno być to potrzebne ... dodatkowe punkty za połączenie tego z dostępem SSL przez IIS ^ ^
Oskar Duveborn,
@Oskar - Myślę, że byłoby wspaniale, gdyby ktoś stworzył moduł WAS dla IIS7 i do obsługi zarówno protokołu HTTP opartego na Apache, jak i protokołu svnserve w ramach IIS. Gdybym miał więcej czasu, zagłębiłbym się w tworzenie czegoś takiego w .NET jako projekt open source.
jpierson

Odpowiedzi:

5

Jak już wspomniano, VisualSVN Server to narzędzie, którego potrzebujesz. Jest to pakiet „wszystko w jednym” dla systemu Windows, który akurat używa w nim Apache - nigdy byś się nie dowiedział, chyba że poszedłbyś szukać w instalowanych przez siebie bibliotekach DLL, dla wszystkich jest to usługa systemu Windows z przystawką mmc do podaj to. Możesz zmienić port, na którym działa, jeśli już masz zajęty port 80.

Rozumiem, że obecnie obsługiwane jest wsparcie Sasl przez svnserve.

gbjbaanb
źródło
Gdyby istniał sposób, aby usługa Apache działała przez IIS lub aby oba korzystały z portu 80, byłoby świetnie. Na nieszczęście dla tych, którzy chcą trzymać się svnserve lub korzystać z IIS, wydaje się, że nie ma wielu innych opcji, niż czekać, aby sprawdzić, czy praca nad sasl dla svnserve zakończy się. Jeśli nie jest to zbyt duży problem, czy możesz połączyć się z miejscem, w którym możemy uzyskać aktualne informacje na temat tej funkcji? Projekt SVN, choć nowszy, wydaje się nie przekazywać informacji o swoich wysiłkach i postępach społeczności za pośrednictwem narzędzia do śledzenia błędów.
jpierson
Ciekawe, czy możesz mieć jakiś wkład w to, czy obsługa sasl, nad którą s / s było opracowywane dla svnserve, przyniosła jakiekolwiek efekty. Czy możemy spodziewać się poprawy w Subversion 1.7?
jpierson
1

Używam apache z svn działającym na systemie Debian Linux autoryzującym serwer Active Directory. klienci łączą się z repozytorium za pomocą protokołu HTTP. jeśli ta konfiguracja jest dla Ciebie do zaakceptowania - kontynuuj czytanie.

powinno to również działać pod apache dla Windows, ale nigdy tego nie próbowałem. to, co następuje, jest specyficzne dla Debiana, ale powinno działać podobnie w systemie Windows / innych dystrybucjach; nie stracisz historii svn podczas migracji ...

zainstaluj wymagane oprogramowanie:

apt-get install libapache2-svn subversion apache2

w konfiguracji dla vhosta Apache [dowiązania do nich można znaleźć w / etc / apache2 / sites-enabled]. wewnątrz VirtualHost dodaj:

<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>

upewnij się, że apache ładuje moduł ldap:

cd /etc/apache2/mods-enabled
ln -s ../mods-available/authnz_ldap.load
ln -s ../mods-available/ldap.load
/etc/init.d/apache2 reload

upewnij się, że apache może modyfikować pliki w repozytorium svn:

chown www-data:www-data -R /full/path/to/your/current/svn/directory

twój svn_authz powinien zawierać reguły informujące, kto może uzyskać dostęp do czego. w moim przypadku:

[groups]
ops=jack.brown,john.smith

[/]
* = rw

[/priv]
* =
@ops = rw

Więcej informacji o składni tego pliku można znaleźć tutaj .

jeśli doszedłeś tak daleko - użytkownicy mogą sprawdzić z http: //server.address/svn/ za pomocą dowolnego klienta svn [tortoise / cmdline / visual svn], zobaczą całą historię i będą kontynuować czytanie / pisanie do niej.

pQd
źródło
1
Używanie Apache może być dopuszczalne, jeśli nie ma innych alternatyw, ale na razie mamy już kilka adresów URL svn: //, do których odwołujemy się na naszych wewnętrznych forach i oprogramowaniu do śledzenia błędów i wolimy nadal używać tych adresów URL. Również otworzyliśmy już powiązane porty dla SVNServe w naszej zaporze ogniowej. Jeśli istniał sposób na uruchomienie Appache wraz z IIS na moim Windows Server 2003 box, to może to być realistyczna metoda, ale teraz jestem bardziej zainteresowany tym, jak uzyskać uwierzytelnianie SVNServe za pomocą ActiveDirectory.
jpierson
1

Możesz użyć saslNTML zamiast GSSAPI. Biblioteka dll saslNTML jest domyślnie instalowana z TSVN i myślę, że jest również zawarta w kliencie svn z collab.net.

w pliku konfiguracyjnym sasl musisz ustawić dwie opcje :

ntml_server

i opcjonalnie

ntml_v2

i oczywiście musisz ustawić listę mechów w pliku konfiguracyjnym, aby zawierała NTML.

Próbowałem tego tylko raz z TSVN, kiedy wszystko zaimplementowałem. Ale miałem kogoś innego, który skonfigurował dla mnie serwer testowy, więc nie mam pojęcia, jakie są dokładne opcje konfiguracji.

Stefan
źródło
Doskonale, wkrótce to wypróbuję i zobaczę, gdzie mogę się dostać.
jpierson
Próbowałem wielu rzeczy, ale zawsze pojawia się następujący błąd podczas próby wyewidencjonowania za pomocą TortoiseSVN. Błąd: Błąd uwierzytelnienia z serwera: SASL (-13): nie znaleziono użytkownika: Nie można znaleźć błędu: oddzwonienie: 2
jpierson
„nie znaleziono użytkownika” oznacza, że ​​komputer nie jest częścią domeny, w której próbujesz się uwierzytelnić, lub użytkownik nie jest znany w domenie. Może możesz spróbować przechwycić ruch sieciowy i dowiedzieć się, co się dzieje?
Stefan,