Apache 2.4 + SVN authz 身份验证,混合身份验证/匿名访问

ant*_*duh 7 svn authentication apache-2.2 apache-2.4

我使用的是 Apache 2.4,我希望在没有 mod_access_compat 的情况下使用它。

我正在尝试为 SVN 存储库提供服务,访问控制由 mod_authz_svn 处理。

我希望一些存储库或存储库中的位置具有只读匿名访问权限。我希望其他存储库或位置需要基本身份验证。

Apache 2.4 不再支持该Satisfy all语法,但是 mod_authz_svn 似乎期望它。这应该如何在 Apache 2.4 上配置?

阿帕奇配置:

 <Location /svn>
        DAV svn
        SVNParentPath /usr/projects/svn
        AuthType Basic
        AuthName "SVN repository"
        AuthUserFile /usr/project-config/etc/svn-auth-file
        AuthzSVNAccessFile /usr/project-config/etc/svn-access-control
        Require valid-user
 </Location>
Run Code Online (Sandbox Code Playgroud)

svn 访问控制:

# cat etc/svn-access-control
[/]
antiduh = rw

[openprojects:/]
* = r
antiduh = rw
Run Code Online (Sandbox Code Playgroud)

我有 5 个存储库,openprojects 是我唯一想要匿名只读访问的存储库。我似乎无法让它发挥作用。即使我能找到的关于 mod_authz_svn 的最新文档也继续使用Satisfy all.

ant*_*duh 4

浏览 mod_authz_svn 的源代码,看起来它对ap_satisfies(r) == SATISFY_ANY. 我并不完全熟悉 Apache API 模型,但这似乎表明 mod_authz_svn 目前不支持 Apache 2.4 的新身份验证模型。

由于没有其他人提出答案或相反的证据,我将将此标记为答案。

要使其在 Apache 2.4 下工作,请加载mod_access_compat模块:

LoadModule access_compat_module libexec/apache24/mod_access_compat.so
Run Code Online (Sandbox Code Playgroud)

然后添加该Satisfy any子句,正如文档当前所示。

 <Location /svn>
    DAV svn
    SVNParentPath /usr/home/antiduh/svn
    AuthType Basic
    AuthName "SVN repository"
    AuthUserFile /usr/home/antiduh/svn/etc/svn-auth-file
    AuthzSVNAccessFile /usr/home/antiduh/svn/etc/svn-access-control
    Satisfy any
    Require valid-user
 </Location>
Run Code Online (Sandbox Code Playgroud)