fragen stichworte

Wie kann ich einen vorhandenen Satz von Subversion-Repositorys auf ActiveDirectory umstellen? (svnserve / windows)

Ich habe eine Reihe privater Subversion-Repositorys auf einer Windows Server 2003-Box, auf die Entwickler über SVNServe über das Protokoll svn://zugreifen. Momentan haben wir für jedes Repository die Dateien authz und passwd verwendet, um den Zugriff zu steuern. Bei der wachsenden Anzahl von Repositorys und Entwicklern erwäge ich jedoch, die Berechtigungsnachweise von ActiveDirectory zu verwenden . Wir betreiben einen Microsoft-Shop und verwenden IIS anstelle von Apache auf all unseren Webservern. Daher würde ich es vorziehen, SVNServe nach Möglichkeit weiter zu verwenden.

Neben der Möglichkeit ist es mir auch wichtig, wie unsere Repositorys so migriert werden, dass der Verlauf der vorhandenen Benutzer den korrekten ActiveDirectory-Konten zugeordnet wird. Denken Sie auch daran, dass ich nicht der Netzwerkadministrator bin und mit ActiveDirectory nicht so gut vertraut bin, dass ich wahrscheinlich einige andere Personen durchlaufen muss, um die Änderungen in ActiveDirectory abrufen zu können.

Was sind meine Optionen?

UPDATE 1: Aus der SVN-Dokumentation geht hervor, dass ich mithilfe von SASL in der Lage sein sollte, SVNServe mithilfe von ActiveDirectory zu authentifizieren. Um dies zu klären, ist die Antwort, nach der ich suche, wie Sie SVNServe (falls möglich) für die Verwendung von ActiveDirectory für die Authentifizierung konfigurieren und anschließend ein vorhandenes Repository ändern, um vorhandene svn-Benutzer ihren ActiveDirectory-Domänen-Anmeldekonten zuzuordnen.

UPDATE 2: Es scheint, dass die SASL-Unterstützung in SVNServe von einem Plugin-Modell abhängt und die Dokumentation nur als Beispiel dient. Wenn Sie sich die Cyrus SASL Library ansehen, sieht es so aus, als würden eine Reihe von Authentifizierungsmechanismen unterstützt, aber ich bin mir nicht sicher, welcher für die Unterstützung von ActiveDirectory verwendet werden soll, und ich kann keine Dokumentation zu solchen Dingen 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 nach einigen Beiträgen (möglicherweise veraltet und ungenau) saslauthd nicht auf Windows aufbaut, und solche Bemühungen werden als work in progress betrachtet.

UPDATE 4: Der letzte Beitrag, den ich zu diesem Thema gefunden habe, klingt so, als ob die richtigen Binaries () über die MIT Kerberos Library verfügbar sind, aber es klingt wie der Autor von diesem Beitrag auf Nabble.com hat immer noch Probleme, die Dinge zum Laufen zu bringen.

UPDATE 5: Es sieht aus wie in den TortoiseSVN-Diskussionen und auch in diesem Beitrag auf svn.haxx.se, auch wenn saslgssapi.dll oder was auch immer auf dem Windows-Server vorhanden ist und die Clients konfiguriert sind wird auch die gleiche Anpassung benötigen, um mit diesen Repositorys arbeiten zu können. Wenn dies der Fall ist, können wir die ActiveDirectory-Unterstützung nur von einem Windows-Client erhalten, wenn in diesen Clients Änderungen vorgenommen werden, z. B. TortoiseSVN und CollabNet-Build der Client-Binärdateien, um solche Authentifizierungsschemas zu unterstützen. Obwohl diese Beiträge darauf hindeuten, ist dies widersprüchlich von dem, was ich ursprünglich von anderen Lesern annahm, dass SASL-kompatibel sein sollte, sollte keine Änderungen am Client erfordern, sondern nur, dass der Server so eingerichtet ist, dass er den Authentifizierungsmechanismus handhabt. Nach etwas gründlicherem Lesen in im Dokument über Cyrus SASL in Subversion Abschnitt 5 heißt es: "1.5+ Clients mit Cyrus SASL-Unterstützung können sich gegen 1.5+ Server mit aktiviertem SASL authentifizieren, sofern mindestens einer der Vom Server unterstützte Mechanismen werden auch vom Client unterstützt. " Daher muss die GSSAPI-Unterstützung (die meines Wissens für Active Directory erforderlich ist) eindeutig auf dem Client und dem Server verfügbar sein.

Ich muss sagen, ich lerne viel zu viel über die internen Aspekte, wie Subversion die Authentifizierung handhabt, als ich es jemals wollte. Und leider habe ich einfach nach einer Antwort gesucht, ob ich Active Directory-Authentifizierungsunterstützung haben kann, wenn ich SVNServe auf einem Windows-Server verwende und von Windows-Clients aus auf diese zugreifen kann. Laut der offiziellen Dokumentation scheint dies möglich zu sein, jedoch ist die Konfiguration nicht trivial, wenn überhaupt möglich.

UPDATE: 6: Könnte irgendjemand etwas dazu sagen, ob Subversion 1.7 die Situation verbessern wird, wenn SVNServe mithilfe von Active Directory authentifiziert wird?

antworten

Wie bereits erwähnt, ist VisualSVN Server das gewünschte Werkzeug. Es ist ein All-in-One-Paket für Windows, das einfach Apache in seinem Inneren verwendet. Sie würden es nie wissen, wenn Sie nicht in den installierten DLLs herumstochern. Jedem ist ein Windows-Dienst, der ein mmc-Snap-In hat verwalten Sie es. Sie können den Port, auf dem er ausgeführt wird, ändern, wenn Sie bereits Port 80 belegt haben.

Ich verstehe, dass die Unterstützung von sasl durch svnserve derzeit bearbeitet wird.

Sie können 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:

ntml_server

und optional

ntml_v2

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. Ich hatte jedoch einen anderen Test-Server für mich eingerichtet, daher habe ich keine Ahnung, welche Konfigurationsmöglichkeiten es gibt.

Ich verwende Apache mit svn, das unter debian linux läuft und gegen einen Active Directory Server autorisiert. Clients stellen über das http-Protokoll eine Verbindung zum Repository her. Wenn diese Einstellung für Sie akzeptabel ist - lesen Sie weiter.

dies sollte auch unter Apache für Windows funktionieren, aber ich habe es nie probiert. Was folgt, ist Debian-spezifisch, sollte aber unter Windows/anderen Distributionen ähnlich funktionieren. Sie verlieren Ihren svn-Verlauf während der Migration nicht ...

erforderliche Software installieren:

apt-get install libapache2-svn subversion apache2

in der Konfiguration für Apaches vhost [Symlinks zu ihnen finden Sie in/etc/apache2/sites-enabled]. in VirtualHost hinzufügen:

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

Stellen Sie sicher, dass der Apache das ldap-Modul lädt:

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

Stellen Sie sicher, dass Apache Dateien im svn-Repository ändern kann:

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

Ihr svn_authz sollte Regeln enthalten, die angeben, wer auf was zugreifen kann. in meinem Fall:

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

[/]
* = rw

[/priv]
* =
@ops = rw

Weitere Informationen zur Syntax dieser Datei finden Sie hier.

Wenn Sie so weit gekommen sind, können Ihre Benutzer unter http://server.address/svn/ mit einem beliebigen svn-Client [tortoise/cmdline/visual svn] auschecken Geschichte und weiter lesen/schreiben.