1. 程式人生 > 實用技巧 >LDAP簡述及統一認證說明

LDAP簡述及統一認證說明

1. LDAP簡述

1.1. LDAP概念

  • 輕型目錄訪問協議(Lightweight DIrectory Access Protocol),LDAP是一種通訊協議,LDAP能夠支援TCP/IP。協議就是標準,在這套標準之下,AD(Active Directory)是微軟實現的一套產品。可以把AD理解成是個的資料庫,也有很多人直接把LDAP說成資料庫(可以把LDAP理解成一種樹形結構的資料庫)。LDAP也是有服務端和客戶端。服務端是用來存放資源,客戶端用來進行增刪改查等操作。
  • LDAP的儲存是樹形結構的,資料儲存在葉子節點上,因此LDAP的應用中主要使用其進行查詢,插入等變更操作效率相對較低。看看下面的例子:

LDAP裡定義一個記錄的位置:樹(dc=main) 分支(ou=o1,ou=oo1,ou=ooo1) 節點(cn=node)
dn:cn=main,ou=o1,ou=oo1,ou=ooo1,dc=node

  • ou會有多個值,從樹根到達node的位置,可能要經過好幾個分支,所以ou可能有多個值,關於dn後面一長串,分別是cn,ou,dc;中間用逗號隔開。
LDAP 樹形資料庫如下:
dn :一條記錄的詳細位置
dc :一條記錄所屬區域 (哪棵樹)
ou :一條記錄所屬組織 (哪個分支)
cn/uid:一條記錄的名字/ID (哪個節點)
LDAP 目錄樹的最頂部就是根,也就是所謂的 "基準DN"。

1.2. LDAP應用場景

  • 由於使用樹形結構儲存資料,因此查詢效率更高(參考關係型資料庫索引的實現原理:B樹/B+樹)在某些特定的場景下,使用樹形資料庫更理想。例如:需要儲存大量的資料,而且資料比較穩定,不需要太頻繁的修改,可以滿足快速的查詢,與傳統的關係型資料庫相比,LDAP除了快速查詢的特點,它還有很多的運用場景,比如域驗證等。

1.3. LDAP常見目錄樹結構設計

  • LDAP的目錄樹根一般定義為國家(c=CN)或者域名(dc=com),其次往往定義一個或者多個組織(organazation, o)或組織單元(oragnazation unit , ou),一個組織單元可以包含員工、裝置(計算機/印表機)相關資訊。

例如:uid=babs,ou=People,dc=example,dc=com.

假設域名為foobar.com,這個域名就能轉化為這個DN:dc=foobar,dc=com

如果foobar.com與wocket.com和gizmo.com合併,則以上的目錄結構就可以適應這種突然的變化,而無需重新規劃,在dc=com下面新增dc=wocket和dc=gizmo兩個條目即可。

初始目錄結構設定的越好,後續擴充套件時需要改動的就越少,通常情況分佈均勻層次較淺的結構工作的最好

2. LADP做統一認證


統一身認證改變了原有的認證策略,需要進行認證的應用都通過LDAP進行統一認證,在統一認證之後,使用者的所有資訊都儲存在AD Server中。終端使用者在需要使用內部服務的時候,都需要通過AD伺服器的認證。

上圖中展示的架構是LDAP進行統一身份認證的一般配置情況,LDAP Client指各種需要身份認證的軟體,例如Apache、Proftpd和Samba等。LDAP Sever指的是實現LDAP協議的軟體,例如OpenLDAP等。DataStorage指的是OpenLDAP的資料儲存,如關係型資料庫(MySQL)或查詢效率更高的嵌入式資料庫(BerkeleyDB),甚至是平面文字資料庫(—個txt的文字檔案)。可見,OpenLDAP軟體只是LDAP協議的一種實現形式,並不包括後臺資料庫儲存。但在很多時候管理員經常將LDAP Server和DataStorage放在同一臺伺服器,這樣就產生了人們通常所說的“LDAP資料庫”。雖然後臺數據庫(backend)可以是多種多樣,但LDAP協議還規定了資料的樹狀儲存方式,與DNS類似。