如何切换现有的Subversion版本库以使用ActiveDirectory? (svnserve的/视窗)

我在Windows Server 2003盒子上有一组私人的Subversion版本库,开发者通过svn://协议通过SVNServe访问。 目前我们一直在使用每个版本库的authzpasswd文件来控制访问,但是随着越来越多的版本库和开发人员的使用,我正考虑从ActiveDirectory中使用他们的证书。 我们运行在所有的微软商店,在我们所有的Web服务器上使用IIS而不是Apache,所以如果可能的话,我宁愿继续使用SVNServe。

除此之外,我还担心如何迁移存储库,以便现有用户的历史logging映射到正确的ActiveDirectory帐户。 请记住,我不是networkingpipe理员,我不熟悉ActiveDirectory,所以我可能需要通过其他人来获取在ActiveDirectory中所做的更改(如有必要)。

我有什么select?

更新1:从SVN文档看来,通过使用SASL我应该能够获得SVNServe使用ActiveDirectory进行身份validation。 为了澄清,我正在寻找的答案是如何去configurationSVNServe(如果可能)使用ActiveDirectory进行身份validation,然后如何修改现有的存储库,将现有的svn用户重新映射到他们的ActiveDirectory域login帐户。

更新2:SVNServe中的SASL支持看起来像一个插件模型,文档仅作为示例显示。 看着赛勒斯SASL库它看起来像一些身份validation“机制”支持,但我不知道哪一个将用于ActiveDirectory的支持,也不能find任何关于这些问题的文档。

更新3:好吧,它看起来像为了与ActiveDirectory通信我期待使用saslauthd而不是sasldbauxprop_plugin属性。 不幸的是,根据一些post(可能已经过时和不准确), saslauthd并不是基于Windows开发的,这种努力被认为是一项正在进行的工作 。

更新4:我发现在这个主题上的最新post听起来好像正确的二进制文件()可以通过MIT Kerberos库,但它听起来像Nabble.com上的这篇文章的作者仍然有问题得到的东西工作。

更新5:它看起来像从TortoiseSVN讨论 ,也是这个职位svn.haxx.se ,即使sas​​lgssapi.dll或任何必要的二进制文件可用和configuration在Windows服务器上,客户端也将需要相同的定制,以与这些存储库一起工作。 如果这是真的,那么只有在这些客户端(例如TortoiseSVN和客户端二进制文件的CollabNet版本)中进行了更改以支持这种身份validationscheme时,我们才能够从Windows客户端获得ActiveDirectory支持。 虽然这就是这些post所暗示的,但这与我原本从其他阅读中得出的结论相矛盾,因为与SASL兼容应该不需要在客户端上进行更改,而只需要设置服务器来处理authentication机制。 在Subversion第5部分关于Cyrus SASL的文档中,更仔细地阅读了一些内容后,他表示:“具有Cyrus SASL支持的1.5+客户端将能够在支持SASL的1.5+以上的服务器上进行身份validation,前提是服务器支持的机制至less有一个也得到客户的支持。“ 很明显,GSSAPI支持(我明白是Active Directory所必需的)必须在客户端和服务器中可用。

我不得不说,我对于Subversion如何处理身份validation的内部知识了解得太多了。 不幸的是,我只是在寻找一个答案,在Windows服务器上使用SVNServe并从Windows客户端访问这个服务器时,是否可以拥有Active Directory身份validation支持。 根据官方文件,这似乎是可能的,但是你可以看到,即使可能,configuration也是不平凡的。

更新:6:由于在Subversion 1.7上的开发正在结束,有没有人可以添加Subversion 1.7是否会改善SVNServe使用Active Directory进行身份validation的情况呢?

如前所述,VisualSVN Server是您想要的工具。 它是一个适用于Windows的全function软件包,它恰好在其中使用了Apache,除非您在安装的dll中安装了dll,否则您永远都不会知道这个软件包是否包含在Windows服务中,并且具有mmcpipe理单元pipe理它。 如果已经有端口80,您可以更改它运行的端口。

我明白通过svnserve的sasl支持目前正在进行中。

我使用svn在debian linux上运行apache,授权一个活动目录服务器。 客户端通过http协议连接到存储库。 如果这个设置是可以接受的 – 继续阅读。

这应该也适用于Windows下的Apache,但我从来没有尝试过。 以下是debian的具体内容,但在windows / other发行版中应该类似地工作; 迁移时你不会放弃你的svn历史

安装所需的软件:

apt-get install libapache2-svn subversion apache2 

在Apache的虚拟主机configuration[符号连接到他们可以在/ etc / apache2 /网站启用]。 在VirtualHost里面添加:

 <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加载ldap模块:

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

确保Apache可以修改svn仓库中的文件:

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

你的svn_authz应该包含规则,告诉谁可以访问什么。 在我的情况下:

 [groups] ops=jack.brown,john.smith [/] * = rw [/priv] * = @ops = rw 

你可以在这里find更多关于这个文件的语法。

如果你到达那么远 – 你的用户可以从http://server.address/svn/使用任何svn客户端[tortoise / cmdline / visual svn]检出,他们将看到所有的历史logging,并继续阅读/写入。

您可以使用saslNTML而不是GSSAPI。 saslNTML dll默认安装了TSVN,我认为它也包含在了collab.net的svn客户端中。

有两个选项你必须在你的saslconfiguration文件中设置:

 ntml_server 

并可选

 ntml_v2 

当然你必须在configuration文件中设置mech list来包含NTML。

当我执行整个事情时,我只用TSVN尝试了一次。 但我有其他人为我设置了一个testing服务器,所以我不知道确切的configuration选项是什么。