我正在使用Apache 2.2.15下的Mercurial 1.6在Windows域下的Windows机器上运行,作为中央仓库服务器运行,选择人员将拥有提交权限。
我试图通过限制访问Apache的/ cgi-bin /以通过sspi_auth_module选择用户来限制对Mercurial的访问。
如果我浏览到带有sspi_auth_module的repo页面对/ cgi-bin强制执行限制/我会提示输入用户名和密码,这被接受并且一切正常。
如果我尝试使用CLI“hg push”从我的本地仓库提交到服务器,则从命令行开始,命令会很快终止,并显示以下消息:
abort: authorization failed
如果我删除/ cgi-bin / limits,推送工作。
httpd.conf的相关部分:(名称编辑)
<Directory "C:/Program Files/Apache Software Foundation/Apache2.2/cgi-bin">
AllowOverride None
Options None
Order allow,deny
Allow from all
AuthName "XXXXXX"
AuthType SSPI
SSPIAuth On
SSPIAuthoritative On
SSPIOmitDomain On
Require user "xxxxxx"
</Directory>
我的hgweb.config文件的相关部分(存储在C:/ Hg中的存储库)
[collections]
C:/Hg = C:/Hg
[web]
allow_push = *
push_ssl = false
allow_archive = bz2 gz zip
我想让域控制器担心身份验证(对我来说,这比让每个人记住额外的密码更好!) - 这是一种可行的方法吗?
答案 0 :(得分:1)
我找到了解决方案。我怀疑问题的一部分是我没有指定 SSPIDomain (将其误认为是AuthName ... duh)
无论如何,httpd.conf中的以下内容实现了这一点:( ScriptAlias指令从一开始就存在,BTW)
ScriptAlias /hg "C:/Program Files/Apache Software Foundation/Apache2.2/cgi-bin/hgweb.cgi"
<Location /hg>
AuthName "Mercurial Authentication"
AuthType SSPI
SSPIAuth On
SSPIAuthoritative On
SSPIDomain XXXXXX
SSPIOmitDomain On
SSPIOfferBasic On
SSPIBasicPreferred Off
Require user "xxxxxx"
</Location>
我将自己删除为必需用户,系统提示您输入用户名和密码,但无法进行身份验证。然后我加回来并且能够验证确定。
感谢您的期待!