Varolan bir Subversion veri havuzunu ActiveDirectory kullanmak için nasıl değiştirebilirim? (Svnserve / dönüş)


12

SVNServe üzerinden svn: // protokolü üzerinden geliştiricilerin eriştiği bir Windows Server 2003 kutusunda özel Subversion depolarım var. Şu anda erişimi kontrol etmek için her havuz için authz ve passwd dosyalarını kullanıyoruz, ancak artan sayıda depo ve geliştirici ile ActiveDirectory'deki kimlik bilgilerini kullanmaya geçmeyi düşünüyorum. Tüm bir Microsoft mağazasında çalışıyoruz ve tüm web sunucularımızda Apache yerine IIS kullanıyoruz, bu yüzden mümkünse SVNServe kullanmaya devam etmeyi tercih ederim.

Mümkün olmasının yanı sıra, mevcut kullanıcıların geçmişinin doğru ActiveDirectory hesaplarıyla eşleşmesi için depolarımızı nasıl taşıyacağım konusunda da endişeliyim. Ayrıca, ağ yöneticisi olmadığımı ve ActiveDirectory'ye aşina olmadığımı da unutmayın, bu nedenle gerekirse ActiveDirectory'de yapılan değişiklikleri almak için muhtemelen başka insanlardan geçmek zorunda kalacağım.

Seçeneklerim neler?

GÜNCELLEME 1: SVN belgelerinden , SASL kullanarak SVNServe'in ActiveDirectory kullanarak kimlik doğrulaması yapabilmem gerektiği anlaşılıyor. Açıklığa kavuşturmak için aradığım cevap, SVNServe'in (mümkünse) kimlik doğrulaması için ActiveDirectory kullanmak için nasıl yapılandırılacağı ve mevcut svn kullanıcılarının ActiveDirectory etki alanı oturum açma hesaplarına yeniden eşlenmeleri için mevcut bir havuzun nasıl değiştirileceği.

GÜNCELLEME 2: SVNServe'deki SASL desteğinin bir eklenti modelinde çalıştığı ve belgelerin yalnızca örnek olarak göründüğü anlaşılmaktadır. Cyrus SASL Kütüphanesi'ne bakıldığında, bir dizi kimlik doğrulama "mekanizması" destekleniyor gibi görünüyor, ancak ActiveDirectory desteği için hangisinin kullanılacağından emin değilim, bu tür konularla ilgili herhangi bir belge bulamıyorum.

GÜNCELLEME 3: Tamam, iyi o kullanımı arıyorum ActiveDirectory I ile iletişim amacıyla benziyor saslauthd yerine sasldb için auxprop_plugin özelliği. Ne yazık ki bazı mesajlara göre (muhtemelen eski ve yanlış) saslauthd Windows üzerinde inşa edilmez ve bu tür çabalar devam eden bir çalışma olarak kabul edilir .

GÜNCELLEME 4: Bu konuda bulduğum en son gönderi, MIT Kerberos Kütüphanesi aracılığıyla uygun ikili dosyalar () mevcut gibi görünüyor, ancak Nabble.com'daki bu yazının yazarı hala işleri çalıştırırken sorun yaşıyor gibi görünüyor .

GÜNCELLEME 5: TortoiseSVN tartışmalarından ve svn.haxx.se'deki bu gönderiden de anlaşılıyorWindows sunucusunda saslgssapi.dll veya gerekli herhangi bir ikili dosya mevcut olsa ve yapılandırılsa bile, istemcilerin bu depolarla çalışmak için aynı özelleştirme işlemine ihtiyaç duyacağını unutmayın. Bu doğruysa, yalnızca bu kimlik doğrulama düzenlerini desteklemek için istemci ikili dosyalarının TortoiseSVN ve CollabNet derlemesi gibi değişiklikler yapıldığında yalnızca Windows istemcisinden ActiveDirectory desteğini alabiliriz. Bu yazı ne önermek olsa da, bu SASL uyumlu olmak istemcide herhangi bir değişiklik gerektirmez, ancak sadece sunucu kimlik doğrulama mekanizmasını işlemek için ayarlanması gerektiğini aslında diğer okumadan varsaydım ile çelişkilidir. Subversion'daki Cyrus SASL ile ilgili belgede biraz daha dikkatli okuduktan sonra5. bölüm, "Cyrus SASL destekli 1.5+ istemcinin, sunucu tarafından desteklenen mekanizmalardan en az birinin de istemci tarafından desteklenmesi koşuluyla, SASL etkinleştirilmiş 1.5+ sunucuya karşı kimlik doğrulaması yapabileceğini unutmayın." Bu nedenle, GSSAPI desteğinin (Active Directory için gerekli olduğunu anladığım) istemci ve sunucuda açıkça bulunması gerekir.

Söylemeliyim ki, Subversion'ın kimlik doğrulamayı nasıl istediğimin içselliği hakkında çok fazla şey öğreniyorum. Ne yazık ki, Windows sunucusunda SVNServe kullanırken ve Windows istemcilerinden buna erişirken Active Directory kimlik doğrulama desteğine sahip olup olamayacağım konusunda bir cevap arıyordum. Resmi belgelere göre, bunun mümkün olduğu görülüyor, ancak konfigürasyonun mümkünse bile önemsiz olduğunu görebilirsiniz.

GÜNCELLEME: 6: Subversion 1.7'deki geliştirme tamamlandığından, SVNServe'in Active Directory kullanarak kimlik doğrulaması yapması durumunda Subversion 1.7'nin iyileşip iyileşmeyeceği konusunda herhangi bir şey eklenebilir mi?


o zaman buraya bak .. stackoverflow.com/questions/333146 ama bana bir hack gibi geliyor. IIS'yi apache ile yan yana alabilirsiniz [ikincisini örneğin farklı bağlantı noktasında veya farklı ip üzerinde çalıştırarak]
pQd

2
Bu soru için +1. Bu, bir cevap bulmak ve başarısız olmak istediğim bir şey. Çoğu insan apache'yi kabul edilebilir buluyor (genellikle visualsvn formunda). Ama zaten çok fazla svn: // referansınız varsa, bu bir acıdır. Ve apache yerine depo erişimi için svnserve çalıştırmak benim için daha iyi geliyor.
Jim T

1
+1 bunu çok uzun zaman önce yapmak istedi, gerçekten gerekmediğinde prensip dışında bir pencere kutusunda apache çalıştırmaktan nefret ediyorum ... bunu IIS üzerinden SSL erişimi ile birleştirmek için ekstra puan ^ ^
Oskar Duveborn

@Oskar - Birinin IIS7 için bir WAS modülü oluşturması ve hem apache tabanlı http protokolünü hem de IIS içindeki svnserve protokolünü barındırması harika olurdu. Ellerimde daha fazla zamanım olsaydı, .NET'te açık kaynaklı bir proje olarak böyle bir şey yaratmayı isterdim.
jpierson

Yanıtlar:


5

Daha önce de belirtildiği gibi, VisualSVN Sunucusu istediğiniz araçtır. Bu, içinde Apache'yi kullanan Windows için hepsi bir arada bir pakettir - yüklediği dll'lerde dolaşmaya gitmedikçe asla bilemezsiniz, herkese bir mmc ek bileşenine sahip bir Windows hizmeti yönetin. 80 numaralı bağlantı noktanız varsa, çalıştığı bağlantı noktasını değiştirebilirsiniz.

Şu an svnserve yoluyla sasl desteğinin üzerinde çalışıldığını anlıyorum.


Apache hizmetinin IIS üzerinden çalışmasını veya her ikisinin de 80 numaralı bağlantı noktasını kullanmasını sağlamanın bir yolu olsaydı, bu harika olurdu. Ne yazık ki svnserve ile bağlı kalmak veya IIS kullanmak isteyenler için sasns için sasl desteği üzerinde çalışmanın meyvesinin gelip gelmediğini görmek için beklemek dışında pek çok seçenek yok gibi görünüyor. Çok fazla sorun yoksa, lütfen bu özellik hakkında güncel bilgi alabileceğimiz bir yere bağlanabilir misiniz? SVN projesi, daha yeni olmasına rağmen, çabalarını ve ilerlemelerini hata izleyicileri aracılığıyla topluma çok iyi iletmiyor gibi görünüyor.
11:24, jpierson

Svnserve için üzerinde çalışılan sasl desteğinin herhangi bir meyveye gelip gelmediğine dair herhangi bir girişiniz olup olmadığını merak ediyorum. Subversion 1.7'de herhangi bir gelişme görmeyi bekleyebilir miyiz?
jpierson

1

svn dega linta againsta aktif dizin sunucusu yetkilendirme üzerinde çalışan apache kullanıyorum. istemciler depoya http protokolü üzerinden bağlanır. bu kurulum sizin için uygunsa - okumaya devam edin.

Bu da Windows için apache altında çalışması gerekir ama hiç denemedim. aşağıdakiler debian'a özgüdür ancak pencereler / diğer dağıtımlar altında benzer şekilde çalışmalıdır; taşırken svn geçmişinizi kaybetmeyeceksiniz ...

gerekli yazılımı yükleyin:

apt-get install libapache2-svn subversion apache2

apache'nin hayaleti için yapılandırmada [onlara bağlantılar / etc / apache2 / sites-active] 'de bulunabilir. içinde VirtualHost ekleyin:

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

apache'nin ldap modülünü yüklediğinden emin olun:

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

apache'nin svn deposundaki dosyaları değiştirebildiğinden emin olun:

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

svn_authz'ınız kimin neye erişebileceğini belirten kurallar içermelidir. benim durumumda:

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

[/]
* = rw

[/priv]
* =
@ops = rw

o dosyanın sözdizimi hakkında daha fazla bilgiyi burada bulabilirsiniz .

o kadar uzağa ulaştıysanız - kullanıcılarınız herhangi bir svn istemcisini [kaplumbağa / cmdline / visual svn] kullanarak http: //server.address/svn/ adresinden check-out yapabilirler , tüm geçmişi görürler ve okumaya / yazmaya devam ederler.


1
Başka alternatif yoksa Apache'yi kullanmak kabul edilebilir, ancak şu andan itibaren zaten dahili forumlarımızda ve hata izleme yazılımımızda referans verilen birkaç svn: // URL'miz var ve bu URL'leri kullanmaya devam etmek istiyoruz. Ayrıca güvenlik duvarımızda SVNServe için ilgili bağlantı noktalarını zaten açtık. Appache'yi Windows Server 2003'ümde IIS ile birlikte çalıştırmanın bir yolu varsa, bu şu anda denemek için gerçekçi bir yöntem olabilir, ancak şu anda SVNServe'in ActiveDirectory kullanarak kimlik doğrulaması yapmasını sağlamakla daha fazla ilgileniyorum.
jpierson

1

GSSAPI yerine saslNTML kullanabilirsiniz. SaslNTML dll varsayılan olarak TSVN ile yüklü ve ben de collab.net gelen svn istemcisi dahil düşünüyorum.

sasl config dosyanızda ayarlamanız gereken iki seçenek vardır :

ntml_server

ve isteğe bağlı

ntml_v2

ve elbette, yapılandırma dosyanızdaki mekanik listeyi NTML içerecek şekilde ayarlamanız gerekir.

Her şeyi uyguladığımda bunu TSVN ile sadece bir kez denedim. Ama başka biri benim için bir test sunucusu kurmuştu, bu yüzden tam yapılandırma seçeneklerinin ne olduğu hakkında hiçbir fikrim yok.


Mükemmel, bunu yakında deneyeceğim ve nereden alabileceğimi göreceğim.
jpierson

Birkaç şey denedim ama TortoiseSVN kullanarak kullanıma çalışırken her zaman aşağıdaki hatayı alıyorum. Hata: Sunucudan kimlik doğrulama hatası: SASL (-13): kullanıcı bulunamadı: Hata bulunamadı: geri arama: 2
jpierson

"kullanıcı bulunamadı", bilgisayarın kimlik doğrulaması yapmaya çalıştığınız alanın bir parçası olmadığı veya kullanıcının alan adından haberdar olmadığı anlamına gelir. Belki ağ trafiğini yakalamaya ve neler olduğunu öğrenmeye çalışabilirsiniz?
Stefan
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.