采用混合身份validation/匿名访问的Apache 2.4 + SVN authz身份validation

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

我试图服务于SVN仓库,访问控制由mod_authz_svn处理。

我想要在回购站内的一些回购或位置具有只读的匿名访问。 我想要其他回购或地点要求基本authentication

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

Apacheconfiguration:

  <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> 

SVN的访问控制:

 # cat etc/svn-access-control [/] antiduh = rw [openprojects:/] * = r antiduh = rw 

我有5个回购,openprojects是唯一一个我想匿名只读访问。 我似乎无法得到这个工作。 即使是我可以find的最新的文档 mod_authz_svn继续使用Satisfy all

在mod_authz_svn的源代码中,它看起来好像对ap_satisfies(r) == SATISFY_ANY 。 我并不完全熟悉Apache API模型,但是这似乎表明mod_authz_svn目前不支持Apache 2.4的新身份validation模型。

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

为了在Apache 2.4下工作,加载mod_access_compat模块:

 LoadModule access_compat_module libexec/apache24/mod_access_compat.so 

然后添加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> 

在大多数情况下, Satisfy All的2.4等价物是将Require指令括在<RequireAll>块中。 Satisfy Any的等价物将是<RequireAny>块。

有关更改和等同内容的更多信息,Rich Bowen的此演示文稿(PDF)可能会有所帮助。