1. 程式人生 > >LDAP自定義屬性欄位擴充套件實踐

LDAP自定義屬性欄位擴充套件實踐

      本文與大家分享和交流LDAP自定義屬性欄位的擴充套件,希望能對大家有所幫助。

一、LDAP(OpenLdap)服務安裝和啟動       LDAP全稱Lightweight Directory Access Protocol,即輕量目錄訪問協議。LDAP採用樹狀的層次結構儲存資料,這一點功能上可以理解為“資料庫”。關於LDAP(OpenLdap)的安裝和環境的搭建,CentOS和ubuntu上又有差異,不同安裝下的啟動方式略有不同。LDAP環境搭建的網路資源豐富,讀者可以查閱相關資料,搭建環境過程較為簡單,不再贅述。       筆者搭建的環境基於Ubuntu 16.04.3,啟動服務/etc/init.d/slapd restart,啟動後可通過檢視程序的方式觀測效果:

       

二、設定管理員密碼       在Ldap服務啟動正常的情況下,鍵入slappasswd -s 123456(為管理員賬號密碼)命令,會產生加密後的密碼:

      

     將該密碼在slapd.d/cn=config目錄下找到以bdb.ldif結尾的檔案,將剛剛加密的密碼修改並儲存:

     

三、安裝Apache Directory Studio      在官網下載windows版本下的zip包,解壓執行可執行檔案即可。配置Ldap所安裝的主機ip和埠號(一般為389):

          

         進一步輸入認證資訊,比如筆者這裡為cn=admin,dc=example,dc=com,密碼為123456。

        

         需說明的是,這一步驗證的方式為simple,即賬號和密碼驗證。驗證成功後即可看到Ldap的目錄樹和相關資料。

四、擴充套件自定義schema        Ldap自帶一些objectClass,這些objectClass包含常用的屬性。而實際專案中這些屬性往往不能滿足業務需求,這就需要研發人員擴充套件自定義的屬性。本文的重點就是講述如何擴充套件自定義屬性欄位,其中分為在父類中的屬性擴充套件和自定義objectClass中的屬性擴充套件兩種方式。     (1) 擴充套件父類中帶有的屬性,如mail。        我們可以通過Apache Directory Studio可以輕易的發現,父類的objectClass在沒有擴充套件的情況下是不被允許使用的!比如父類中包含的dSAQuality:  

我們用如下操作步驟擴充套件:

①新增組織 touch add_entry.ldif檔案,並鍵入如下內容: dn: ou=Marketing, dc=example,dc=com changetype: add objectclass: top objectclass: organizationalUnit ou: Marketing

dn: cn=BoA,ou=Marketing,dc=example,dc=com changetype: add objectclass: person objectclass: organizationalPerson objectclass: inetOrgPerson cn: BoA sn: aaa ou: Marketing description: beautiful uid: test1

②執行ldap的更新操作:ldapmodify -xWD 'cn=admin,dc=example,dc=com' -f add_entry.ldif

③修改組織擴充套件來自父類的屬性,這裡我們同樣touch modify_entry.ldif並鍵入如下內容:

dn: cn=Pete Minsky,ou=Marketing,dc=example,dc=com changetype: modify add: mail mail: [email protected]

④執行ldap的更新操作:ldapmodify -xWD 'cn=admin,dc=example,dc=com' -f modify_entry.ldif ⑤至此,我們可以在圖形瀏覽工具Apache Directory Studio介面看到,已有產生的ou=Marketing的組織並且cn=BoA的資料中包含email屬性欄位:       我們在新增屬性的時候可以看到這個屬性欄位是在父類的objectClass中的:

        

由此,擴充套件父類中帶有的屬性成功!     (2)在自定義objectClass中擴充套件屬性iccr         相信細心的讀者會發現方式①的操作步驟中,我們有用到如下三行配置內容: objectclass: person objectclass: organizationalPerson objectclass: inetOrgPerson         那麼,我們是不是擴充套件一個objectclass:myLdap這樣的父類就行了?沒錯,就是這樣簡單! 五、新增自定義schema     我們在/etc/ldap/schema目錄(根據個人情況,可能路徑有所不同)下,新增myTest.schema,並加上屬性和類名的資訊:          然後在當前目錄下新建目錄tmp,進入目錄並新建檔案myConf.conf,引入我們新增的myTest.schema和依賴的core.schema:         執行命令slapcat -f ./myConf.conf -F ./ -n0對schema進行編譯,把這一步生成的ldif檔案替換掉/etc/ldap/slapd.d/cn=config/cn=schema下的對應檔案,給剛剛替換的ldif檔案賦權並重啟ldap服務。在Apache Directory Studio介面我們可以看到擴充套件的iccr屬性:

      

表示操作成功!