Apache-2.2
Apache 2.4 + SVN authz 身份驗證與混合身份驗證/匿名訪問
我正在使用 Apache 2.4,我希望在沒有 mod_access_compat 的情況下使用它。
我正在嘗試為 SVN 儲存庫提供服務,訪問控制由 mod_authz_svn 處理。
我希望 repos 中的某些 repos 或位置具有隻讀匿名訪問權限。我希望其他儲存庫或位置需要基本身份驗證。
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>
svn-訪問控制:
# cat etc/svn-access-control [/] antiduh = rw [openprojects:/] * = r antiduh = rw
我有 5 個儲存庫,openprojects 是唯一一個我想要匿名只讀訪問的儲存庫。我似乎無法讓它發揮作用。即使是我能找到的關於 mod_authz_svn 的最新文件也繼續使用
Satisfy all
.
在 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
然後添加
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>