我正在通过 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>
这可行,但每当添加/删除存储库时都需要更改配置。有没有办法提取与 in 匹配的值.*
,LocationMatch
以便我们可以将其插入require ldap-filter
指令中?