无需服务器端访问的 Gitlab LDAP(Active Directory)身份验证

Gitlab LDAP (Active Directory) Authentication without Server Side Access

我在 RHEL 6.6 上使用 GitLab Omnibus 7.10.0。我使用以下配置启用了 LDAP:

gitlab_rails['ldap_enabled'] = true
gitlab_rails['ldap_servers'] = YAML.load <<-'EOS' # remember to close this block with 'EOS' below
main: # 'main' is the GitLab 'provider ID' of this LDAP server    
label: 'FOO COM Active Directory (LDAP)'
 host: 'ad.server.foo.com'
 port: 3268
  uid: 'someuser'
 method: 'plain' # "tls" or "ssl" or "plain"
 bind_dn: 'CN=My Whole. Name,OU=Some Users,DC=ad,DC=server,DC=foo,DC=com'
 password: 'thepassword'
 active_directory: true
 allow_username_or_email_login: false
 block_auto_created_users: false
 base: 'DC=ad,DC=server,DC=foo,DC=com'
 user_filter: ''
#     ## EE only
#     group_base: ''
#     admin_group: ''
#     sync_ssh_keys: false
#
#   secondary: # NOT FILLED OUT
EOS

我的问题是我无法让用户通过 LDAP 进行身份验证。我不确定配置是否错误,或者我需要在服务器端做一些事情(我无法直接访问)。当我运行

gitlab-rake gitlab:ldap:check RAILS_ENV=production

我明白了

Checking LDAP ...

LDAP users with access to your GitLab server (only showing the first 100 results)
Server: ldapmain 

Checking LDAP ... Finished

我可以使用此帐户(我的个人帐户)或其他应用程序的其他帐户使用 java 搜索个人用户,但无法让 AD 与 gitlab 一起使用。我通过 运行 在 Windows 框上执行此命令得到了 bind_dn "My Whole. Name"。 gpresult -r

我也试过 bind_dn 的:

uid=myADaccountname,OU=Some Users,DC=ad,DC=server,DC=foo,DC=com
and 
myADaccountname@ad.server.foo.com

但我还是遇到了同样的问题

对于 Active Directory,uid 应该是:

uid: 'sAMAccountName'

Gitlab 应使用 bind_dn 中指定的用户和给定的密码进行连接。

从 GitLab 9.5.1 开始,uid 现在需要 [ ]

看到这个问题:https://gitlab.com/gitlab-org/gitlab-ce/issues/37120 这可能只是一个将被修复的错误。

我必须将 Active Directory 的值从上面的答案更新为:

uid: ['sAMAccountName']