gitlab 接入 openldap、AD


===============================================

20171009_第2次修改                       ccb_warlock

===============================================

 

今天調試gitlab接入AD域控,找了很多資料才解決了問題,在此處做記錄。

gitlab有自己的用戶機制,但其也兼容ldap的用戶驗證機制(本質上openldap和AD域控都是基於ldap機制),由於公司內部的統一賬戶機制正在調整,故需要將gitlab進行配置,試驗下來社區版的gitlab經過修改配置文件后可以使用openldap和微軟ad域控作為其用戶機制。

 

版本:gitlab 社區版 9.3.4(漢化)

gitlab目錄:/etc/gitlab

gitlab配置文件:/etc/gitlab/gitlab.rb(社區版初始該文件內容為空)


 一、接入openldap

1.1 修改配置文件gitlab.rb

 在gitlab.rb文件中添加下面配置,其中:

1.host,是搭建的openldap的ip,根據實際情況修改;

2.uid,可以配置cn,也可以配置uid,都能識別(具體為什么沒深入研究);

3.bind_dn,openldap的管理員賬號,根據實際情況修改;

4.password,openldap的管理員,根據實際情況修改;

5.active_directory,似乎是針對連接是否是ad域控的標示,因為這部分是openldap的配置,故為false;

6.allow_username_or_email_login,用戶登錄是否用戶名和郵箱都可以,方便用戶故配置true;

7.base,用戶列表所在的目錄,因為新增的用戶都在openldap的People下,故這么配置,根據實際情況修改;

 1 # 指明服務的地址
 2 external_url = 'http://localhost'
 3 
 4 # 開啟ldap
 5 gitlab_rails['ldap_enabled'] = true
 6 gitlab_rails['ldap_servers'] = YAML.load <<-'EOS' ###! **remember to close this block with 'EOS' below**
 7 main: # 'main' is the GitLab 'provider ID' of this LDAP server
 8      label: 'LDAP'
 9      host: '192.168.6.4'
10      port: 389
11      uid: 'uid'
12      method: 'plain' # "tls" or "ssl" or "plain"
13      bind_dn: 'cn=Manager,dc=abc,dc=cn'
14      password: '123456' 
15      active_directory: false
16      allow_username_or_email_login: true
17      block_auto_created_users: false
18      base: 'ou=People,dc=abc,dc=cn'
19      user_filter: ''
20 EOS

 

1.2 重新加載新配置

# gitlab-ctl reconfigure

運行后最后一行為“gitlab Reconfigured!”才說明是加載新配置成功,否則就是根據報錯信息找錯誤。

 

1.3 查看是否能正常獲取用戶列表

# gitlab-rake gitlab:ldap:check

正常連接的情況下執行之后能看到用戶的列表

 

1.4 重啟gitlab

# gitlab-ctl restart

 

重啟成功后,gitlab的界面就會變成下面這樣。

 

 openldap的用戶通過“LDAP”頁進入,管理員root通過“標准”頁進入。

 


 

二、接入AD

2.1 修改配置文件gitlab.rb

在gitlab.rb文件中添加下面配置,其中:

1.host,是搭建的微軟域服務器的ip,根據實際情況修改;

2.uid,必須配sAMAccountName才能識別

3.bind_dn,域服務器的管理員賬號,根據實際情況修改;

4.password,域服務器的管理員,根據實際情況修改;

5.active_directory,似乎是針對連接是否是ad域控的標示,因為這部分是域服務器的配置,故為true;

6.allow_username_or_email_login,用戶登錄是否用戶名和郵箱都可以,方便用戶故配置true;

7.base,用戶列表所在的目錄,因為新增的用戶都在People下(試驗了用戶放在User時gitlab檢測不到用戶,故新建了一個目錄People,並將新建的用戶移入了該目錄下),故這么配置,根據實際情況修改;

external_url = 'http://localhost'

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: '192.168.6.1'
  port: 389
  uid: 'sAMAccountName'
  method: 'plain' # "tls" or "ssl" or "plain"
  bind_dn: 'cn=Administrator,cn=users,dc=myad,dc=cn'
  password: '123456'
  active_directory: true
  allow_username_or_email_login: true
  block_auto_created_users: false
  base: 'ou=People,dc=myad,dc=cn'
  user_filter: ''
EOS

 

2.2 重新加載新配置

# gitlab-ctl reconfigure

運行后最后一行為“gitlab Reconfigured!”才說明是加載新配置成功,否則就是根據報錯信息找錯誤。

 

2.3 查看是否能正常獲取用戶列表

# gitlab-rake gitlab:ldap:check

正常連接的情況下執行之后能看到用戶的列表

 

2.4 重啟gitlab

# gitlab-ctl restart

 

重啟成功后,gitlab的界面就會變成下面這樣。

 

 openldap的用戶通過“LDAP”頁進入,管理員root通過“標准”頁進入。

 

2.5 確認該用戶不處於特殊狀態

1.不處於“禁用賬戶”的狀態;

2.不處於“需要首次登錄修改密碼”的狀態;

(處於上面任意一種狀態的賬戶在登錄gitlab時都會報“Cloud not authenticate you from Ldapmain because "Invalid creadentials".”)

 

參考資料:

1.https://my.oschina.net/firxiao/blog/357559

2.https://ssorc.tw/6358

3.https://docs.gitlab.com/ee/administration/auth/ldap.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM