如何限制LDAP组(使用LDAPsearchfilter)访问Gitlab?

我有一个运行Gitlab CE安装LDAP身份validation。 现在我想限制基于组成员资格的访问。

选项user_filter似乎是一个select。 但是,我似乎无法让任何人被允许根据组成员login。

我试过的是( gitlabaccess是应该被允许login的组):

 user_filter: '(&(objectclass=group)(samaccountname=gitlabaccess))' 

要么:

 user_filter: '(memberOf=cn=gitlabaccess,DC=my,DC=domain,DC=com)' 

该文件声明以下,但它也不起作用,我不知道应该是什么数字:

 user_filter: '(memberOf:1.2.840.113556.1.4.1941:=cn=gitlabaccess,DC=my,DC=domain,DC=com)' 

特定用户的工作是这样的:

 user_filter: '(&(objectclass=user)(samaccountname=jon.doe))' 

从omnibus软件包安装的Gitlab CE版本9.5.5。

如何限制基于LDAP组成员资格的访问Gitlab?

我想到了。 您需要指定与所有OU的组的整个path。 在我的情况是这样的:

 user_filter: '(&(objectClass=user)(memberOf=CN=gitlabaccess,OU=mail-distribution-groups,OU=staff,DC=my,DC=domain,DC=com))' 

正如在评论中指出的那样,上面的查询只返回组的直接成员。 如果你还想包含嵌套组的成员,你将不得不添加:1.2.840.113556.1.4.1941:memberOf像这样:

 user_filter: '(&(objectClass=user)(memberOf:1.2.840.113556.1.4.1941:=CN=gitlabaccess,OU=mail-distribution-groups,OU=staff,DC=my,DC=domain,DC=com))' 

如果你想添加一个特定的用户,使用这个:

 user_filter: '(|(&(objectClass=user)(memberOf=CN=gitlabaccess,OU=mail-distribution-groups,OU=staff,DC=my,DC=domain,DC=com))(&(objectClass=user)(sAMAccountName=jon.doe)))'