使用 mod_dav_svn 在 Apache2 中进行身份验证

使用 mod_dav_svn 在 Apache2 中进行身份验证

我在 Apache2 中为使用 mod_dav_svn 提供服务的 SVN 存储库设置身份验证时遇到了一些问题。

这是我的目录的 Apache 配置:

<Location /svn>
    DAV svn
    SVNParentPath /var/svn/repos

    AuthType Basic
    AuthName "Subversion Repository"
    AuthUserFile /etc/apache2/dev.passwd
    Require valid-user
</Location>

我可以将svn其用于下的项目/var/svn/repos,因此我知道 DAV 正在运行,但是当我执行 svn 更新或提交(或任何操作)时,Apache 不会要求任何身份验证...无论是否存在 Auth 指令,它都会执行完全相同的操作。

存储库目录(以及所有子目录/文件)的权限仅授予 www-data(Apache2 用户/组)权限。

我还确保所有相关模块都已启用(特别是 mod_auth 已启用,所有 mod_dav* 模块也都已启用)。

知道为什么svn命令无法通过验证吗?

提前致谢。

答案1

您的 Subversion 客户端缓存凭证

答案2

您是否尝试过创建一个非 dav_svn(基本上是一个常规的 Web 目录)并检查权限是否有效?

例如,您可以尝试这样的操作:

<Location /test_auth>
    AuthType Basic
    AuthName "TEST TEST TEST"
    AuthUserFile /etc/apache2/dev.passwd
    Require valid-user
</Location>

答案3

如果你还没有。

如果这不起作用...

您是否确定没有任何 .htaccess .htpasswd 文件覆盖 httpd.conf 中的身份验证例程?

Apache 拥有一个包罗万象的权限继承模型,但要习惯它却相当困难。如果您的权限在那里设置正确,它们可能会被层次结构中较低的设置阻止,或被层次结构中较高的设置覆盖。

我希望我能给你一个更具体的答案,但是我对 Apache 的尝试通常需要我绞尽脑汁几天才能找到正确的答案。

答案4

听起来您很可能有某种重叠的配置,从而阻止 SVN 按预期工作。

当您使用 Web 浏览器浏览存储库中的不同子目录时会发生什么?它总是要求输入用户名/密码吗?尝试使用 wget 或 curl 从命令行浏览存储库。这些命令行实用程序不保留会话信息,因此您可以快速向不同的 URL 发出请求,快速使用不同的用户名和密码等。

使能够mod_info.mod_info 将创建一个页面(在http://www.example.org/server-info默认情况下,它将详细组合您的整个配置。这允许您查看重叠的配置文件(例如/etc/apache2/conf/和下的配置文件/etc/apache2/conf.d)是否会导致问题。

Apache 的继承模型有时可能很难理解。我发现这mod_info可以帮助我更清楚地了解事情。满足指令可能是罪魁祸首。

确保限制 mod_info 以仅允许从您的 IP 地址/网络进行访问。

相关内容