我正在尝试使用GitLab设置LDAP身份验证(在VM的Ubuntu 14.04 amd64上安装的7.12.2版本,已设置Omnibus)。我已经编辑了gitlab.rb文件,如下所示:
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: 'LDAP'
host: '********'
port: 389
uid: 'sAMAccountName'
method: 'plain' # "tls" or "ssl" or "plain"
bind_dn: 'CN=********,OU=********,OU=********,DC=********,DC=***'
password: '********'
active_directory: true
allow_username_or_email_login: false
block_auto_created_users: false
base: 'DC=********,DC=***'
user_filter: ''
EOS
这将导致可怕的“由于“无效的凭据”而无法从Ldapmain授权您”。错误。我已经尝试过使用用户名(在bind_dn变量中):“ johnsmith@example.com”(基于用户名的电子邮件),“ John Smith”(全名)和“ johnsmith”(用户名)。结果总是一样的。我的密码中确实有@符号。我不确定是否需要转义,或如何转义。
日志显示:
Started POST "/users/auth/ldapmain/callback" for 127.0.0.1 at 2015-07-22 17:15:01 -0400
Processing by OmniauthCallbacksController#failure as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"[FILTERED]", "username"=>"********", "password"=>"[FILTERED]"}
Redirected to http://192.168.56.102/users/sign_in
Completed 302 Found in 14ms (ActiveRecord: 3.6ms)
Started GET "/users/sign_in" for 127.0.0.1 at 2015-07-22 17:15:01 -0400
Processing by SessionsController#new as HTML
Completed 200 OK in 20ms (Views: 8.3ms | ActiveRecord: 2.9ms)
并gitlab-rake gitlab:ldap:check
显示此:
Checking LDAP ...
LDAP users with access to your GitLab server (only showing the first 100 results)
Server: ldapmain
Checking LDAP ... Finished
但是,当我从Ubuntu VM(同样的环境)中使用ldapsearch时,确实得到了很多结果:
ldapsearch -x -h ******** -D "********@********.***" -W -b "OU=********,OU=********,DC=********,DC=***" -s sub "(cn=*)" cn mail sn dn
奇怪的是,结果中的DN如下所示:
dn: CN=John Smith,OU=********,OU=********,OU=********,DC=********,DC=***
也就是说,那里有一个额外的OU。我还看到ldapsearch命令具有-s sub
,我认为这意味着搜索子组。我对LDAP或Active Directory的来龙去脉并不熟悉。
因此,我相信我的基地中缺少一些东西,但是我不确定是什么。用户过滤器也可能是一个问题。我已经完成了必要的Googling,这使我走到了这一步,但是现在我没有想法和解决方案了。
@etagenklo:你是正确的。我进行了一些其他更改,并使它能够正常工作。我将发布后代答案。
—
siride 2015年
这个答案可能会有所帮助:stackoverflow.com/a/54462889/6290553
—
Raktim Biswas,
base
看起来有点短。当您将ldapsearch结果的完整路径(包括所有OU)放在那里时,会发生什么?