Come posso cambiare un set esistente di repository Subversion per usare ActiveDirectory? (Svnserve / finestre)


12

Ho un set di repository Subversion privati ​​su un box di Windows Server 2003 a cui gli sviluppatori accedono tramite SVNServe tramite il protocollo svn: //. Attualmente stiamo usando i file authz e passwd per ciascun repository per controllare l'accesso, tuttavia con il numero crescente di repository e sviluppatori sto prendendo in considerazione il passaggio all'utilizzo delle loro credenziali da ActiveDirectory. Eseguiamo in un negozio tutto Microsoft e utilizziamo IIS anziché Apache su tutti i nostri server Web, quindi preferirei continuare a utilizzare SVNServe se possibile.

Oltre a essere possibile, sono anche preoccupato di come migrare i nostri repository in modo che la cronologia degli utenti esistenti sia mappata agli account ActiveDirectory corretti. Tieni presente anche che non sono l'amministratore di rete e non ho una terribile familiarità con ActiveDirectory, quindi probabilmente dovrò consultare altre persone per ottenere le modifiche apportate in ActiveDirectory, se necessario.

Quali sono le mie opzioni?

AGGIORNAMENTO 1: Dalla documentazione SVN risulta che utilizzando SASL dovrei essere in grado di autenticare SVNServe tramite ActiveDirectory. Per chiarire, la risposta che sto cercando è come configurare SVNServe (se possibile) per utilizzare ActiveDirectory per l'autenticazione e quindi come modificare un repository esistente per rimappare gli utenti svn esistenti ai loro account di accesso al dominio ActiveDirectory.

AGGIORNAMENTO 2: Sembra che il supporto SASL in SVNServe funzioni al di fuori di un modello di plug-in e la documentazione mostra solo come esempio. Guardando la Cyrus SASL Library sembra che siano supportati numerosi "meccanismi" di autenticazione, ma non sono sicuro di quale debba essere utilizzato per il supporto di ActiveDirectory né posso trovare alcuna documentazione su tali argomenti.

AGGIORNAMENTO 3: Ok, sembra che per comunicare con ActiveDirectory sto cercando di usare saslauthd invece di sasldb per la proprietà auxprop_plugin . Sfortunatamente sembra che secondo alcuni post (forse obsoleti e imprecisi) saslauthd non si basi su Windows e tali sforzi sono considerati un lavoro in corso .

AGGIORNAMENTO 4: L'ultimo post che ho trovato su questo argomento fa sembrare che i binari corretti () siano disponibili attraverso la libreria Kerberos del MIT ma sembra che l'autore di questo post su Nabble.com abbia ancora problemi a far funzionare le cose .

AGGIORNAMENTO 5: Sembra dalle discussioni di TortoiseSVN e anche questo post su svn.haxx.seche anche se sono disponibili e configurati sul server Windows saslgssapi.dll o qualsiasi binario necessario, i client avranno bisogno della stessa personalizzazione per funzionare con questi repository. Se questo è vero, saremo in grado di ottenere il supporto ActiveDirectory da un client Windows solo se vengono apportate modifiche in questi client come TortoiseSVN e Build CollabNet dei file binari del client per supportare tali schemi di autenticazione. Anche se questo è ciò che suggeriscono questi post, ciò è contraddittorio rispetto a quanto inizialmente ipotizzato da altre letture in quanto la compatibilità con SASL non dovrebbe richiedere modifiche sul client, ma solo che il server sia configurato per gestire il meccanismo di autenticazione. Dopo aver letto un po 'più attentamente nel documento su Cyrus SASL in Subversionla sezione 5 afferma "I client 1.5+ con supporto Cyrus SASL saranno in grado di autenticarsi con i server 1.5+ con SASL abilitato, a condizione che almeno uno dei meccanismi supportati dal server sia supportato dal client." Quindi chiaramente il supporto GSSAPI (che ho capito è necessario per Active Directory) deve essere disponibile all'interno del client e del server.

Devo dire che sto imparando troppo sull'interno di come Subversion gestisce l'autenticazione di quanto avessi mai voluto. E sfortunatamente stavo semplicemente cercando una risposta per sapere se posso avere il supporto per l'autenticazione di Active Directory quando uso SVNServe su un server Windows e accedo a questo da client Windows. Secondo la documentazione ufficiale sembra che ciò sia possibile, tuttavia si può vedere che la configurazione non è banale se non addirittura impossibile.

AGGIORNAMENTO: 6: Poiché lo sviluppo su Subversion 1.7 si sta concludendo, qualcuno potrebbe aggiungere qualcosa sul fatto che Subversion 1.7 migliorerà sulla situazione in cui SVNServe eseguirà l'autenticazione utilizzando Active Directory?


poi guarda qui .. stackoverflow.com/questions/333146 ma mi sembra un bel trucco. puoi ottenere IIS fianco a fianco con apache [eseguendo il secondo ad es. su porta diversa o ip diverso]
pQd

2
+1 per questa domanda. È qualcosa a cui continuo a voler trovare una risposta e fallire. La maggior parte delle persone sembra che l'apache sia accettabile (di solito in forma visiva). Ma è un dolore se hai già molti riferimenti svn: //. Ed è meglio per me eseguire svnserve per l'accesso al repository piuttosto che per Apache.
Jim T,

1
+1 volevo davvero farlo anche molto tempo fa, odio davvero dover eseguire apache su una finestra di Windows solo per principio quando non dovrebbe essere necessario ... punti extra per combinare questo con l'accesso SSL su IIS ^ ^
Oskar Duveborn l'

@Oskar - Penso che sarebbe bello se qualcuno creasse un modulo WAS per IIS7 e per l'hosting sia del protocollo http basato su apache che del protocollo svnserve all'interno di IIS. Se avessi più tempo a disposizione, approfondirei la creazione di qualcosa di simile in .NET come progetto open source.
jpierson,

Risposte:


5

Come già accennato, VisualSVN Server è lo strumento che desideri. È un pacchetto all-in-one per Windows che usa Apache al suo interno - non lo sapresti mai a meno che tu non sia andato in giro nelle dll che installa però, per tutti è un servizio Windows che ha uno snap-in mmc in amministrarlo. Puoi cambiare la porta su cui gira se hai già preso la porta 80.

Capisco che il supporto sasl attraverso svnserve è attualmente in fase di elaborazione.


Se ci fosse un modo per far funzionare il servizio Apache tramite IIS o per farli utilizzare entrambi la porta 80, sarebbe fantastico. Sfortunatamente per coloro che vogliono attenersi a svnserve o utilizzare IIS non sembrano esserci molte opzioni oltre a aspettare di vedere se il lavoro sul supporto sasl per svnserve si concretizza. Se non ci sono troppi problemi, potresti collegarti a un luogo in cui possiamo ottenere informazioni aggiornate su questa funzione? Il progetto SVN, sebbene più recente, sembra non comunicare i propri sforzi e progressi alla comunità attraverso il loro bug tracker.
jpierson,

Sono curioso di sapere se potresti avere qualche input sul fatto che il supporto sasl su cui si sta / stia lavorando per svnserve sia giunto a buon fine. Possiamo aspettarci di vedere qualche miglioramento in Subversion 1.7?
jpierson,

1

sto usando apache con svn in esecuzione su debian linux che autorizza di nuovo il server active directory. i client si connettono al repository tramite il protocollo http. se questa configurazione è accettabile per te, continua a leggere.

questo dovrebbe funzionare anche con Apache per Windows ma non l'ho mai provato. ciò che segue è specifico di debian ma dovrebbe funzionare in modo simile sotto windows / altre distro; non perderai la tua cronologia svn durante la migrazione ...

installare il software richiesto:

apt-get install libapache2-svn subversion apache2

nella configurazione per vhost di apache [i collegamenti simbolici a questi possono essere trovati in / etc / apache2 / siti abilitati]. all'interno di VirtualHost aggiungere:

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

assicurati che apache carichi il modulo ldap:

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

assicurati che apache possa modificare i file nel repository svn:

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

svn_authz dovrebbe contenere regole che indichino chi può accedere a cosa. nel mio caso:

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

[/]
* = rw

[/priv]
* =
@ops = rw

puoi trovare ulteriori informazioni sulla sintassi per quel file qui .

se sei arrivato così lontano - i tuoi utenti possono controllare da http: //server.address/svn/ usando qualsiasi client svn [tortoise / cmdline / visual svn], vedranno tutta la cronologia e continueranno a leggere / scrivere su di essa.


1
L'uso di Apache può essere accettabile se non ci sono altre alternative, ma al momento abbiamo già diversi URL svn: // referenziati in tutti i nostri forum interni e software di tracciamento dei bug e preferiamo continuare a utilizzare tali URL. Inoltre abbiamo già aperto le porte associate per SVNServe nel nostro firewall. Se esistesse un modo per eseguire Appache insieme a IIS sulla mia casella di Windows Server 2003, questo potrebbe essere un metodo realistico da provare anche se in questo momento sono più interessato a come ottenere SVNServe per l'autenticazione utilizzando ActiveDirectory.
jpierson,

1

È possibile utilizzare saslNTML invece di GSSAPI. La DLL saslNTML è installata con TSVN per impostazione predefinita e penso che sia inclusa anche nel client svn da collab.net.

ci sono due opzioni che devi impostare nel tuo file di configurazione sasl:

ntml_server

e facoltativo

ntml_v2

e ovviamente devi impostare la lista mech nel tuo file di configurazione per includere NTML.

L'ho provato solo una volta con TSVN quando ho implementato il tutto. Ma avevo qualcun altro impostato un server di prova per me, quindi non ho idea di quali siano le esatte opzioni di configurazione.


Eccellente, lo proverò presto e vedrò dove posso trovare.
jpierson,

Ho provato un certo numero di cose ma ho sempre visualizzato il seguente errore quando provo a fare il check out usando TortoiseSVN. Errore: errore di autenticazione dal server: SASL (-13): utente non trovato: impossibile trovare un errore: richiamata: 2
jpierson

"utente non trovato" significa che il computer non fa parte del dominio in cui si sta tentando di autenticarsi o l'utente non è a conoscenza del dominio. Forse puoi provare a catturare il traffico di rete e provare a scoprire cosa sta succedendo?
Stefan,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.