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
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。