我在Windows Server 2003盒子上有一组私有Subversion存储库,开发人员可以通过svn://协议通过SVNServe访问。目前,我们一直在使用每个存储库的authz和passwd文件来控制访问,但是随着存储库和开发人员的数量不断增加,我正在考虑使用ActiveDirectory中的凭据。我们在一家全Microsoft商店中运行,并且在所有Web服务器上使用IIS而不是Apache,因此,如果可能的话,我希望继续使用SVNServe。
除了可能之外,我还担心如何迁移我们的存储库,以便现有用户的历史记录映射到正确的ActiveDirectory帐户。还请记住,我不是网络管理员,并且对ActiveDirectory并不陌生,因此如有必要,我可能必须经过其他人员才能在ActiveDirectory中进行更改。
我有什么选择?
更新1:从SVN文档中可以看出,通过使用SASL,我应该能够使SVNServe使用ActiveDirectory进行身份验证。澄清一下,我正在寻找的答案是如何配置SVNServe(如果可能)以使用ActiveDirectory进行身份验证,然后如何修改现有存储库以将现有svn用户重新映射到其ActiveDirectory域登录帐户。
更新2:似乎SVNServe中的SASL支持基于插件模型起作用,并且该文档仅作为示例显示。从Cyrus SASL库看,它似乎支持多种身份验证“机制”,但是我不确定用于ActiveDirectory支持的是哪一种,也无法找到有关此类问题的任何文档。
更新3:好了,好了,它看起来像,以便与ActiveDirectory中我沟通在找使用saslauthd而不是sasldb的为auxprop_plugin财产。不幸的是,根据某些帖子(可能是过时和不准确的),saslauthd似乎无法在Windows上构建,并且这种努力被视为正在进行中。
更新4:我在此主题上找到的最新文章听起来似乎可以通过MIT Kerberos库获得适当的二进制文件(),但这听起来像是这篇文章的作者在Nabble.com上仍存在问题,无法正常工作。
更新5:从TortoiseSVN讨论以及svn.haxx.se上的帖子看来即使saslgssapi.dll或任何必需的二进制文件在Windows服务器上可用并已配置,客户端也将需要相同的自定义才能使用这些存储库。如果是这样,则只有在对这些客户端进行了更改(例如TortoiseSVN和客户端二进制文件的CollabNet构建以支持此类身份验证方案)的情况下,我们才能从Windows客户端获得ActiveDirectory支持。尽管这是这些帖子的建议,但这与我最初从其他阅读中得出的假设是矛盾的,因为与SASL兼容应该不需要在客户端上进行任何更改,而只需设置服务器以处理身份验证机制即可。在仔细阅读Subversion中有关Cyrus SASL的文档后第5节指出:“只要支持的至少一种机制也受客户端支持,具有Cyrus SASL支持的1.5+客户端将能够针对启用了SASL的1.5+服务器进行身份验证。” 因此,显然必须在客户端和服务器内提供GSSAPI支持(我知道Active Directory必需)。
我不得不说,我对Subversion如何处理身份验证的内部知识的了解比我想了解的要多。不幸的是,我只是在寻找有关在Windows服务器上使用SVNServe并从Windows客户端访问它时是否可以使用Active Directory身份验证支持的答案。根据官方文档,这似乎是有可能的,但是您可以看到,即使有可能,配置也不是一件容易的事。
更新:6:由于Subversion 1.7的开发工作即将结束,因此有人可以在使SVNServe使用Active Directory进行身份验证的情况下添加有关Subversion 1.7是否会有所改善的信息吗?