openldap

OpenLDAP是輕型目錄訪問協定(Lightweight Directory Access Protocol,LDAP)的自由和開源的實現,在其OpenLDAP許可證下發行,並已經被包含在眾多流行的Linux發行版中。

它主要包括下述4個部分:

slapd - 獨立LDAP守護服務

slurpd - 獨立的LDAP更新複製守護服務

實現LDAP協定的庫

工具軟體和示例客戶端

基本介紹

  • 中文名:openldap
  • 外文名:Lightweight Directory Access Protocol,LDAP
  • 包括:slapd - 獨立LDAP守護服務
  • 配置:編輯 sldap.conf 檔案
  • 實例:建立條目,編輯導入ldif 檔案
使用,配置,啟動,實例,樣本,配置技巧,規避關於加密、證書等配置問題,在開發環境內進行測試驗證,更輕鬆地支持工具或實用程式,

使用

配置

1、配置 openldap,編輯 sldap.conf 檔案
1) 打開 c:\openldap\sldap.conf,找到include C:/openldap/etc/schema/core.schema,在它後面添加
openldap
include C:/openldap/etc/schema/cosine.schema
include C:/openldap/etc/schema/inetorgperson.schema
接下來的例子只需要用到以上三個 schema,當然,如果你覺得需要的話,你可以把其他的 schema 全部添加進來
include C:/openldap/etc/schema/corba.schema
include C:/openldap/etc/schema/dyngroup.schema
include C:/openldap/etc/schema/java.schema
include C:/openldap/etc/schema/misc.schema
include C:/openldap/etc/schema/nis.schema
include C:/openldap/etc/schema/openldap.schema
2) 還是在 sldap.conf 檔案中,找到
suffix "dc=my-domain,dc=com"
rootdn "cn=Manager,dc=my-domain,dc=com"
把這兩行改為
suffix "o=tcl,c=cn"
rootdn "cn=Manager,o=tcl,c=cn"
suffix 就是看自己如何定義了,後面步驟的 ldif 檔案就必須與它定義了。還要注意到這個配置檔案中有一個 rootpw secret,這個 secret 是 cn=Manager 的密碼,以後會用到,不過這裡是明文密碼,你可以用命令:
slappasswd -h {md5} -s secret
算出加密的密碼 {MD5}Xr4ilOzQ4PCOq3aQ0qbuaQ== 取代配置中的 secret。

啟動

2. 啟動 openldap
CMD 進入到 c:\openldap 下,運行命令slapd -d 1
用可以看到控制台下列印一片信息,openldap 默認是用的Berkeley DB 資料庫存儲目錄數據的。

實例

3. 建立條目,編輯導入ldif 檔案
1) 新建一個 ldif(LDAP Data Interchanged Format) 檔案(純文本格式),例如 test.ldif,檔案內容如下:
dn: o=tcl,c=cn
objectClass: dcObject
objectClass: organization
o: tcl
dc: com
dn: uid=Unmi, o=tcl,c=cn
uid: Unmi
objectClass: inetOrgPerson
userPassword: 123456
sn: Qiu
cn: 隔葉黃鶯
2) 執行命令:ldapadd -x -D "cn=manager,o=tcl,c=cn" -w secret -f test.ldif
導入組織信息和一個用戶 uid=Unmi

樣本

import java.util.Hashtable;import javax.naming.Context;import javax.naming.NamingException;import javax.naming.directory.DirContext;import javax.naming.directory.InitialDirContext;public class LDAPTest {    public static void main(String[] args) {        LDAPTest LDAPTest1 = new LDAPTest();        String root = "o=tcl,c=cn" ; //root        Hashtable env = new Hashtable();        env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory" );        env.put(Context.PROVIDER_URL, "ldap://localhost/" + root);        env.put(Context.SECURITY_AUTHENTICATION, "simple" );        env.put(Context.SECURITY_PRINCIPAL, "cn=Manager,o=tcl,c=cn" );        env.put(Context.SECURITY_CREDENTIALS, "secret" );        DirContext ctx = null ;        try {            ctx = new InitialDirContext(env);            System.out.println( "認證成功" );        } catch (javax.naming.AuthenticationException e) {            e.printStackTrace();            System.out.println( "認證失敗" );        } catch (Exception e) {            System.out.println( "認證出錯:" );            e.printStackTrace();        }        if (ctx != null ) {            try {                ctx.close();            }catch (NamingException e) {                //ignore            }        }    }}

配置技巧

以下是一些關於配置和部署該協定的常見技巧。

規避關於加密、證書等配置問題

為了獲得最佳的兼容性,請只使用OpenLDAP支持的命令。開源LDAP是Zimbra的協同套件軟體的重要組件。開源LDAP支持Ubuntu、Red Hat Enterprise Linux和SUSE Linux Enterprise Server環境,但建議不要在Red Hat平台使用OpenLDAP。

在開發環境內進行測試驗證

如果能在將LDAP部署到生產環境之前,先在獨立的開發環境內進行測試驗證,那么這些錯漏問題都不會產生實際的後果。一旦在開發環境中作出的更改達到要求,就可以將這些修改套用到生產環境。

更輕鬆地支持工具或實用程式

在實際的目錄管理中,使用命令行會倍感輕鬆。一個shell腳本或其他腳本語言可以幫系統管理員們完成複雜的管理任務,可以利用基於Perl的編輯器來實現Net::LDAP和Net::LDAPapi模組相關的任務自動化。

相關詞條

熱門詞條

聯絡我們