LDAP協(xié)議
背景
- X.400
- X.500(X.519 DAP)
- LDAP
1庸蔼、在ITU制定X.400系列Email標(biāo)準(zhǔn)時(shí),標(biāo)準(zhǔn)制定者們發(fā)現(xiàn)庇麦,需要一種通過(guò)網(wǎng)絡(luò)獲取通訊錄的標(biāo)準(zhǔn)化方法饿敲。這種通過(guò)網(wǎng)絡(luò)訪問(wèn)目錄服務(wù)的需求,推動(dòng)了X.500系列標(biāo)準(zhǔn)的開(kāi)發(fā)涌攻,尤其是其核心標(biāo)準(zhǔn)X.519 DAP目錄訪問(wèn)協(xié)議欧引。由于X.500標(biāo)準(zhǔn)嚴(yán)格遵循了OSI七層網(wǎng)絡(luò)架構(gòu),因此實(shí)現(xiàn)復(fù)雜恳谎,效率也成問(wèn)題芝此,所以業(yè)界采用情況不理想憋肖。
2、IETF意識(shí)到X.500系列標(biāo)準(zhǔn)的問(wèn)題后婚苹,對(duì)DAP協(xié)議進(jìn)行了改造和簡(jiǎn)化提出了輕量級(jí)目錄訪問(wèn)協(xié)議LDAP岸更。LDAP幾乎保留了所有的X.519標(biāo)準(zhǔn)要求的功能,但網(wǎng)絡(luò)協(xié)議選擇了最常用的TCP/IP協(xié)議膊升。
概念
1怎炊、LDAP
- 輕量目錄訪問(wèn)協(xié)議(Lightweight Directory Access Protocol)的縮寫(xiě)?LDAP標(biāo)準(zhǔn)
- 實(shí)際上是在X.500標(biāo)準(zhǔn)基礎(chǔ)上產(chǎn)生的一個(gè)簡(jiǎn)化版本
2、目錄服務(wù)
- 什么是目錄服務(wù)廓译?
目錄服務(wù)就是按照樹(shù)狀存儲(chǔ)信息的模式 - 目錄服務(wù)的特點(diǎn)评肆? 目錄服務(wù)與關(guān)系型數(shù)據(jù)庫(kù)不同?
(1)目錄服務(wù)的數(shù)據(jù)類型主要是字符型, 而不是關(guān)系數(shù)據(jù)庫(kù)提供的整數(shù)非区、浮點(diǎn)數(shù)瓜挽、日期、貨幣等類型
(2)目錄有很強(qiáng)的查詢(讀)功能征绸,適合于進(jìn)行大量數(shù)據(jù)的檢索
但目錄一般只執(zhí)行簡(jiǎn)單的更新(寫(xiě))操作久橙,不支持批量更新所需要的事務(wù)處理功能
(3)它主要面向數(shù)據(jù)的查詢服務(wù)(查詢和修改操作比一般是大于10:1),不提供事務(wù)回滾(rollback)機(jī)制.
(4)目錄具有廣泛復(fù)制信息的能力管怠,適合于多個(gè)目錄服務(wù)器同步/更新
目錄是一組具有類似屬性淆衷、以一定邏輯和層次組合的信息。常見(jiàn)的例子是通訊簿排惨,由以字母順序排列的名字吭敢、地址和電話號(hào)碼組成。
目錄服務(wù)是一種在分布式環(huán)境中發(fā)現(xiàn)目標(biāo)的方法暮芭。目錄具有兩個(gè)主要組成部分:
- 第一部分是數(shù)據(jù)庫(kù)鹿驼,數(shù)據(jù)庫(kù)是分布式的,且擁有一個(gè)描述數(shù)據(jù)的規(guī)劃辕宏。
- 第二部分則是訪問(wèn)和處理數(shù)據(jù)的各種協(xié)議畜晰。
目錄服務(wù)其實(shí)也是一種數(shù)據(jù)庫(kù)系統(tǒng),只是這種數(shù)據(jù)庫(kù)是一種樹(shù)形結(jié)構(gòu)瑞筐,而不是通常使用的關(guān)系數(shù)據(jù)庫(kù)凄鼻。目錄服務(wù)與關(guān)系數(shù)據(jù)庫(kù)之間的主要區(qū)別在于:二者都允許對(duì)存儲(chǔ)數(shù)據(jù)進(jìn)行訪問(wèn),只是目錄主要用于讀取聚假,其查詢的效率很高块蚌,而關(guān)系數(shù)據(jù)庫(kù)則是為讀寫(xiě)而設(shè)計(jì)的。
提示:目錄服務(wù)不適于進(jìn)行頻繁的更新膘格,屬于典型的分布式結(jié)構(gòu)峭范。
LDAP是一個(gè)目錄服務(wù)協(xié)議,目前存在眾多版本的LDAP瘪贱,而最常見(jiàn)的則是V2和V3兩個(gè)版本纱控,它們分別于1995年和1997年首次發(fā)布辆毡。
特點(diǎn)
- LDAP的結(jié)構(gòu)用樹(shù)來(lái)表示,而不是用表格甜害。
- LDAP可以很快地得到查詢結(jié)果舶掖,不過(guò)在寫(xiě)方面,就慢得多尔店。
- LDAP提供了靜態(tài)數(shù)據(jù)的快速查詢方式眨攘。
- LDAP不支持事務(wù)、不能進(jìn)行回滾嚣州。
- Client/Server模型期犬,支持分布式結(jié)構(gòu)。
- LDAP是一種開(kāi)放Internet標(biāo)準(zhǔn)避诽,LDAP協(xié)議是跨平臺(tái)的Interent協(xié)議。
其中璃谨,對(duì)于Client/Server模型沙庐,Server 用于存儲(chǔ)數(shù)據(jù),Client提供操作目錄信息樹(shù)的工具佳吞,數(shù)據(jù)庫(kù)操作client用于對(duì)ldap server庫(kù)進(jìn)行操作拱雏。
(1)工具:ldapadd, ldapsearch,ldapdelete
實(shí)用client:用于將ldap server庫(kù)在實(shí)際工作中使用
(2)工具:radius+ldap, pam+ldap
這些工具可以將數(shù)據(jù)庫(kù)的內(nèi)容以文本格式(LDAP 數(shù)據(jù)交換格式底扳,LDIF)呈現(xiàn)在您的面前铸抑。
認(rèn)證機(jī)制
- 基本認(rèn)證
通過(guò)用戶名和密碼進(jìn)行身份識(shí)別,又分為簡(jiǎn)單密碼和MD5密碼認(rèn)證 - SASL(Simple Authentication and Secure Layer)
一種在網(wǎng)絡(luò)協(xié)議中用于認(rèn)證和數(shù)據(jù)安全的框架 - SSL和TLS
分布式LDAP 是以明文的格式通過(guò)網(wǎng)絡(luò)來(lái)發(fā)送信息的衷模,包括client訪問(wèn)ldap的密碼鹊汛。TLS(SSL的后繼者,由OpenSSL 包)加密機(jī)制來(lái)解決這個(gè)問(wèn)題阱冶。
端口號(hào)
Ldap端口號(hào)(顯然提供分布式ldap)——389刁憋,636
[root@vmmac modules]# cat /etc/services | grep ldap
ldap 389/tcp 明文
ldap 389/udp 明文
ldaps 636/tcp # LDAP over SSL
ldaps 636/udp # LDAP over SSL
基本模型
LDAP的基本模型是建立在“條目”(Entry)的基礎(chǔ)上。一個(gè)條目是一個(gè)或多個(gè)屬性的集合木蹬,并且具有一個(gè)全局唯一的“可區(qū)分名稱”(用dn表示)至耻。與關(guān)系型數(shù)據(jù)(后面簡(jiǎn)稱數(shù)據(jù)庫(kù))進(jìn)行類比,一個(gè)條目相當(dāng)于數(shù)據(jù)庫(kù)中的一條記錄镊叁,而dn相當(dāng)于數(shù)據(jù)庫(kù)中記錄的關(guān)鍵字尘颓,屬性相當(dāng)于數(shù)據(jù)庫(kù)中的字段。
提示:dn必須是全局唯一的晦譬。
LDAP中疤苹,將數(shù)據(jù)組織成一個(gè)樹(shù)形結(jié)構(gòu),這與現(xiàn)實(shí)生活中的很多數(shù)據(jù)結(jié)構(gòu)可以對(duì)應(yīng)起來(lái)蛔添,而不像設(shè)計(jì)關(guān)系型數(shù)據(jù)庫(kù)的表痰催,需要進(jìn)行多種變化兜辞。例如,下圖就是一個(gè)樹(shù)形結(jié)構(gòu)的數(shù)據(jù)夸溶。
1逸吵、在上圖所示的樹(shù)形結(jié)構(gòu)中,樹(shù)的根結(jié)點(diǎn)是一個(gè)組織的域名(dlw.com)缝裁,其下分為3個(gè)部分扫皱,分別是managers、people和group捷绑,可將這3個(gè)組看作組織中的3個(gè)部門(mén)韩脑,如managers用來(lái)管理所有管理人員,people用來(lái)管理登錄系統(tǒng)的用戶粹污,group用來(lái)管理系統(tǒng)中的用戶組段多。當(dāng)然,在該圖中還可繼續(xù)增加其他分支壮吩。
2进苍、對(duì)于上圖所示的樹(shù)形結(jié)構(gòu),使用關(guān)系數(shù)據(jù)庫(kù)來(lái)保存數(shù)據(jù)的話鸭叙,需要設(shè)置多個(gè)表觉啊,一層一層分別保存,當(dāng)需要查找某個(gè)信息時(shí)沈贝,再逐層進(jìn)行查詢杠人,最終得到結(jié)果。
3宋下、若使用目錄來(lái)保存該圖中的數(shù)據(jù)嗡善,則更直觀。圖中每個(gè)結(jié)點(diǎn)用一個(gè)條目來(lái)保存学歧,不同類型的結(jié)點(diǎn)需要保存的數(shù)據(jù)可能不同滤奈,在LDAP中通過(guò)一個(gè)稱為objectClass的類型來(lái)控制不同結(jié)點(diǎn)需要的數(shù)據(jù)(稱為屬性)。
(1)用戶組可以配置
objectClass: posixGroup
objectClass: top
(2)用戶可以配置
objectClass: top
objectClass: posixAccount
objectClass: inetOrgPerson
4撩满、對(duì)于目錄中的數(shù)據(jù)怎樣進(jìn)行引用呢蜒程?前面提到過(guò),每一個(gè)條目都有一個(gè)dn伺帘,因?yàn)閐n是唯一的昭躺,因此就可找到需要結(jié)點(diǎn)的數(shù)據(jù)。dn的構(gòu)造方式如下:
首先得到條目自己的名稱(rdn伪嫁,稱為相對(duì)dn)领炫,然后開(kāi)始向上逐級(jí)查找父結(jié)點(diǎn),一直到根項(xiàng)為止张咳。例如帝洪,對(duì)于上圖中最右下方的結(jié)點(diǎn)似舵,其dn為:
dn: cn=ldap, ou=group, o=dlw.com
通過(guò)這樣的方式,即可唯一標(biāo)識(shí)每一個(gè)結(jié)點(diǎn)葱峡。
在現(xiàn)實(shí)生活中砚哗,有很多這種樹(shù)形結(jié)構(gòu)的數(shù)據(jù),如計(jì)算機(jī)文件系統(tǒng)的目錄結(jié)構(gòu)砰奕、Internet中的域名等蛛芥。這些類型的數(shù)據(jù),只要不需要頻繁的更新军援,都適合用目錄來(lái)保存仅淑。
功能
在LDAP的功能模型中定義了一系列利用LDAP協(xié)議的操作,主要包含以下4部分:
- 查詢操作 :允許查詢目錄和取得數(shù)據(jù)胸哥,其查詢性能比關(guān)系數(shù)據(jù)庫(kù)好涯竟。
- 更新操作 :目錄的更新操作沒(méi)關(guān)系數(shù)據(jù)庫(kù)方便,更新性能較差空厌,但也同樣允許進(jìn)行添加昆禽、刪除、修改等操作蝇庭。
- 復(fù)制操作 :前面也提到過(guò),LDAP是一種典型的分布式結(jié)構(gòu)捡硅,提供復(fù)制操作哮内,可將主服務(wù)器的數(shù)據(jù)的更新復(fù)制到設(shè)置的從服務(wù)器中。
- 認(rèn)證和管理操作 :允許客戶端在目錄中識(shí)別自己壮韭,并且能夠控制一個(gè)會(huì)話的性質(zhì)北发。
OpenLDAP
- LDAP協(xié)議的自由和開(kāi)源的實(shí)現(xiàn)。
- 并不包括后臺(tái)數(shù)據(jù)庫(kù)存儲(chǔ)喷屋,OpenLDAP配合Berkeley DB可使其讀操作的效率得到很大提高琳拨。
Berkeley DB是一個(gè)開(kāi)源的文件數(shù)據(jù)庫(kù),介于關(guān)系數(shù)據(jù)庫(kù)與內(nèi)存數(shù)據(jù)庫(kù)之間屯曹,使用方式與內(nèi)存數(shù)據(jù)庫(kù)類似狱庇,它提供的是一系列直接訪問(wèn)數(shù)據(jù)庫(kù)的函數(shù),而不是像關(guān)系數(shù)據(jù)庫(kù)那樣需要網(wǎng)絡(luò)通訊恶耽、SQL解析等步驟密任。
安裝
- 通過(guò)下載tar包,解壓編譯安裝
- 通過(guò)掛載方式偷俭,yum浪讳,zypper安裝
配置
- 配置slapd.conf
--了解LDAP Schema - 配置LDIF文件
--LDIF文本條目格式
--了解objectClass
--了解Attribute
--創(chuàng)建LDIF文件