mercurial ssl access allow pull BUT需要认证才能推送

时间:2012-05-15 12:10:28

标签: mercurial apache2 hgweb

我已经通过SSL设置了一个mercurial服务器。在apache配置文件中,我使用mysql数据库设置了身份验证。

我希望每个人都能够在没有凭据的情况下从存储库中提取,但是将权限限制为经过身份验证的用户。现在的方式是,每个人都被认证为拉和推,或者没有人。

我的apache配置如下:

<Location /hg/repo>
   AuthType Basic
   AuthName "Repository Access"
   AuthBasicAuthoritative Off
   AuthUserFile /dev/null
   AuthMySQL                    On
   AuthMySQL_Authoritative      On
   AuthMySQL_Host               localhost
   AuthMySQL_DB                 repo
   AuthMySQL_User               repo
   AuthMySQL_Password_Table     users_auth_external
   AuthMySQL_Group_Table        users_auth_external
   AuthMySQL_Username_Field     username
   AuthMySQL_Password_Field     passwd
   AuthMySQL_Group_Field        groups
   AuthMySQL_Encryption_Types   SHA1Sum
   Require group                pink-image
   <LimitExcept GET>
       Require valid-user
   </LimitExcept>
</Location>

hg还需要对ssl pull进行身份验证,无论在LimitExcept开关上如何。

是否有办法限制身份验证仅用于推送到存储库?

简单的http访问是不够的,因为如果某人是开发人员,她会通过https检出代码。

无法进行SSH访问,因为某些开发人员拥有防火墙禁止的ssh端口。

其中一个解决方案是,如果hg会记住https凭证。

感谢您阅读此问题。

3 个答案:

答案 0 :(得分:3)

身份验证应该包含在例外规则中。

<Location /hg/repo>
   <LimitExcept GET>
        AuthType Basic
        AuthName "Repository Access"
        AuthBasicAuthoritative Off
        AuthUserFile /dev/null
        AuthMySQL                    On
        AuthMySQL_Authoritative      On
        AuthMySQL_Host               localhost
        AuthMySQL_DB                 repo
        AuthMySQL_User               repo
        AuthMySQL_Password_Table     users_auth_external
        AuthMySQL_Group_Table        users_auth_external
        AuthMySQL_Username_Field     username
        AuthMySQL_Password_Field     passwd
        AuthMySQL_Group_Field        groups
        AuthMySQL_Encryption_Types   SHA1Sum
        Require group                pink-image      
  </LimitExcept>
</Location>

答案 1 :(得分:2)

One of the solutions would be if hg would remember the https credentials.

它可以记住推拉的凭据。如果您不介意将详细信息添加到其中一个配置文件(用户配置或存储库克隆的auth

,请查看hg help config的{​​{1}}部分下的内容

这意味着将密码放在您可能不喜欢的配置文件中,这样您就可以使用Mercurial Keyring Extension来更安全地存储密码。

答案 2 :(得分:0)

事实证明,自动凭证还不够。可以通过Web界面访问存储库。但是,相同的配置文件会在浏览器中弹出一个验证对话框,使Web界面无法使用。