複製鏈接
請複製以下鏈接發送給好友

openldap

鎖定
OpenLDAP是輕型目錄訪問協議(Lightweight Directory Access Protocol,LDAP)的自由和開源的實現,在其OpenLDAP許可證下發行,並已經被包含在眾多流行的Linux發行版中。
它主要包括下述4個部分:
slapd - 獨立LDAP守護服務
slurpd - 獨立的LDAP更新複製守護服務
實現LDAP協議的庫
工具軟件和示例客户端
中文名
openldap
外文名
Lightweight Directory AccessProtocol,LDAP
包    括
slapd - 獨立LDAP守護服務
配    置
編輯 sldap.conf 文件
實    例
建立條目,編輯導入ldif文件

openldap使用

openldap配置

1、配置 openldap,編輯 sldap.conf 文件
1. 打開 c:\openldap\sldap.conf,找到include C:/openldap/etc/schema/core.schema,在它後面添加
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。

openldap啓動

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

openldap實例

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

openldap樣本

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配置技巧

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

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

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

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

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

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

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