LDAP中filter的使用


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
2
3
4
5
$ldapconn = ldap_connect(“10.1.8.78")
$ldapbind = ldap_bind($ldapconn, 'username', $ldappass);
$searchRows= ldap_search($ldapconn, $basedn, "(cn=*)");
$searchResult = ldap_get_entries($ldapconn, $searchRows);
ldap_close($ldapconn);
  1. 連接LDAP服務器
  2. 綁定到LDAP服務器
  3. 在LDAP服務器上執行所需的任何操作
  4. 釋放LDAP服務器的連接

LDAP Filter Note

運算符

  • 等於(EQUAL TO): =
  • 大於等於(Greater than): >=
  • 小於等於(Less than): <=
  • 通配符(wildcard): *

邏輯運算符

  • 邏輯與(logical AND): &
  • 邏輯或(logical OR): |
  • 邏輯非(logical NOT): !

舉例操作

以用戶信息存儲來舉例,假設,用戶目錄樹ou=user,dc=domain,結構如下:

1
2
3
4
5
6
dc=domain
|-ou=user
|-cn=zhangsan
|-cn=lisi
|-cn=wangwu
|-cn=zhaoliu

用戶信息屬性如下:

1
2
3
4
5
6
7
8
9
cn=zhangsan
objectClass=top
objectClass=person
name=張三
sex=男
age=28
pwd=123456
email=zhangsan@163.com
desc=描述
  • 查詢所有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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM