我正在评估将我的组织迁移到 Mercurial 的可能性,但是我遇到了两个基本要求,但找不到适当的指示。
如何设置 Mercurial 的中央存储库以使用中央 Active Directory 对用户进行身份验证,并且只有他们拥有正确的凭据时才允许他们推送或拉取?
如何设置 Mercurial 项目存储库以仅允许属于特定组的用户推送/拉取源代码?我们需要每个项目都有授权。
哪些 HTTP 服务器(IIS 或 Apache 等)支持上述两个要求?
如果我问了一些显而易见的问题,或者我遗漏了有关身份验证和授权工作原理的一些基本知识,请原谅。
答案1
我写了一篇四部分的博客文章,介绍如何在 IIS 上设置 Mercurial,使用 Active Directory 身份验证并使用 hgwebdir.cgi 进行推送授权。它介绍了整个过程:
- 在 IIS 上设置 Mercurial 的 hg web 界面。
- 为 Mercurial 设置 IIS 身份验证,以便只有活动目录授权的用户(即安全组/用户)可以通过 hg Web 界面或文件系统查看/访问存储库。
- 为 Mercurial 用户配置 Active Directory 身份验证,以便只有授权用户才能查看/访问他们有权访问的存储库。
- 通过 hgweb.config 配置 hgwebdir.cgi 来设置指定用户向存储库的推送授权。
- 在您的存储库 URL 中使用 Helicon 的 ISAPI Rewrite 隐藏 hgwebdir.cgi。
- 根据您自己的喜好定制 hg web 用户界面的样式/感觉。
http://www.endswithsaurus.com/2010/05/setting-up-and-configuring-mercurial-in.html
我希望它对人们有用......
答案2
您可以使用 Apache 来实现。查看如何在 Apache 中限制推送:
http://mercurial.selenic.com/wiki/PublishingRepositories#pushing
参见上面的同一个文件,了解如何配置 mercurial、其权限以及 Apache 允许的所有用户。
设置 mercurial 和 Apache 后,您可以使用 mod_authnz_ldap 仅允许访问 Active Directory 用户:
http://httpd.apache.org/docs/2.2/mod/mod_authnz_ldap.html
不要忘记检查有关 Active Directory 配置的段落。
这对你来说就足够了。
祝你好运,
若昂·米格尔·内维斯