如何在Require指令中使用LocationMatch通配符?

时间:2013-04-24 23:26:30

标签: regex apache authentication

我正在通过HTTP提供Git,并希望使用Active Directory组锁定对每个存储库的访问。目前的相关配置如下:

这是Apache配置中的顶级指令:

<LocationMatch "^/git/.*$">
    Order allow,deny
    Allow from all

    AuthLDAPBindDN "someaccount@domain.local"
    AuthLDAPBindPassword "somepassword"
    AuthType Basic
    AuthBasicProvider ldap
    AuthLDAPURL "ldap://dc.domain.local:3268/DC=domain,DC=local?sAMAccountName?sub?(objectClass=*)" NONE
    Require ldap-group cn=Domain Users,cn=Users,dc=domain,dc=local
</LocationMatch>

然后单独为每个存储库提供类似的内容:

<Location /git/somerepo.git>
  <Limit GET PUT POST DELETE PROPPATCH MKCOL COPY MOVE LOCK UNLOCK>
    Require ldap-filter memberof:1.2.840.113556.1.4.1941:=CN=somerepo,OU=Git,DC=domain,DC=local
  </Limit>
</Location>

这可以工作,但只要添加/删除存储库,就需要更改配置。有没有办法提取.*LocationMatch匹配的值,以便我们可以将其插入require ldap-filter指令?

1 个答案:

答案 0 :(得分:0)

由于LocationMatch不支持反向引用,因此无法写入。

来源:https://serverfault.com/a/423913/28470