允许从本地主机进行SVN匿名读取访问
我有一个SVN存储库,配置为通过ApacheHTTPD使用基本身份验证来限制对指定用户的访问。为了支持在同一台服务器上运行的持续集成服务器(和其他只读服务),我希望允许本地主机进行匿名读取访问 在进行了一些研究(即谷歌搜索)之后,我想到了尝试以下Apache配置:允许从本地主机进行SVN匿名读取访问,svn,apache,httpd.conf,mod-dav-svn,Svn,Apache,Httpd.conf,Mod Dav Svn,我有一个SVN存储库,配置为通过ApacheHTTPD使用基本身份验证来限制对指定用户的访问。为了支持在同一台服务器上运行的持续集成服务器(和其他只读服务),我希望允许本地主机进行匿名读取访问 在进行了一些研究(即谷歌搜索)之后,我想到了尝试以下Apache配置: <Location /svn> DAV svn SVNParentPath /var/svn AuthType Basic AuthName "SVN" AuthBasicProvider
<Location /svn>
DAV svn
SVNParentPath /var/svn
AuthType Basic
AuthName "SVN"
AuthBasicProvider external
AuthExternal pwauth
#Only allow specified users to login to SVN
require user UID1
require user UID2
require user UID3
#Allow anonymous reads from localhost
<LimitExcept GET PROPFIND OPTIONS REPORT>
Order allow,deny
Allow from 127.0.0.1
</LimitExcept>
</Location>
DAV svn
SVNParentPath/var/svn
AuthType Basic
AuthName“SVN”
AuthBasicProvider外部
auth外部pwauth
#仅允许指定用户登录到SVN
需要用户UID1
需要用户UID2
需要用户UID3
#允许从本地主机进行匿名读取
命令允许,拒绝
允许从127.0.0.1开始
当我尝试从本地服务器进行匿名签出时,仍然会收到输入密码的提示(在本例中为root用户)
关于我可能做错了什么,或者我应该如何正确配置来允许这样做,有什么想法或建议吗
我最初配置匿名读取访问的尝试是基于页面上的信息。我认为您是在查找
位置
块底部的满足任何
,如果允许
和要求
指令匹配,则允许访问(与默认设置相反,默认设置要求它们全部匹配)
文档是。我认为这是行不通的 对于整个位置块,“require user”指令处于活动状态 我的第一个想法是将“require user”放在限制块中,这不会起作用,因为无论您从哪个ip请求数据,限制块都是活动的 创建第二个名为svnlocalhost的目录,在仅存在限制块的情况下再次将您的svn根映射到该目录
Satisfy Any
require valid-user
很好地为我工作(可以结帐,不能提交)
编辑
我的街区,有相关和不相关的部分
<Location /svn/>
DAV svn
SVNListParentPath on
SVNParentPath "D:/Repositories/"
SVNIndexXSLT "/svnindex.xsl"
SVNPathAuthz short_circuit
SVNCacheTextDeltas off
SVNCacheFullTexts off
AuthName "VisualSVN Server"
AuthType Basic
AuthBasicProvider file
AuthUserFile "D:/Repositories/htpasswd"
AuthzSVNAccessFile "D:/Repositories/authz"
Satisfy Any
require valid-user
# Add Expires/Cache-Control header explictly
ExpiresActive on
ExpiresDefault access
</Location>
DAV svn
SVNListParentPath打开
SVNParentPath“D:/Repositories/”
svnindexlt“/svnindex.xsl”
SVNPathAuthz短路
SVNCacheTextDeltas关闭
SVNCacheFullText关闭
AuthName“VisualSVN服务器”
AuthType Basic
AuthBasicProvider文件
AuthUserFile“D:/Repositories/htpasswd”
authzsvnacessfile“D:/Repositories/authz”
满足任何
需要有效用户
#明确添加Expires/Cache控制头
过期于
过期默认访问权限
如果我跳过
满足任何
,我必须对任何请求进行身份验证我始终无法找到一个解决方案,该解决方案只允许本地主机进行匿名读取访问,并且需要对任何远程系统的读写进行身份验证
最后,我为需要验证的应用程序创建了用户名/密码
这不是理想的解决方案…但它应该可以很好地工作。即使是我也无法解决匿名访问问题
但是我没有创建一个新的只读用户,而是通过使用基于文件的url实现了与redmine的集成,我正在使用file:///. 这不需要身份验证。如果您有多行默认情况下为requireny的
require
行,则只需通过一条规则。因此,您可以这样做
Require user UID1 UID2 UID3
#Allow anonymous reads from localhost
<LimitExcept GET PROPFIND OPTIONS REPORT>
Require ip 127.0.0.1
</LimitExcept>
需要用户UID1 UID2 UID3
#允许从本地主机进行匿名读取
要求ip 127.0.0.1
查看您的Apache日志,查看它认为您来自哪个IP。如果启用了IPv6,您可能需要添加Allow from::1
ssl\u access\u日志中的请求显示它来自我指定的127.0.0.1:127.0.0.1---[13/Feb/2012:10:38:40-0500]"选项/svn/myRepo
。我也想到了这一点。不幸的是,我们的svn:externals将使用此方法被破坏,因为它们都指向需要身份验证的/svn。嗯,好吧,这是怎么回事:分别听127.0.0.1和您的公共ip,然后定义两个虚拟主机,一个用于公共ip,一个用于环回ip…硬p你的问题的艺术在于如何将内部请求与外部请求分离。这似乎对我不起作用。它允许我匿名签出,但也可以匿名签入!你真的要让它在不指定用户id的情况下匿名签出吗?@Michael-on,你可以尝试从任何一个发布的服务器上进行签出提交很遗憾,我无法从工作中尝试您的URL(由于网络安全限制)。然而,我尝试了,但我无法得到您所描述的适合我自己的内容。您是如何在配置中指定要求有效用户
部分以将异常限制为只读的?@Michael-没有什么特别的。我将我的位置添加到了答案的编辑部分(完整位置),而这部分是有效的(使用AuthzSVNAccessFile
)它不允许我将匿名连接仅限于来自本地主机的连接。看起来这样做的话,我将不得不放弃,并创建一个只供我的CI服务器使用的帐户。不过,感谢您的帮助!:)