1. 程式人生 > >GitLab整合LDAP登入並解決OpenLDAP的memberOf問題

GitLab整合LDAP登入並解決OpenLDAP的memberOf問題

一、前言

LDAP是Light weight Directory Access Protocol(輕量級目錄訪問協議)的縮寫,其前身是更為古老的DAP協議。

常公司員需要記住很多密碼,管理這些密碼是一件讓人感覺十分麻煩的事情。LDAP協議就是解決這樣問題的一個

統一認證標準協議(LDAP的服務原理請檢視參考文件1)。該篇文章簡單的介紹OpenLDAP的安裝和配置和GitLab(高

版本才支持,過低的版本請升級)新增對LDAP認證的支援。該文章的亮點(也是寫這篇文章的主要目的)是解決了

OpenLDAP(我使用的版本號為2.4.*)載入memberof模組,並通過groupOfNames和memberOf實現分組認證的功能。

二、OpenLDAP安裝

我的Linux系統為Centos6.7(64位)系統,具體安裝步驟請檢視參考文件2。

三、實現OpenLDAP的memberOf功能

  1、在/etc/openldap目錄下新建檔案memberof_load_configure.ldif。內容如下:

dn: cn=module{0},cn=config
objectClass: olcModuleList
cn: module{0}
olcModulepath: /usr/lib64/openldap
olcModuleload: {0}memberof.la

dn: olcOverlay={0}memberof,olcDatabase={2}bdb,cn=config
objectClass: olcMemberOf
objectClass: olcOverlayConfig
objectClass: olcConfig
objectClass: top
olcOverlay: {0}memberof

說明:上面的引數請根據實際情況修改(比如32的系統的話olcModulepath為/usr/lib/openldap)。該處靈感來源參考文件3。

2、執行命令sudo ldapadd -Q -Y EXTERNAL -H ldapi:/// -f memberof_load_configure.ldif。該處命令來源

參考文件4。

3、刪除步驟二OpenLDAP安裝建立的測試資料(如果已經建立),重新用inetOrgPerson建立使用者資訊(在“建立

新條目”下的“預設”中的ObjectClasses查詢)和用groupOfNames建立組資訊(位置同上,不過這裡建立組不能

選擇groupOfUniqueNames

型別,二者區別可以檢視參考文件6)。本人的重新配置之後的目錄如下圖:



4、用命令ldapsearch -x -LLL -H ldap:/// -b cn=test,ou=users,ou=***,dc=ldap,dc=live-in,dc=org dn 

memberof進行測試,如果輸入如下內容表示配置成功。


四、GitLab整合LDAP認證

1、修改GitLab配置檔案/etc/gitlab/gitlab.rb找到gitlab_rails['ldap_enabled']位置做如下圖配置就行

了。具體設定請檢視參考文件5。


說明:base屬性執行所有員工,user_filter屬性主要用來實現分組功能。上面的配置是隻有ldap中的gitlab分組中

的使用者可以登入GitLab。

2、執行sudo gitlab-ctl reconfigure命令重新載入GitLab配置;

3、重啟GitLab服務

##關閉命令如下
sudo gitlab-ctl stop unicorn
sudo gitlab-ctl stop sidekiq
sudo gitlab-ctl stop nginx
##啟動命令如下
sudo gitlab-ctl start unicorn
sudo gitlab-ctl start sidekiq
sudo gitlab-ctl start nginx

參考文件:

1、http://czmmiao.iteye.com/blog/1561597 LDAP服務原理詳解(原創);

2、http://www.live-in.org/archives/1731.html CentOS Linux安裝OpenLDAP伺服器;

3、https://forums.opensuse.org/showthread.php/425183-OpenLDAP-2-4-Overlays-Missing Thread: OpenLDAP 2.4 - Overlays Missing?

4、https://technicalnotes.wordpress.com/2014/04/19/openldap-setup-with-memberof-overlay/ openldap setup with memberof overlay;

5、https://docs.gitlab.com/ee/administration/auth/ldap.html;

6、http://www.openldap.org/lists/openldap-software/200308/msg00073.html RE: *answer?* groupOfNames vs groupOfUniqueNames。