This assumes an omnibus installation. ______
See LDAP troubleshooting in docs - View Docs
Testing the LDAP server
ldapsearch
# Ubuntu
apt-get install ldap-utils
# CentOS
yum install openldap-clients
Edit the following values to match the LDAP configuration in gitlab.rb
Example LDAP configuration
# cat /etc/gitlab/gitlab.rb | grep -A 24 ldap_servers
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: '127.0.0.1'
port: 389
uid: 'uid'
method: 'plain' # "tls" or "ssl" or "plain"
bind_dn: 'cn=admin,dc=ldap-testing,dc=mrchris,dc=me'
password: 'Password1'
active_directory: true
allow_username_or_email_login: false
block_auto_created_users: false
base: 'dc=ldap-testing,dc=mrchris,dc=me'
user_filter: ''
attributes:
username: ['uid', 'userid', 'sAMAccountName']
email: ['mail', 'email', 'userPrincipalName']
name: 'cn'
first_name: 'givenName'
last_name: 'sn'
group_base: 'ou=groups,dc=ldap-testing,dc=mrchris,dc=me'
admin_group: 'gitlab_admin'
EOS
LDAP search switches
bind_dn: 'cn=admin,dc=ldap-testing,dc=mrchris,dc=me'
base: 'dc=ldap-testing,dc=mrchris,dc=me'
password: 'Password1'
port: 389
host: 127.0.0.1
sub "(objectclass=*)
will return "all" objectsGet all LDAP objects for baseDN
ldapsearch -D "cn=admin,dc=ldap-testing,dc=mrchris,dc=me" \
-w Password -p 389 -h 127.0.0.1 \
-b "dc=ldap-testing,dc=mrchris,dc=me" -s sub "(objectclass=*)"
production.log
)Could not find member DNs for LDAP group #<Net::LDAP::Entry:0x00000007220388
This usually indicates an issue with the uid
configuration value in gitlab.rb
When running ldapsearch
you can see what attribute is used for the LDAP username. In the below case the username attribute is uid
. Ensure uid: 'uid'
in the configuration. The default Microsoft Active Directory username value is sAMAccountName
dn: cn=user test,ou=people,dc=ldap-testing,dc=mrchris,dc=me
sn: test
givenName: user
uid: test
cn: user test
This indicates the admin_group name was not found admin_group: 'gitlab_admin'
. Ensure the group exists in AD and is under the group_base
This indicates a syntax error with one of the configured DNs. Check the following values, ensure they're the full DN.
group_base
bind_dn
base
Testing LDAP - valid for 8.10 >
gitlab-rails c
Rails.logger.level = 0
LdapGroupSyncWorker.new.perform
LdapSyncWorker.new.perform
gitlab-rails c
Rails.logger.level = 0
LdapGroupSyncWorker.new.perform
LdapSyncWorker.new.perform
Removing exclusive lease - Testing (valid for 8.6 to 8.9)
This is used to force an instant sync of LDAP for testing purposes.
vi /opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/ldap/group_sync.rb
sudo gitlab-ctl reconfigure
This will restart GitLabgitlab-rails console
Gitlab::LDAP::GroupSync.execute
group_sync.rb
file when finished
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/ldap/group_sync.rb
Additional testing
Start the rails console
sudo gitlab-rails console
Create a new adapter instance
adapter = ::Gitlab::Auth::LDAP::Adapter.new('ldapmain')
Find a group by common name. Replace UsersLDAPGroup with the common name to search.
GitLab 8.11 >
group = EE::Gitlab::LDAP::Group.find_by_cn('UsersLDAPGroup', adapter)
GitLab < 8.10
group = Gitlab::LDAP::Group.find_by_cn('UsersLDAPGroup', adapter)
Check member_dns
group.member_dns