使用基于请求字符串的 LDAP 动态验证 Apache?

Chr*_*is 12 ldap environment-variables mod-auth-ldap apache-2.2

是否可以将请求 URI 的一部分用作 mod_authnz_ldapRequire ldap-group指令的输入?

我正在尝试动态检查对一堆不同项目目录的访问,所有目录都在http://testserver.com/projects/下,这样访问的用户/projects/abc将被检查cn=abc,ou=groups,dc=test. 理想情况下,我希望在不为每个项目创建单独的 Location 指令的情况下执行此操作,因为很可能有数百个。

我想出了这个,它说明了一般概念,但它不起作用(project_name 不检索实际变量内容):

<Location /projects>
    SetEnvIf Request_URI "/projects/([-a-z0-9A-Z_]+)/" project_name=$1

    AuthType Basic
    AuthBasicProvider ldap
    AuthName "Restricted Resource - SVN (LDAP)"
    AuthLDAPURL "ldap://127.0.0.1:389/dc=test?uid"
    AuthLDAPGroupAttributeIsDN off
    AuthLDAPGroupAttribute memberUid
    Require ldap-group cn=%{project_name},ou=groups,dc=test
</Location>
Run Code Online (Sandbox Code Playgroud)

帮助?

Cam*_*err 0

我相信 Apache 2.4 在这方面比 2.2 能提供更多...可能值得一看。

或者,可能值得考虑构建您自己的自定义模块;它并不像看上去那么可怕——假设你对 C 语言很熟悉。

同样,mod_perl 不是提供了很多通过钩子扩展 Apache 的功能吗?