Ich habe eine Reihe von privaten Subversion-Repositorys auf einer Windows Server 2003-Box, auf die Entwickler über SVNServe über das Protokoll svn: // zugreifen. Derzeit verwenden wir die Dateien authz und passwd für jedes Repository, um den Zugriff zu steuern. Angesichts der wachsenden Anzahl von Repositorys und Entwicklern erwäge ich jedoch, auf die Verwendung ihrer Anmeldeinformationen aus ActiveDirectory umzusteigen. Wir laufen in einem Microsoft-Shop und verwenden IIS anstelle von Apache auf allen unseren Webservern. Daher würde ich es vorziehen, SVNServe weiterhin zu verwenden, wenn dies möglich ist.
Abgesehen davon, dass es möglich ist, mache ich mir auch Gedanken darüber, wie unsere Repositorys migriert werden sollen, damit der Verlauf für die vorhandenen Benutzer den richtigen ActiveDirectory-Konten zugeordnet wird. Denken Sie auch daran, dass ich nicht der Netzwerkadministrator bin und mit ActiveDirectory nicht sonderlich vertraut bin. Daher muss ich wahrscheinlich einige andere Personen kontaktieren, um die Änderungen in ActiveDirectory vorzunehmen, falls erforderlich.
Welche Möglichkeiten habe ich?
UPDATE 1: Aus der SVN-Dokumentation geht hervor, dass ich mit SASL SVNServe dazu bringen sollte, sich mit ActiveDirectory zu authentifizieren. Um dies zu verdeutlichen, ist die gesuchte Antwort, wie Sie SVNServe (falls möglich) so konfigurieren, dass ActiveDirectory für die Authentifizierung verwendet wird, und wie Sie ein vorhandenes Repository ändern, um vorhandene svn-Benutzer ihren ActiveDirectory-Domänen-Anmeldekonten neu zuzuordnen.
UPDATE 2: Es scheint, dass die SASL-Unterstützung in SVNServe von einem Plugin-Modell ausgeht und die Dokumentation nur als Beispiel dient. In der Cyrus SASL-Bibliothek sieht es so aus, als ob eine Reihe von "Authentifizierungsmechanismen" unterstützt werden. Ich bin mir jedoch nicht sicher, welche für die ActiveDirectory-Unterstützung verwendet werden sollen, und ich kann auch keine Dokumentation zu solchen Themen finden.
UPDATE 3: Ok, es sieht so aus, als würde ich zur Kommunikation mit ActiveDirectory saslauthd anstelle von sasldb für die auxprop_plugin -Eigenschaft verwenden . Leider scheint es, dass saslauthd einigen Posts zufolge (möglicherweise veraltet und ungenau) nicht auf Windows aufbaut und solche Bemühungen als in Arbeit betrachtet werden .
UPDATE 4: Der letzte Beitrag, den ich zu diesem Thema gefunden habe, klingt so, als ob die richtigen Binärdateien () in der MIT Kerberos-Bibliothek verfügbar sind, aber es scheint, als ob der Autor dieses Beitrags auf Nabble.com immer noch Probleme hat, die Dinge zum Laufen zu bringen .
UPDATE 5: Es sieht aus wie aus den TortoiseSVN Diskussionen und auch diesem Beitrag auf svn.haxx.seDies gilt auch dann, wenn saslgssapi.dll oder die erforderlichen Binärdateien auf dem Windows-Server verfügbar und konfiguriert sind und die Clients dieselbe Anpassung benötigen, um mit diesen Repositorys zu arbeiten. Wenn dies zutrifft, können wir ActiveDirectory-Unterstützung nur von einem Windows-Client erhalten, wenn Änderungen an diesen Clients vorgenommen werden, z. B. TortoiseSVN und CollabNet-Build der Client-Binärdateien, um solche Authentifizierungsschemata zu unterstützen. Obwohl dies in diesen Beiträgen vorgeschlagen wird, ist dies ein Widerspruch zu der ursprünglichen Annahme, dass SASL-kompatibel keine Änderungen auf dem Client erfordern sollte, sondern lediglich, dass der Server für die Behandlung des Authentifizierungsmechanismus eingerichtet wird. Nachdem Sie das Dokument über Cyrus SASL in Subversion etwas genauer gelesen habenIn Abschnitt 5 heißt es: "Clients ab 1.5 mit Cyrus SASL-Unterstützung können sich bei aktivierten SASL-Servern ab 1.5 authentifizieren, sofern mindestens einer der vom Server unterstützten Mechanismen auch vom Client unterstützt wird." Aus diesem Grund muss die GSSAPI-Unterstützung (die meines Wissens für Active Directory erforderlich ist) sowohl auf dem Client als auch auf dem Server verfügbar sein.
Ich muss sagen, ich lerne viel zu viel über die Interna, wie Subversion mit Authentifizierung umgeht, als ich es jemals wollte. Und leider suchte ich nur nach einer Antwort, ob ich Unterstützung für die Active Directory-Authentifizierung haben kann, wenn ich SVNServe auf einem Windows-Server verwende und von Windows-Clients aus darauf zugreife. Laut der offiziellen Dokumentation scheint dies möglich zu sein, Sie können jedoch feststellen, dass die Konfiguration nicht trivial ist, wenn überhaupt möglich.
UPDATE: 6: Könnte irgendjemand etwas darüber sagen, ob Subversion 1.7 die Situation verbessern wird, SVNServe dazu zu bringen, sich mit Active Directory zu authentifizieren?
Antworten:
Wie bereits erwähnt, ist VisualSVN Server das gewünschte Tool. Es ist ein All-in-One-Paket für Windows, das nur zufällig Apache verwendet. Sie werden es nie erfahren, es sei denn, Sie stöbern in den DLLs, die es installiert. Für alle ist es ein Windows-Dienst, der ein MMC-Snap-In hat verwalte es. Sie können den Port ändern, auf dem es ausgeführt wird, wenn Port 80 bereits belegt ist.
Ich verstehe, dass derzeit an der Unterstützung von sasl durch svnserve gearbeitet wird.
quelle
Ich verwende Apache mit Svn unter Debian Linux, das die Autorisierung für einen Active Directory-Server vornimmt. Clients stellen über das http-Protokoll eine Verbindung zum Repository her. Wenn dieses Setup für Sie akzeptabel ist, lesen Sie weiter.
Dies sollte auch unter Apache für Windows funktionieren, aber ich habe es nie ausprobiert. was folgt ist debian-spezifisch, sollte aber unter Windows / anderen Distributionen ähnlich funktionieren; Sie werden Ihre SVN-Geschichte während der Migration nicht verlieren ...
benötigte Software installieren:
in der Konfiguration für den vhost von apache [symlinks zu diesen finden Sie in / etc / apache2 / sites-enabled]. in VirtualHost hinzufügen:
Stellen Sie sicher, dass Apache das LDAP-Modul lädt:
Stellen Sie sicher, dass Apache Dateien im SVN-Repository ändern kann:
Ihr svn_authz sollte Regeln enthalten, die angeben, wer auf was zugreifen kann. in meinem Fall:
Weitere Informationen zur Syntax für diese Datei finden Sie hier .
Wenn Sie so weit gekommen sind, können Ihre Benutzer mit einem beliebigen SVN-Client von http: //server.address/svn/ auschecken [tortoise / cmdline / visual svn]. Sie sehen dann den gesamten Verlauf und lesen / schreiben weiter.
quelle
Sie könnten saslNTML anstelle von GSSAPI verwenden. Die saslNTML-DLL wird standardmäßig mit TSVN installiert, und ich denke, sie ist auch im svn-Client von collab.net enthalten.
Es gibt zwei Optionen, die Sie in Ihrer sasl-Konfigurationsdatei einstellen müssen:
und optional
und natürlich müssen Sie die Mech-Liste in Ihrer Konfigurationsdatei so einstellen, dass sie NTML enthält.
Ich habe das nur einmal mit TSVN versucht, als ich das Ganze implementiert habe. Aber ich hatte jemand anderes einen Testserver für mich eingerichtet, damit ich keine Ahnung habe, was die genauen Konfigurationsoptionen sind.
quelle