Bagaimana saya bisa mengganti set repositori Subversion yang ada untuk menggunakan ActiveDirectory? (svnserve / windows)

12

Saya memiliki satu set repositori Subversion pribadi pada kotak Windows Server 2003 yang diakses oleh pengembang melalui SVNServe melalui protokol svn: //. Saat ini kami telah menggunakan file authz dan passwd untuk setiap repositori untuk mengontrol akses namun dengan semakin banyaknya repositori dan pengembang saya sedang mempertimbangkan untuk beralih menggunakan kredensial mereka dari ActiveDirectory. Kami menjalankan semua toko Microsoft dan menggunakan IIS, bukan Apache di semua server web kami, jadi saya lebih suka untuk terus menggunakan SVNServe jika memungkinkan.

Selain memungkinkan, saya juga khawatir tentang cara memigrasi repositori kami sehingga riwayat pengguna yang ada memetakan ke akun ActiveDirectory yang benar. Perlu diingat juga bahwa saya bukan administrator jaringan dan saya tidak terbiasa dengan ActiveDirectory jadi saya mungkin harus melalui beberapa orang lain untuk mendapatkan perubahan yang dibuat dalam ActiveDirectory jika perlu.

Apa saja pilihan saya?

UPDATE 1: Tampaknya dari dokumentasi SVN bahwa dengan menggunakan SASL saya harus bisa mendapatkan SVNServe untuk mengautentikasi menggunakan ActiveDirectory. Untuk memperjelas, jawaban yang saya cari adalah bagaimana cara mengkonfigurasi SVNServe (jika mungkin) untuk menggunakan ActiveDirectory untuk otentikasi dan kemudian bagaimana memodifikasi repositori yang ada untuk memetakan kembali pengguna svn yang ada ke akun login domain ActiveDirectory mereka.

UPDATE 2: Tampaknya dukungan SASL di SVNServe berfungsi dari model plugin dan dokumentasi hanya menunjukkan sebagai contoh. Melihat Cyrus SASL Library , sepertinya sejumlah "mekanisme" otentikasi didukung tetapi saya tidak yakin yang mana yang akan digunakan untuk dukungan ActiveDirectory atau saya tidak dapat menemukan dokumentasi tentang hal-hal seperti itu.

UPDATE 3: Ok, sepertinya untuk berkomunikasi dengan ActiveDirectory saya mencari untuk menggunakan saslauthd daripada sasldb untuk properti auxprop_plugin . Sayangnya, menurut beberapa posting (mungkin kedaluwarsa dan tidak akurat), saslauthd tidak dibangun di Windows dan upaya semacam itu dianggap sebagai pekerjaan yang sedang berjalan .

UPDATE 4: Posting terbaru yang saya temukan tentang topik ini membuatnya terdengar seolah-olah binari yang tepat () tersedia melalui Perpustakaan MIT Kerberos tetapi kedengarannya seperti penulis posting ini di Nabble.com masih mengalami masalah dalam membuat semuanya berfungsi .

UPDATE 5: Sepertinya dari diskusi TortoiseSVN dan juga posting ini di svn.haxx.se bahwa bahkan jika saslgssapi.dll atau apa pun biner yang diperlukan tersedia dan dikonfigurasi pada server Windows bahwa klien juga akan memerlukan penyesuaian yang sama untuk bekerja dengan repositori ini. Jika ini benar, kami hanya akan bisa mendapatkan dukungan ActiveDirectory dari klien windows hanya jika perubahan dibuat pada klien ini seperti TortoiseSVN dan CollabNet build dari binari klien untuk mendukung skema otentikasi tersebut. Meskipun itulah yang disarankan oleh pos-pos ini, ini bertentangan dengan apa yang awalnya saya asumsikan dari bacaan lain bahwa menjadi kompatibel SASL tidak memerlukan perubahan pada klien tetapi hanya bahwa server akan diatur untuk menangani mekanisme otentikasi. Setelah membaca sedikit lebih hati-hatidokumen tentang Cyrus SASL di Subversion bagian 5 menyatakan "1.5+ klien dengan dukungan Cyrus SASL akan dapat mengotentikasi terhadap 1.5+ server dengan SASL diaktifkan, asalkan setidaknya salah satu mekanisme yang didukung oleh server juga didukung oleh klien." Jadi jelas dukungan GSSAPI (yang saya pahami diperlukan untuk Active Directory) harus tersedia di dalam klien dan server.

Saya harus mengatakan, saya belajar terlalu banyak tentang internal tentang bagaimana Subversion menangani otentikasi daripada yang pernah saya inginkan. Dan sayangnya saya hanya mencari jawaban tentang apakah saya dapat memiliki dukungan otentikasi Active Directory ketika menggunakan SVNServe di server Windows dan mengaksesnya dari klien Windows. Menurut dokumentasi resmi tampaknya ini mungkin namun Anda dapat melihat bahwa konfigurasi tidak sepele jika bahkan mungkin sama sekali.

UPDATE: 6: Karena pengembangan pada Subversion 1.7 sedang ditutup, adakah yang bisa menambahkan apa pun tentang apakah Subversion 1.7 akan membaik pada situasi mendapatkan SVNServe untuk otentikasi menggunakan Active Directory?

jpierson
sumber
kemudian lihat di sini .. stackoverflow.com/questions/333146 tetapi menurut saya ini adalah peretasan. Anda bisa mendapatkan IIS berdampingan dengan apache [dengan menjalankan yang kedua mis. pada port yang berbeda atau ip yang berbeda]
pQd
2
+1 untuk pertanyaan ini. Itu adalah sesuatu yang saya terus ingin temukan jawabannya dan gagal. Kebanyakan orang tampaknya menganggap apache dapat diterima (biasanya dalam bentuk visualsvn). Tapi itu menyebalkan jika Anda sudah punya banyak svn: // referensi. Dan saya merasa lebih baik menjalankan svnserve untuk akses repositori daripada apache.
Jim T
1
+1 benar-benar ingin melakukan ini sejak lama juga, saya benar-benar benci harus menjalankan apache pada kotak windows hanya di luar prinsip ketika itu tidak diperlukan ... poin tambahan untuk menggabungkan ini dengan akses SSL melalui IIS ^ ^
Oskar Duveborn
@ Oskar - Saya pikir akan lebih baik jika seseorang membuat modul WAS untuk IIS7 dan untuk hosting kedua protokol http berbasis apache serta protokol svnserve semua dalam IIS. Jika saya memiliki lebih banyak waktu di tangan saya, saya akan menggali untuk menciptakan sesuatu seperti ini di .NET sebagai proyek open source.
jpierson

Jawaban:

5

Seperti yang telah disebutkan, VisualSVN Server adalah alat yang Anda inginkan. Ini adalah paket all-in-one untuk Windows yang kebetulan menggunakan Apache di dalamnya - Anda tidak akan pernah tahu kecuali Anda mencari-cari di dll yang diinstal, untuk semua orang dengan layanan Windows yang memiliki mmc snap-in untuk kelola itu. Anda dapat mengubah port yang digunakannya jika Anda telah mengambil port 80.

Saya mengerti dukungan sasl melalui svnserve sedang dikerjakan saat ini.

gbjbaanb
sumber
Jika ada cara untuk mendapatkan layanan Apache untuk bekerja melalui IIS atau meminta mereka berdua menggunakan port 80 maka itu akan bagus. Sayangnya bagi mereka yang ingin tetap dengan svnserve atau menggunakan IIS tampaknya tidak ada banyak pilihan selain menunggu untuk melihat apakah pekerjaan dukungan sasl untuk svnserve membuahkan hasil. Jika tidak terlalu banyak masalah, bisakah Anda menautkan ke suatu tempat di mana kami dapat memperoleh informasi terbaru tentang fitur ini? Proyek SVN, meskipun baru-baru ini lebih baik, tampaknya tidak mengkomunikasikan upaya dan kemajuan mereka dengan baik kepada masyarakat melalui pelacak bug mereka.
jpierson
Saya ingin tahu apakah Anda mungkin memiliki masukan tentang apakah dukungan sasl yang sedang / sedang dikerjakan untuk svnserve telah membuahkan hasil. Bisakah kita berharap melihat peningkatan di Subversion 1.7?
jpierson
1

Saya menggunakan apache dengan svn yang berjalan di Linux Debian terhadap server direktori aktif. klien terhubung ke repositori melalui protokol http. jika pengaturan ini dapat diterima untuk Anda - lanjutkan membaca.

ini juga harus bekerja di bawah apache untuk windows tetapi saya tidak pernah mencobanya. berikut ini adalah debian khusus tetapi harus bekerja dengan cara yang sama di bawah windows / distro lainnya; Anda tidak akan kehilangan riwayat svn saat bermigrasi ...

instal perangkat lunak yang diperlukan:

apt-get install libapache2-svn subversion apache2

dalam konfigurasi untuk vhost apache [symlink ke apache dapat ditemukan di / etc / apache2 / situs-enabled]. di dalam VirtualHost tambahkan:

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

pastikan bahwa apache memuat modul ldap:

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

pastikan apache dapat memodifikasi file di repositori svn:

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

svn_authz Anda harus berisi aturan yang memberi tahu siapa yang dapat mengakses apa. dalam kasus saya:

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

[/]
* = rw

[/priv]
* =
@ops = rw

Anda dapat mengetahui lebih lanjut tentang sintaks untuk file itu di sini .

jika Anda mencapai sejauh itu - pengguna Anda dapat memeriksa dari http: //server.address/svn/ menggunakan klien svn [tortoise / cmdline / visual svn], mereka akan melihat semua riwayat dan terus membaca / menulis untuk itu.

pQd
sumber
1
Menggunakan Apache mungkin dapat diterima jika tidak ada alternatif lain tetapi pada saat ini kami sudah memiliki beberapa svn: // URL yang dirujuk di seluruh forum internal kami dan perangkat lunak bugtracking dan lebih suka untuk terus menggunakan URL tersebut. Kami juga telah membuka port terkait untuk SVNServe di firewall kami. Jika ada cara untuk menjalankan Appache bersama dengan IIS pada kotak Windows Server 2003 saya maka ini mungkin metode yang realistis untuk dicoba walaupun sekarang saya lebih tertarik pada cara mendapatkan SVNServe untuk mengautentikasi menggunakan ActiveDirectory.
jpierson
1

Anda bisa menggunakan saslNTML sebagai ganti GSSAPI. Dll saslNTML diinstal dengan TSVN secara default, dan saya pikir itu juga termasuk dalam klien svn dari collab.net.

ada dua opsi yang harus Anda atur di file konfigurasi sasl Anda:

ntml_server

dan opsional

ntml_v2

dan tentu saja Anda harus mengatur daftar mech di file konfigurasi Anda untuk memasukkan NTML.

Saya hanya pernah mencoba ini dengan TSVN ketika saya mengimplementasikan semuanya. Tapi saya punya orang lain menyiapkan server pengujian untuk saya jadi saya tidak tahu apa opsi konfigurasi yang tepat.

Stefan
sumber
Luar biasa, saya akan segera mencoba ini dan melihat di mana saya bisa mendapatkan.
jpierson
Saya sudah mencoba beberapa hal tetapi saya selalu mendapatkan kesalahan berikut ketika mencoba untuk Check out menggunakan TortoiseSVN. Kesalahan: Kesalahan otentikasi dari server: SASL (-13): pengguna tidak ditemukan: Tidak dapat menemukan Kesalahan: callback: 2
jpierson
"pengguna tidak ditemukan" berarti bahwa komputer tersebut bukan bagian dari domain yang Anda coba autentikasi atau pengguna tidak tahu pada domain tersebut. Mungkin Anda bisa mencoba menangkap lalu lintas jaringan dan mencoba mencari tahu apa yang terjadi?
Stefan