VisualSVN身份验证排除



我已经从Apache 2.2托管的subversion存储库转移到了具有Windows身份验证(基本)的VisualSVN(v3.9.2和Apache 2.4)。这是一个新的设置,没有升级,在导入存储库后,我可以很好地签出、更新和提交。此外,使用浏览器访问web界面也可以(需要名称和密码)。

现在,我想将pdf文件排除在身份验证之外,这样任何知道正确URL的人都可以使用浏览器查看它们。

在旧的设置中,我添加了这个位置部分:

<LocationMatch ^.+.[pP][dD][fF](?[pr]=d+)*$>
AuthType None   
Allow from all
Satisfy Any   
Require all granted
</LocationMatch>

删除不再支持的Allow.../Satisfy...指令可以启动服务器,但在访问pdf文件时会出现500错误代码。

如果我只有Require all granted指令,它仍然会请求名称和密码。

经过一些研究并与自动生成的httpd.conf进行比较,我添加了一些选项,并尝试了它们的不同组合,但都不起作用:

<LocationMatch "^.+.[pP][dD][fF]/?(?[pr]=d+)?$">
AuthType None
AuthMerging Or
SVNPathAuthz off
AuthzVisualSVNAuthoritative off
SVNOverrideAll on
Require all granted
</LocationMatch>

如果我将浏览器导航到存储库中的文件夹并输入凭据,然后导航到pdf文件,它就会工作。只有当我在没有事先验证的情况下打开pdf文件的链接时,我才会收到服务器错误。在服务器上,事件日志显示以下错误消息:

AH00027: No authentication done but request not allowed without authentication for /svn/Test/trunk/test.pdf. Authentication not configured?
[client 10.1.1.254]

由于apache服务器的日志级别更高,我在访问pdf时得到了以下信息:

AH01626: authorization result of Require valid-user : denied (no authenticated user yet)
AH01626: authorization result of <RequireAny>: denied (no authenticated user yet)
AH01626: authorization result of Require all granted: granted
AH01626: authorization result of <RequireAny>: granted
AH01626: authorization result of AuthMerging Any: granted

因此,Apache似乎授予了访问权限,但VisualSVN仍然需要身份验证。

有人做过类似的事情并找到了解决方案吗?

VisualSVN服务器现在不支持匿名访问。用户必须经过身份验证和授权才能查看存储库内容。您不应该修改服务器的httpd.conf或httpd-custom.conf文件以启用匿名访问,这可能会导致意外行为。

与其调整VisualSVN服务器的配置,不如考虑另一个选项。编写一个脚本,从存储库中获取所需的PDF文件,并通过另一个不需要身份验证的HTTP服务器为用户提供这些文件。这可以是提交后脚本,也可以是轮询存储库并在发生更改时下载文件的脚本。

最新更新