Apache-2.2

Apache 2.4 + SVN authz 身份驗證與混合身份驗證/匿名訪問

  • June 26, 2018

我正在使用 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>

引用自:https://serverfault.com/questions/606560