|
2006-08-19 17:32:56
.3 LDAP Security
LDAP是輕量級目錄服務(wù)(Lightweight Directory Access Protocol)。越來越多的應(yīng)用開始采用LDAP作為后端用戶存儲。在安全上,LDAP Security是基于ACL(Access Control List)的,它通過給一個用戶組分配LDAP 操作資源(比如對一個子樹的查詢,修改等)來最終完成權(quán)限的控制。因此在LDAP中,授權(quán)工作是以用戶組為單位進(jìn)行的。一個用戶組一般來說是擁有如下一組屬性的LDAP Entry:
其中objectclass可以為groupOfUniqueNames或者groupOfNames,它們對應(yīng)的組成員屬性分別是uniquemember和member。如果是動態(tài)組,objectclass為groupOfURLs。動態(tài)組一般應(yīng)用在成員可以通過某種業(yè)務(wù)邏輯運(yùn)算來決定的情況下。比如,經(jīng)理為ZHANGSAN的全部員工。下面是一個典型的動態(tài)組,memberURL屬性定義了哪些entry屬于該組:
從圖1-3-1中我們可以看出,用戶WANTXIAOMING,ZHANGSAN,LISI屬于組HR Managers。這種組和成員的關(guān)系是通過屬性uniquemember來決定的。同時LADP Group 支持嵌套,即一個組可以是另外一個組的成員,比如我們將Accounting Managers組分配給HR Managers組作為其成員:
這樣將表示Accounting Managers中的成員,同時也是組HR Managers的成員。通過這種層級關(guān)系可以使權(quán)限分配變的更加靈活。 下面是一些名詞的解釋,希望大家對LDAP有更好的理解: d) LDAP Search filter ——使用filter對LDAP進(jìn)行搜索。 Filter一般由 (attribute=value) 這樣的單元組成,比如:(&(uid=ZHANGSAN)(objectclass=person)) 表示搜索用戶中,uid為ZHANGSAN的LDAP Entry.再比如:(&(|(uid= ZHANGSAN)(uid=LISI))(objectclass=person)),表示搜索uid為ZHANGSAN, 或者LISI的用戶;也可以使用*來表示任意一個值,比如(uid=ZHANG*SAN),搜索uid值以 ZHANG開頭SAN結(jié)尾的Entry。更進(jìn)一步,根據(jù)不同的LDAP屬性匹配規(guī)則,可以有如下的Filter: (&(createtimestamp>=20050301000000)(createtimestamp<=20050302000000)),表示搜索創(chuàng)建時間在20050301000000和20050302000000之間的entry。 e) Base DN —— 執(zhí)行LDAP Search時一般要指定basedn,由于LDAP是樹狀數(shù)據(jù)結(jié)構(gòu),指定basedn后,搜索將從BaseDN開始,我們可以指定Search Scope為:只搜索basedn(base),basedn直接下級(one level),和basedn全部下級(sub tree level)。 下面是一個典型的LDAP Tree結(jié)構(gòu),右側(cè)顯示Entry uid=ZHANGSAN, ou=staff, ou=people, o=examples的屬性,該entry代表了一個名字叫張三的用戶: |
|
|