Apache 验证匹配子目录的组

Apache 验证匹配子目录的组

这里有一个独特的场景 - 可能过去出现过。我有一个目录,受 Apache 服务器上的 LDAP 身份验证保护。在这个目录中(称为 /svn - 是的,它是一个 subversion 目录),有项目作为子目录。

我想根据组文件限制有权访问此子目录的用户。但是,我不想在文件中httpd.conf为创建的每个项目添加特殊行。相反,子目录的 URL 将与组的名称匹配。

例如,我可能有项目“日历”。我的 SVN URL 将是“http://myserver.com/svn/caldendar“——并且唯一有权访问此存储库的用户将在我的groups.txt文件中列出:

calendar:user1 user2

因此,即使某人可以通过 LDAP 进行身份验证,user1也只user2应允许进入。

有没有更简单的方法可以做到这一点?也许为子目录设置一个变量并说Require ldap-group variable

谢谢!

答案1

经过进一步调查,我找到了 SVN 访问控制的解决方案。

使用authz_svn_module,Apache 配置中的我的 Subversion 目录如下所示:

<Location /svn>
  # Tell apache this is a subversion repository
  DAV svn
  # Where the subversion repository list exists on the file system
  SVNParentPath "/var/svn"
  # What kind of authentication     
  AuthType Basic
  AuthName "Restricted!"
  AuthBasicProvider ldap
  AuthLDAPBindDN "YOUR BIND DN"
  AuthLDAPBindPassword "YOUR BIND PASSWORD"
  AuthLDAPURL "ldaps://yourldapserver.com:636/other_info"
  AuthzSVNAccessFile /etc/httpd/svnaccess.txt
  Require valid-user
</Location>

非常基础 - 这里最重要的一行是AuthzSVNAccessFile- 它指向将自动生成的文件并保存哪些用户对哪些目录有权限。

这个“svnaccess.txt”文件看起来像这样:

[project1:/]
joe_user = rw
mary_beth = rw
$anonymous = r

[project2:/]
james_smith = rw

[project3:/]
john_deere = rw
$anonymous = r

此处列出的用户名是经过 LDAP 验证的用户名。它们不需要由 Subversion 注册(它们在验证时随用户携带)。 是@anonymous通配符:任何未经验证的人,或者可能满足AllowApache 配置中其他指令的人。此文件应该只能由 root(或启动 Apache 服务的任何人)读取。

该文件的创建可以自动生成 - 具体取决于您的信息来源。就我而言,我有一个 Redmine 服务器,其中包含有关用户和项目的信息,以及哪个用户可以访问哪个项目。可以编写一个简短的 Python 脚本来从数据库中提取该信息,并用于自动生成此文件(如果用作 cron 作业)。这是一种迂回的做事方式,但在您使其工作并自动化之后,您不必担心为每个新创建的项目/Subversion 存储库重新编写身份验证规则。

(而且从好的方面来说,更改这个“svnaccess.txt”文件不需要重新启动 Apache!)

相关内容