基本信息
LDAP協定
LDAP全稱為Light Directory Access Protocol,輕量級目錄訪問協定,LDAP協定從1993年批准,有了V1版本,1997年發布了第三個版本LDAP v3,使得LDAP協定不僅僅做為X.500的簡化版,同時提供了LDAP協定許多自有功能特性,LDAP V3協定也不是一個單一的協定,而是一個協定群組,包括內容如下:
RFC2251-LDAP V3協定核心協定,定義了LDAP V3協定的基本模型和操作;
定義
RFC2252-定義了LDAP V3基本數據模式(Schema)以及標準的系統數據模式,Schema包括語法、匹配規則、屬性類型和對象類;
RFC2253-定義了LDAP V3中的分辨名(Differentiate Name, DN)表達方式;
RFC2254-定義了LDAP V3中過濾器的表達方式;
RFC2255-定義了LDAP V3中統一資源地址格式;
RFC2256-定義了在LDAP V3中使用X.500的Schema列表;
RFC2829-定義了LDAP V3的認證方式;
RFC2830-定義了LDAP V3如何通過擴展使用TLS服務;
RFC1823-定義了C的關於LDAP V3客戶端開發接口;
RFC2847-定義了LDAP數據導入、導出的檔案接口LDIF;
在這些協定中,主要定義了LDAP的內容,同時定義了信息模型,確定了LDAP目錄中所存儲的信息的格式和字元集,如何表示目錄信息(定義對象類、屬性、匹配規則和語法等模式)。
一個命名空間:確定對信息進行的組織方式即就是目錄信息樹DIT,以DN和RDN為基礎的命名方式,以及LDAP信息的Internet表示方式;
模型
一個功能模型:確定可以在信息上執行的操作的通訊協定以及在客戶端盡心這些操作的API接口;
一個安全框架:保證目錄中信息的安全,匿名、用戶名/密碼、SASL等多種認證方式以及與TLS結合的通訊保護框架;
一個操作模型:分散式的操作模型,基於Referral方式的分散式操作框架;
一個LDAP擴展框架:基於控制和擴展操作的LDAP擴展框架 。
LDAP的基本模型
信息模型:用來描述LDAP中信息的表達方式。
在LDAP中信息以樹狀形式組織,在樹狀信息中基本的信息單元是條目,而每個條目有屬性組成,屬性中存儲有屬性的值;LDAP中的信息模式,類似於面向對象的概念,在LDAP中每條目必有屬於某個或者多個對象類(Object Class),每個Object Class由多個屬性類型組成,每個屬性類型有所對應的語法和匹配規則;對象類和屬性類型的定義均可以使用繼承的概念。每個條目創建時,必須定義所屬的對象類,必須提供對象類中的必選屬性類型的屬性值,在LDAP中一個屬性類型可以對應多個值。
在LDAP中把對象類、屬性類型、語法和匹配規則統稱為Schema,在LDAP中有許多系統對象類、屬性類型、語法和匹配規則,這些系統 Schema在LDAP標準中進行了規定,同時不同的套用領域也定義了自己的Schema,同時用戶在套用時,也可以根據需要自定義 Schema。這有些類似於XML,除了XML標準中的XML定義外,每個行業都有自己標準的DTD或DOM定義,用戶也可以自擴展;也如同XML,在 LDAP中也鼓勵用戶儘量使用標準的Schema,以增強信息的互聯互通。
在Schema中最難理解的是匹配規則,這是LDAP中為了加快查詢的速度,針對不同的數據類型,可以提供不同的匹配方法,如針對字元串類型的相等、模糊、大於小於均提供自己的匹配規則。
命名模型:描述LDAP中的數據如何組織 LDAP中的命名模型,也即LDAP中的條目定位方式。在LDAP中每個條目均有自己的DN和RDN。DN是該條目在整個樹中的唯一名稱標識,RDN是條目在父節點下的唯一名稱標識,如同檔案系統中,帶路徑的檔案名稱就是DN,檔案名稱就是RDN。
功能模型:描述LDAP中的數據操作訪問
在LDAP中共有四類10種操作:查詢類操作,如搜尋、比較;更新類操作,如添加條目、刪除條目、修改條目、修改條目名;認證類操作,如綁定、解綁定;其它操作,如放棄和擴展操作。除了擴展操作,另外9種是LDAP的標準操作;擴展操作是LDAP中為了增加新的功能,提供的一種標準的擴展框架,當前已經成為LDAP標準的擴展操作,有修改密碼和StartTLS擴展,在新的RFC標準和草案中正在增加一些新的擴展操作,不同的 LDAP廠商也均定義了自己的擴展操作。
安全模型:描述LDAP中的安全機制
LDAP中的安全模型主要通過身份認證、安全通道和訪問控制來實現。
身份認證在LDAP中提供三種認證機制,即匿名、基本認證和SASL(Simple Authentication and Secure Layer)認證。匿名認證即不對用戶進行認證,該方法僅對完全公開的方式適用;基本認證均是通過用戶名和密碼進行身份識別,又分為簡單密碼和摘要密碼認證;SASL認證即LDAP提供的在SSL和TLS安全通道基礎上進行的身份認證,包括數字證書的認證。
通訊安全在LDAP中提供了基於SSL/TLS的通訊安全保障。SSL/TLS是基於PKI信息安全技術,是目前Internet上廣泛採用的安全服務。LDAP 通過StartTLS方式啟動TLS服務,可以提供通訊中的數據保密性、完整性保護;通過強制客戶端證書認證的TLS服務,同時可以實現對客戶端身份和伺服器端身份的雙向驗證。
訪問控制雖然LDAP目前並無訪問控制的標準,但從一些草案中或是事實上LDAP產品的訪問控制情況,我們不難看出:LDAP訪問控制異常的靈活和豐富,在 LDAP中是基於訪問控制策略語句來實現訪問控制的,這不同於現有的關係型資料庫系統和套用系統,它是通過基於訪問控制列表來實現的,無論是基於組模式或角色模式,都擺脫不了這種限制。
在使用關係型資料庫系統開發套用時,往往是通過幾個固定的資料庫用戶名訪問資料庫。對於套用系統本身的訪問控制,通常是需要建立專門的用戶表,在套用系統內開發針對不同用戶的訪問控制授權代碼,這樣一旦訪問控制策略變更時,往往需要代碼進行變更。總之一句話,關係型資料庫的套用中用戶數據管理和資料庫訪問標識是分離的,複雜的數據訪問控制需要通過套用來實現。
而對於LDAP,用戶數據管理和訪問標識是一體的,套用不需要關心訪問控制的實現。這是由於在LDAP中的訪問控制語句是基於策略語句來實現的,無論是訪問控制的數據對象,還是訪問控制的主體對象,均是與這些對象在樹中的位置和對象本身的數據特徵相關。
在LDAP中,可以把整個目錄、目錄的子樹、制定條目、特定條目屬性集或符合某過濾條件的條目作為控制對象進行授權;可以把特定用戶、屬於特定組或所有目錄用戶作為授權主體進行授權;最後,還可以定義對特定位置(例如IP位址或DNS名稱)的訪問權