基于ldap-groups

时间:2017-05-09 16:08:21

标签: ldap gitlab

我正在尝试在linux机器上设置gitlab。我坚持在/etc/gitlab/gitlab.rb文件中的LDAP配置。 我想允许黑人和绿队的成员访问,拒绝访问其他人。

我的conf看起来像这样:

gitlab_rails['ldap_enabled'] = true

###! **remember to close this block with 'EOS' below**
gitlab_rails['ldap_servers'] = YAML.load <<-'EOS'
main:
  label: 'LDAP'
  host: 'hidden'
  port: 'hidden'
  uid: 'sAMAccountName'
  method: 'plain'
  bind_dn: 'hidden'
  password: 'hidden'
  active_directory: true
#  allow_username_or_email_login: true
#  block_auto_created_users: false
  base: "cn=Black Team,OU=hidden2,OU=hidden3,OU=hidden4,OU=hidden5,OU=hidden6,DC=ad,DC=companyname,DC=com"  
  base: "cn=Green Team,OU=hidden2,OU=hidden3,OU=hidden4,OU=hidden5,OU=hidden6,DC=ad,DC=companyname,DC=com" 
#  user_filter: ''
#  attributes:
#    username:['uid', 'userid', 'sAMAccountName']
#    email:    ['mail', 'email', 'userPrincipalName']
#    name:       'cn'
#    first_name: 'givenName'
#    last_name:  'sn'
#  ## EE only
#  admin_group: ''
#  sync_ssh_keys: false
 EOS

但它不起作用。很可能是因为此类配置授予组访问权限,但不授予组成员权限。有没有办法允许子组/子项/子元素授予访问权限?

我知道我们可以这样做:

 base: ''
   user_filter: '(|(memberOf=cn=Black Team,OU=hidden2,OU=hidden3,OU=hidden4,OU=hidden5,OU=hidden6,DC=ad,DC=companyname,DC=com)(memberOf=cn=Green Team,OU=hidden2,OU=hidden3,OU=hidden4,OU=hidden5,OU=hidden6,DC=ad,DC=companyname,DC=com))'

将是:“允许所有人,并将结果仅限于黑人和绿队的成员” 到目前为止它工作正常,但是在添加了更多的团队之后,过滤器将变得很长,并且在更复杂的过滤器的情况下更新并不容易。

因此,我对允许列出的组的每个成员(在“基础”字段中)的解决方案感兴趣。 是否可以通过“基础”字段定义多个组? 是否可以允许访问“基础”字段中列出的组成员?

1 个答案:

答案 0 :(得分:2)

我认为你不能这样做基础字段,并且应该只有1个基础,但是多行帮助使得很长的过滤器更容易编辑?

换行符被视为空格,因此如果您看到每行的组名称,则可能会有所帮助。

user_filter: '(|(memberOf=cn=Black Team,OU=hidden2,OU=hidden3,OU=hidden4,OU=hidden5,OU=hidden6,DC=ad,DC=companyname,DC=com)
                (memberOf=cn=Green Team,OU=hidden2,OU=hidden3,OU=hidden4,OU=hidden5,OU=hidden6,DC=ad,DC=companyname,DC=com))
                (memberOf=cn=Another Team,OU=hidden2,OU=hidden3,OU=hidden4,OU=hidden5,OU=hidden6,DC=ad,DC=companyname,DC=com))'