Gitlab:LDAP"凭证无效",但凭据是正确的

时间:2014-07-18 13:21:24

标签: ldap gitlab

以下ldapsearch命令完美无瑕。

  

ldapsearch -LLL -s sub -P 3 -D“CN =,OU = IT,OU =非用户,OU =用户,OU = UserAccount,DC =,DC = com”-H ldaps://。 com:-w'' - v -b'OU = Users,OU = UserAccount,DC =,DC = com''(&(objectClass = person)(sAMAccountName =))'

但是,无论我多少仔细检查这些值是否正确输入,这在gitlab.yml中配置都没有。

  

ldap:
      启用:真实       主持人:'。com'
      港口:
      uid:'sAMAccountName'
      方法:'ssl'
      bind_dn:'CN =,OU = IT,OU =非用户,OU =用户,OU = UserAccount,DC =,DC = com'
      密码:''
      allow_username_or_email_login:true
      base:'OU = Users,OU = UserAccount,DC =,DC = com'
      user_filter:''       group_base:''

是的,BindDN与其他用户位于不同的位置,但它位于其中,因此查询库有效。

所有尝试都会在屏幕上抛出此错误:

  

无法通过LDAP授权您,因为“凭据无效”

production.log表示以下内容:

  

在2014-07-18 08:13:17 -0400开始获取127.0.0.1的“/ users / sign_in”   由Devise处理:: SessionsController#new as HTML
  在21ms完成200 OK(浏览次数:12.8ms | ActiveRecord:0.0ms)
  在2014-07-18 08:13:25 -0400开始POST“/ users / auth / ldap / callback”为127.0.0.1   由OmniauthCallbacksController处理#失败为HTML
    参数:{“utf8”=>“✓”,“authenticity_token”=>“”,“用户名”=>“”,“密码”=>“[已过滤]”}   重定向到http:/// users / sign_in
  完成302发现3ms(ActiveRecord:0.0ms)
  在2014-07-18 08:13:56 -0400开始获取127.0.0.1的“/ users / sign_in”   由Devise处理:: SessionsController#new as HTML
  在10ms完成200 OK(浏览次数:5.9ms | ActiveRecord:0.0ms)
  在2014-07-18 08:20:03 -0400开始发布“/ users / auth / ldap / callback”for 127.0.0.1

有问题的LDAP是Active Directory,虽然我本身无法访问服务器以查询日志,但每次尝试登录时,“badPwdCount”都会递增,我不明白怎么样,或者为什么。

我知道最终用户的风险和他们坚持正确地键入他们的用户名和密码,但我已经检查过,三重检查,八重检查我的声明中没有任何拼写错误,并且我找不到任何其他与此相同错误组合的事件。我知道这里的语法是正确的。

可能是什么问题?

3 个答案:

答案 0 :(得分:1)

以下是我为LDAP工作的AD设置。

#########################################
ldap:  
    enabled: true  
    host: '16.184.18.88'  
    port: 636  
    uid: 'sAMAccountName'   #userPrincipalName  
    method: 'ssl' # "tls" or "ssl" or "plain"  
    bind_dn: 'CN=Gitlab Git,CN=Users,DC=mydomain,DC=net'  
    password: 'My_Password'  
    allow_username_or_email_login: false  
    base: 'CN=Users,DC=mydomain,DC=net'  
    user_filter: '(memberOf=CN=Developers,OU=GitLabHQ,DC=mydomain,DC=net)'  
    group_base: 'OU=GitLabHQ,DC=mydomain,DC=net'  
    admin_group: GitLabAdmins
########################################

答案 1 :(得分:0)

我们遇到了类似的问题,尽管我们的设置都是正确的,因为我们通过在Jenkins,SonarQube等不同工具上设置相似的LDAP配置来获得用户搜索结果。等

我们通过将位于 DefaultForceNoPage 文件中的true的值设置为ldap.rb来解决了该问题(路径可能会有所不同gitlab版本)

/opt/gitlab/embedded/lib/ruby/gems/2.3.0/gems/net-ldap-0.16.0/lib/net/ldap.rb
                                                                      ^^^^^^^

defaultForceNoPage

,默认为false。因此,将值设置为true后,请使用以下命令重新启动GitLab服务器:

gitlab-ctl reconfigure

您还可以通过以下方式检查您是否正在获得组织用户的结果:

gitlab-rake gitlab:ldap:check

LDAP rake

注意:用户在使用其邮件ID登录应用程序时遇到的最常见问题,您应该输入:

uid: 'mail'

答案 2 :(得分:-1)

尝试在gitlab中配置LDAP时,我也遇到“无效凭据”错误。该错误绝对是由于ldap查询的格式。 gitlab appln会查找将用户绑定到AD的特定格式。

这是我的工作配置

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: '<LDAP hostname>'
  port: 389
  uid: 'sAMAccountName'
  method: 'plain' # "tls" or "ssl" or "plain"

  bind_dn: 'CN=<user name>,OU=<ou1>,OU=<ou2>,...,DC=example,DC=com'
  password: 'My_Password'
  active_directory: true
  allow_username_or_email_login: true
  block_auto_created_users: false
  base: 'DC=example,DC=com'

如果你不确定bind_dn。使用AD查询工具为您提供用户的完整绑定dn。