LDAP Studying Note
LDAP(Light Directory Access Portocol),它是基於X.500標准的輕量級目錄訪問協議。
What is LDAP
LDAP是指輕量級目錄訪問協議,LDAP目錄服務由目錄數據庫和一套訪問協議組成
目錄
目錄是一個為查詢、瀏覽和搜索而優化的數據庫,它成樹狀結構組織數據,類似文件目錄一樣
目錄數據庫和關系數據庫不同,它有優異的讀性能,但寫性能差,並且沒有事務處理、回滾等復雜功能,不適於存儲修改頻繁的數據。
LDAP的基本模型
概念
目錄樹
在一個目錄服務系統中,整個目錄信息集可以表示為一個目錄信息樹,樹中的每個節點是一個條目。
條目
每個條目就是一條記錄,每個條目有自己的唯一可區別的名稱(DN)。
對象類
與某個實體類型對應的一組屬性,對象類是可以繼承的,這樣父類的必須屬性也會被繼承下來
屬性
描述條目的某個方面的信息,一個屬性由一個屬性類型和一個或多個屬性值組成,屬性有必須屬性和非必須屬性
Acronym
DC domain component
域名的部分,其格式是將完整的域名分成幾部分,如域名為example.com變成dc=example,dc=com(一條記錄的所屬位置)
UID user id
用戶ID yuyang.zhang(一條記錄的ID)
OU organization unit
組織單位,組織單位可以包含其他各種對象(包括其他組織單元),如“QA組”(一條記錄的所屬組織)
CN common name
公共名稱,如“Joey Young”(一條記錄的名稱)
SN surname
姓,如“章”
DN distinguished name
“uid=yuyang.zhang,ou=QA組,dc=example,dc=com”,一條記錄的位置(唯一)
RDN relative distinguished name
相對辨別名,類似於文件系統中的相對路徑,它是與目錄樹結構無關的部分,如“uid=yuyang.zhang”或“cn=Joey Young”
基本模型
信息模型
在LDAP中信息以樹狀方式組織,在樹狀信息中基本數據單元是條目,每個條目由屬性組成,屬性中存儲有屬性值
命名模型
LDAP的命名模型是條目定位方式,在LDAP中每個條目都有自己的DN,DN是該條目在整個樹中的唯一名稱標識,如同文件系統中,帶路徑的文件名就是DN
功能模型
在LDAP中共有四類10種操作:
-
查詢類操作
搜索、比較
-
更新類操作
添加條目、刪除條目、修改條目、修改條目名
-
認證類操作
綁定、解綁
-
其他操作
放棄、擴展操作
安全模型
LDAP的安全模型主要通過身份認證、安全通道和訪問控制來實現
LDAP的使用
統一身份認證主要是改變原有的認證策略,使需要認證的軟件都通過LDAP進行認證,在統一身份認證之后,用戶的所有信息都存儲在AD Server中。終端用戶在需要使用公司內部服務的時候,都需要通過AD服務器的認證。
以PHP腳本作為例子:
1 |
$ldapconn = ldap_connect(“10.1.8.78") |
- 連接LDAP服務器
- 綁定到LDAP服務器
- 在LDAP服務器上執行所需的任何操作
- 釋放LDAP服務器的連接
LDAP Filter Note
運算符
- 等於(EQUAL TO): =
- 大於等於(Greater than): >=
- 小於等於(Less than): <=
- 通配符(wildcard): *
邏輯運算符
- 邏輯與(logical AND): &
- 邏輯或(logical OR): |
- 邏輯非(logical NOT): !
舉例操作
以用戶信息存儲來舉例,假設,用戶目錄樹ou=user,dc=domain,結構如下:
1 |
dc=domain |
用戶信息屬性如下:
1 |
cn=zhangsan |
-
查詢所有name為張三,sex為男的用戶
(&(name=張三)(sex=男))
-
查詢所有age不為28的用戶
(!(age=28))
-
查詢所有age為28,並且name不為張三的用戶
(&(age=28)(!(name=張三)))
-
查詢所有age為28,或者name為張三的用戶
(|(age=28)(name=張三))
-
查詢所有name的姓為張,或者desc包含描述的用戶
(|(name=張*)(desc=*描述*))
-
查詢所有有email為空的用戶
(email=)
-
查詢所有沒有desc屬性的用戶
(!(desc=*))
-
查詢所有有desc屬性的用戶
(desc=*)
- 在CPS中:
- 格式為:(&(objectClass=top)(cn=*******)(cn={login}))
- 必須加{login}來讀取登錄時帶的信息,賦予給cn