Mam przyjemność konfigurowania kont użytkowników w GitLabie tak aby pobierał dane z Active Directory. No i wszystko pięknie … ale trzeba się trochę namęczyć. Dokumentacja jest piękna, ale dopiero kilka porad z interńetów połączonych w całość dała radę. Poniższe czynności były realizowane na licencji darmowej w oparciu o serwer Ubuntu.
1. Uzupełniamy config
Dla uproszczenia podam swój ocenzurowany config, żeby pokazać jak to u mnie wygląda i jak bardzo różni się to od dokumentacji.
external_url 'http://git.example.com' gitlab_rails['ldap_enabled'] = true gitlab_rails['ldap_servers'] = YAML.load <<-EOS main: label: 'LDAP' host: 'myad.example.com' port: 389 or 636 uid: 'sAMAccountName' method: 'plain' # "tls" or "ssl" or "plain" bind_dn: 'CN=myGitAdminAccount,OU=Konta AD,OU=IT,OU=Example,DC=myad,DC=example,DC=com' password: 'My_SecretPassword' active_directory: true allow_username_or_email_login: false block_auto_created_users: false base: 'DC=myad,DC=example,DC=com' user_filter: '(memberOf=CN=gr_GitUsers,OU=GIT,OU=IT,OU=Groups,DC=myad,DC=example,DC=com)' attributes: username: ['uid', 'userid', 'sAMAccountName'] email: ['mail', 'email', 'userPrincipalName'] name: 'cn' first_name: 'givenName' last_name: 'sn' EOS
Najważniejsze w configu to ustawienie portu gdzie domyślnie jest to 389, ale Administrator mógł zmienić port. W przypadku podawania konta dla odczytu użytkowników z AD należy podać FULL DN dla konta. Skąd go wziąć? Jest to proste jeżeli działamy na komputerze podpiętym do domeny. Wystarczy w CMD wydać polecenie:
DSQUERY.exe * -limit 0 -filter "(&(objectCategory=Person)(objectClass=User)(!userAccountControl:1.2.840.113556.1.4.803:=2))" >"c:\activeUsers.txt"
Komenda zapisze nam w pliku tekstowym wszystkich znalezionych użytkowników. Wystarczy teraz skopiować FULL DN dla konta.
Kolejnym krokiem jest ustawienie user_filter (jeżeli potrzebujemy) oraz base. W obu przypadkach również musimy podać pełne ścieżki. Możemy napisać je ręcznie, pamiętając o pokręconej kolejności lub użyć komendy:
DSQUERY.exe group DC=myad,DC=example,DC=com -limit 0 > c:\group.txt
Komenda zapisze nam na dysku C wszystkie dostępne grupy oraz ich FULL DN. Zapisujemy configa i przesyłamy go do /etc/gitlab/ jako gitlab.rb.
2. Re konfigurujemy GitLaba
W tym celu wydajemy w konsoli komendę
sudo gitlab-ctl reconfigure
Jeżeli nasz config jest dobrze sformatowany to zobaczymy ścianę tekstu jak na powyższym screenie. W przeciwnym wypadku dostaniemy screen debugu z zaznaczoną linią i opisem co jest źle. Teraz należy sprawdzić czy działa nasze połączenie. W tym celu wydajemy w konsoli komendę:
gitlab-rake gitlab:ldap:check --trace
Jeżeli nasza konfiguracja działa uzyskamy w odpowiedzi pierwsze 100 rekordów z Active Directory. Możemy rozpocząć pracę z GitLabem i logowaniem przez Active Directory!