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



我通过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指令中?

看起来这是不可能的,因为LocationMatch不支持反向引用。

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

最新更新