LDAP 是輕量目錄訪問協議,英文全稱是LIGHTWEIGHT DIRECTORY ACCESS PROTOCOL,一般都簡稱為 LDAP。
讀寫效率非常高
對讀操作進行最佳化的一種資料庫,在讀寫比例大於7比1的情況下,LDAP會體現出極高的效能。這個特性正適合了身份認證的需要。
開放的標準協議
不同於SQL資料庫,LDAP的客戶端是跨平臺的,並且對幾乎所有的程式語言都有標準的API介面。
即使是改變了LDAP資料庫產品的提供廠商,開發人員也不用擔心需要修改程式才能適應新的資料庫產品。這個優勢是使用SQL語言進行查詢的關係型資料庫難以達到的。
強認證方式
可以達到很高的安全級別。
在國際化方面,LDAP使用了UTF-8編碼來儲存各種語言的字元。
OpenLDAP開源實現
OpenLDAP還包含了很多有創造性的新功能,能滿足大多數使用者的要求。
OpenLDAP是其中最輕便且消耗系統資源最少的一個。
OpenLDAP是開源軟體,近年國內很多公司開發的LDAP產品都是基於OpenLDAP開發的。
靈活新增資料型別
LDAP是根據schema的內容定義各種屬性之間的從屬關係及匹配模式的。
例如在關係型資料庫中如果要為使用者增加一個屬性,就要在使用者表中增加一個欄位,在擁有龐大數量使用者的情況下是十分困難的,需要改變表結構。
但LDAP只需要在schema中加入新的屬性,不會由於使用者的屬性增多而影響查詢效能。
資料儲存是樹結構
整棵樹的任何一個分支都可以單獨放在一個伺服器中進行分散式管理,不僅有利於做伺服器的負載均衡,還方便了跨地域的伺服器部署。
這個優勢在查詢負載大或企業在不同地域都設有分公司的時候體現尤為明顯。
LDAP 的特點
- LDAP 是一種網路協議而不是資料庫,而且LDAP的目錄不是關係型的,沒有RDBMS那麼複雜,
- LDAP不支援資料庫的Transaction機制,純粹的無狀態、請求-響應的工作模式。
- LDAP不能儲存BLOB,LDAP的讀寫操作是非對稱的,讀非常方便,寫比較麻煩,
- LDAP支援複雜的查詢過濾器(filter),可以完成很多類似資料庫的查詢功能。
- LDAP使用樹狀結構,接近於公司組織結構、檔案目錄結構、域名結構等我們耳熟能詳的東西。 LDAP使用簡單、介面標準,並支援SSL訪問。
LDAP與NIS相比
1.LDAP是標準的、跨平臺的,在Windows下也能支援。
2.LDAP支援非匿名的訪問,而且有比較複雜的訪問控制機制(如ACL),安全性似乎更好一些。
3.LDAP支援很多複雜的查詢方式。
4.LDAP的用途較NIS更為廣泛,各種服務都可以和LDAP掛鉤。
LDAP 的主要應用場景
.網路服務:DNS服務
2.統一認證服務:
3.Linux PAM (ssh, login, cvs. . . )
4.Apache訪問控制
5.各種服務登入(ftpd, php based, perl based, python based. . . )
6.個人資訊類,如地址簿
7.伺服器資訊,如帳號管理、郵件服務等
作為一般的公司來說,LDAP 很多時候被用來許可權認證,軟體和內部系統的使用者管理和認證。
設想下,你有一個軟體公司,公司裡面有超過上千的員工,你們公司可能會用到各種軟體,比如說 JIRA,Wiki,程式碼庫,考勤系統等等。
LDAP 就充當了授權的這個角色,你可用在 LDAP 中對使用者進行授權,分組,這樣你的使用者就會具有不透過軟體平臺的訪問許可權了。
現在公司的流動性也非常強,每天都會有入職的也會有離職的,對每一個人都要進行授權,撤銷許可權,跨域管理等等與使用者有關的操作,在大一點的公司這個簡直就是災難。
LDAP 能夠很好的解決這個問題。
Spring Data 提供了基於 LDAP 協議訪問的 API,需要注意的是,在開發的時候需要將 LDAP 認為是一個資料庫,只是與普通資料庫不同的是,LDAP 使用的是 LDAP 的協議。
否則,在使用者分組查詢,等基於 Spring Data LDAP 的程式設計過程中,你可能會感到非常困惑。