LDAP協(xié)議基礎(chǔ)概念_第1頁
LDAP協(xié)議基礎(chǔ)概念_第2頁
LDAP協(xié)議基礎(chǔ)概念_第3頁
LDAP協(xié)議基礎(chǔ)概念_第4頁
LDAP協(xié)議基礎(chǔ)概念_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、1. 從用途上闡述LDAP,它是一個存儲靜態(tài)相關(guān)信息的服務(wù),適合“一次記錄多次讀取”。常用LDAP服務(wù)存儲的信息: · 公司的物理設(shè)備信息(如打印機(jī),它的IP位置、存放位置、廠商、購買時間等) · 公開的員工信息(位置、電話、電子郵件)ü · 合同和賬號信息(客戶信息、產(chǎn)品交付日期、投標(biāo)信息、項(xiàng)目信息)ü · 憑證信息(認(rèn)證憑證、許可證憑證)ü 2. 從數(shù)據(jù)結(jié)構(gòu)上闡述LDAP,它是一個樹型結(jié)構(gòu),能有效明確的描述一個組織結(jié)構(gòu)特性的相關(guān)信息。在這個樹型結(jié)構(gòu)上的每個節(jié)點(diǎn),我們稱之為“條目(Entry)”,每個條目有自己的唯一可區(qū)別

2、的名稱(Distinguished Name ,DN)。條目的DN是由條目所在樹型結(jié)構(gòu)中的父節(jié)點(diǎn)位置(Base DN)和該條目的某個可用來區(qū)別身份的屬性(稱之為RDN如uid , cn)組合而成。對Full DN :“shineuserid=linly , ou=Employee , dc=jsoso , dc=net”而言,其中Base DN:“ou=Employee , dc=jsoso , dc=net”,RDN:“shineuserid=linly”下面是一個LDAP服務(wù)器的數(shù)據(jù)結(jié)構(gòu)圖: 3. 從協(xié)議衍化上闡述LDAP,它是“目錄訪問協(xié)議DAPISO X.500”的衍生,簡化了DAP協(xié)

3、議,提供了輕量級的基于TCP/IP協(xié)議的網(wǎng)絡(luò)訪問,降低了管理維護(hù)成本,但保持了強(qiáng)壯且易于擴(kuò)充的信息框架。LDAP的應(yīng)用程序可以很輕松的新增、修改、查詢和刪除目錄內(nèi)容信息。 LDAP目錄條目(Directory Entry)簡述 從Object Classes談起 在LDAP目錄數(shù)據(jù)庫中,所有的條目都必須定義objectClass這個屬性。這有點(diǎn)像Java語言里說闡述的“一切皆對象”的理念,每個條目(LDAP Entry)都要定義自己的Object Classes。Object Class可以看作是LDAP Entry的模板,它定義了條目的屬性集,包括必有屬性(requited attribut

4、e)和可選屬性(option attribute)。這里要著重指出的是,在LDAP的Entry中是不能像關(guān)系數(shù)據(jù)庫的表那樣隨意添加屬性字段的,一個Entry的屬性是由它所繼承的所有Object Classes的屬性集合決定的,此外可以包括LDAP中規(guī)定的“操作屬性”(操作屬性是一種獨(dú)立于Object Class而存在的屬性,它可以賦給目錄中的任意條目)。如果你想添加的屬性不在Object Classes定義屬性的范疇,也不是LDAP規(guī)定的操作屬性,那么是不能直接綁定(在LDAP中,給Entry賦予屬性的過程稱為綁定)到條目上的,你必須自定義一個含有你需要的屬性的Object Class,而后將

5、此類型賦給條目。 Object Class是可以被繼承的,這使它看上去真的很像Java語言中的POJO對象。繼承類的對象實(shí)例也必須實(shí)現(xiàn)父 類規(guī)定的必有屬性(requited attribute),同時擁有父類規(guī)定的可選屬性(option attribute)。繼承類可以擴(kuò)展父類的必有屬性和可選屬性。由于Object Class的繼承特性,因此在一個LDAP Entry上,objectClass屬性是一個多值屬性,它涵蓋了Object Class的完整繼承樹,如用戶條目uid=Linly , ou=People, dc=jsoso , dc=net,它直接實(shí)現(xiàn)了inetorgperson這個對象

6、類,那么它的objectClass屬性值為inetorgperson,organizationalPerson,person,top。 從Object Classes到Directory Server Schema 上一章節(jié)中,我們了解了LDAP條目都要遵守的一個最重要的規(guī)定Object Classes,而實(shí)際上,對Entry更多更細(xì)的規(guī)范被涵蓋在了Directory Server Schema(目錄服務(wù)模式)中。Directory Schema聲明了完整的LDAP數(shù)據(jù)的存儲規(guī)范,這包括數(shù)據(jù)的字節(jié)大小、數(shù)值范圍和格式定義。 默認(rèn)的,在一個LDAP服務(wù)器上,都定義有一套標(biāo)準(zhǔn)的Schema和一套為

7、服務(wù)器功能定制的Schema。用戶在需要的時候,是可以定制自己的LDAP屬性和Object Class,以擴(kuò)展標(biāo)準(zhǔn)Schema的功能。在Sun Directory Server中,使用了標(biāo)準(zhǔn)LDAPv3 Schema,并在此基礎(chǔ)上做了輕微的擴(kuò)展。 在Schema中的標(biāo)準(zhǔn)屬性(Standard Attributes)是一個鍵-值對,如:cn:linly ,屬性ID(屬性名)為cn,屬性值為linly 。事實(shí)上,一個完整的條目就是由一系列的鍵-值對組成的。以下是一個完整的LDAP Entry: 引用dn: uid=Linly,ou=People, dc=jsoso,dc=net telephone

8、Number:mail: linliangyi2005gmailaaa objectClass: top objectClass: person objectClass: organizationalPerson objectClass: inetorgperson cn: LinLiangyi userPassword: SSHAaPTgP47LeziVGqjPBI8343FwkcL3QgQQ9kirXw= creatorsName: uid=admin,ou=administrators,ou=topologymanagement,o=netscaperoot c

9、reateTimestamp: 20080219070003Z nsUniqueId: 2deb0d01-deb811dc-8055dc88-5f880db9 nsRoleDN: cn=MyAdminRole,ou=People,dc=jsoso,dc=net nsRoleDN: cn=secondRole,ou=People,dc=jsoso,dc=net cn;phonetic;lang-zh: IA= preferredLanguage: zh-CN cn;lang-zh: 5p6X6Imv55uKICA= givenName: liangyi givenName;lang-zh: 6I

10、mv55uK sn: lin sn;lang-zh: 5p6X uid: linly manager: cosTemplateForPostalCode modifiersName: uid=admin,ou=administrators,ou=topologymanagement,o=netscaperoot modifyTimestamp: 20080227083015Z在Schema中,對屬性的定義包含以下內(nèi)容: · 一個唯一的屬性名稱ü · 一個屬性的OID(object  identifier)ü · 一段屬性的文本描述信息

11、ü · 一個關(guān)聯(lián)屬性文法定義的OIDü · 屬性的單值/多值描述;屬性是否是目錄自有的;屬性的由來;附加的一些匹配規(guī)則ü 此外Schema中最重要的部分就是我們上面提到的Object Classes,它實(shí)際上是預(yù)定義的一套捆綁成套的屬性集合。在Schema定義中,Object Classes要包含以下內(nèi)容: · 一個唯一的名字ü · 一個object identifier (OID) 定義Object Classü · 一個必有的屬性集合ü · 一個可選的屬性集合ü

12、 高級LDAP條目 在目錄服務(wù)中,信息是以條目的形式被分層次的組織在一起的。LDAP提供了幾種分組機(jī)制,使得信息管理更富有彈性。 靜態(tài)組和動態(tài)組(Static Group and Dynamic Group) 組(Group),聲明一個目錄條目的集合 靜態(tài)組(Static Group):顯式聲明了一個它的集合成員,這種方式適用于少量明確的成員組合。 動態(tài)組(Dynamic Group):它定義了一個過濾條件,所有匹配條件的條目都是組的成員。所以稱之為動態(tài)組,是因?yàn)槊看巫x取其組員名單時,要動態(tài)計算過濾條件。 使用組的優(yōu)點(diǎn)是能夠快速的查找所屬的成員;缺點(diǎn)是,給出任意的成員,無法獲知它所屬的組。因此

13、從數(shù)據(jù)關(guān)聯(lián)關(guān)系上看,Group適合一對多的查詢。 受管角色、過濾器角色和嵌套角色(Managed Role、Filtered Role and Nested Role) 角色(Role),它是條目的另一種集合形式。它與組不同的在于,給定一個任意的成員條目,我們能立刻獲知它所屬的角色。因此從數(shù)據(jù)關(guān)聯(lián)關(guān)系上看,Role適合多對一的查詢。角色定義僅對它們的父節(jié)點(diǎn)子樹下面的目錄條目有效。 受管角色(Managed Role),它等價于Group中的靜態(tài)組,不同的是,Role不是把組員信息添加到自身屬性中,而是將自身的DN添加到組員條目的nsroledn屬性中。 過濾器角色(Filtered Role)

14、,它與動態(tài)組相似,通過定義條目過濾器來確定組員。 嵌套角色(Nested Role),它是對角色定義的一種嵌套形式。可以嵌套其他的嵌套角色的。嵌套角色的成員,是其包含的所有角色成員的合集。嵌套角色通過包含從屬于其它子樹下的角色,可以擴(kuò)展其搜索的scope。 服務(wù)類CoS 服務(wù)類實(shí)際上是一種屬性的共享機(jī)制,它無須定義條目間的關(guān)聯(lián)關(guān)系,卻可以做到數(shù)據(jù)同步和空間優(yōu)化。例如,在一個公司目錄下,擁有上千個員工,他們擁有相同的公司位置屬性;在傳統(tǒng)的條目中,位置屬性分別存貯在員工條目里,這樣不但浪費(fèi)存儲空間,一旦位置變更,則要對員工條目進(jìn)行逐一修改。采用CoS機(jī)制后,公司位置屬性被存放在一個對象內(nèi),員工條目

15、通過引用這個對象來獲得位置信息,從而縮小的存儲空間損耗,并方便了信息的修改。 CoS僅對其父節(jié)點(diǎn)子樹下面的目錄條目有效。CoS機(jī)制包含兩個部分,CoS 定義條目和CoS模板條目。定義條目描述了屬性是如何被引用的;模板條目描述了屬性的值。CoS機(jī)制包含3種類型: 指針服務(wù)類(Pointer CoS), 在Pointer CoS中,CoS包含一個定義Definition Entry,它指定了兩個屬性:1.共享屬性的名稱;2.提供共享數(shù)據(jù)的模板DN。 另外CoS還要有一個Template Entry,它要提供共享的數(shù)據(jù)。 在定義了Definition Entry和Template Entry后,Po

16、inter CoS將為其父節(jié)點(diǎn)子樹下面的所有條目(目標(biāo)條目Target Entry)分配共享屬性和模板所定義的值。示意圖如下: Definition Entry:cn=PointerCoS , dc=example , dc=² com定義了CoS的共享屬性cosAttribute:postalCode,同時定義了CoS的模板DN cosTemplateDN:cn=cosTemplateForPostalCode,cn=data。 Template Entry:² 它是CoS的模板,定義了共享屬性值 postalCode:45773。 Target Entry:它是目標(biāo)條目

17、,因?yàn)樗挥赿c=example ,² dc=com的子樹下。所以它獲得了共享屬性postalCode:45773。 間接服務(wù)類(Indirect CoS), 在使用間接服務(wù)類時,在Definition Entry條目中定義了CoS的共享屬性cosAttribut和一個用來間接指向模板的屬性cosIndirectSpecifier。 首先,我們需要用cosIndirectSpecifier的值A(chǔ)作為屬性名,來檢索CoS父節(jié)點(diǎn)子樹中所有擁有A屬性的條目,作為目標(biāo)條目Target Entry。 其次,根據(jù)找到的Target Entry條目中A屬性的值來定位模板對象。 最后,再分別根據(jù)找到

18、的模板對象中擁有的共享屬性值賦給對應(yīng)的Target Entry。 例如,定義如下Definition Entry 引用dn: cn=generateDeptNum,ou=People,dc=example,dc=com objectclass: top objectclass: LDAPsubentry objectclass: cosSuperDefinition objectclass: cosIndirectDefinition cosIndirectSpecifier: manager cosAttribute: departmentNumber該CoS定義對條目ou=People,d

19、c=example,dc=com下的子樹中所有具有manager屬性的 條目有效,同時設(shè)定其CoS模板指向manager屬性的值所指向的條目。 又假定有如下的Template Entry條目,它具有屬性departmentNumber: 引用dn: cn=Carla Fuentes,ou=People,dc=example,dc=com objectclass: cosTemplate departmentNumber: 318842同時在ou=People,dc=example,dc=com下有Target Entry如下: 引用dn: cn=Babs Jensen,ou=People,dc

20、=example,dc=com cn: Babs Jensen . manager: cn=Carla Fuentes,ou=People,dc=example,dc=com departmentNumber: 318842 因?yàn)樵揈ntry具有manager屬性,且在ou=People,dc=example,dc=com子樹下,所以它成為了Target Entity。并且由于其manager的值指向模板cn=Carla Fuentes,ou=People,dc=example,dc=com,因此,它的departmentNumber為 318842。 經(jīng)典服務(wù)類(Classic CoS) 經(jīng)

21、典服務(wù)類同間接服務(wù)類有點(diǎn)相似,它也是對屬性的間接應(yīng)用。在Classic CoS的定義條目中,除了共享屬性定義外,還有兩個定義,一個是cosTemplateDn,它指向模板條目的父節(jié)點(diǎn);另一個是cosSpecifier,它的值指向目標(biāo)條目的屬性A。由目標(biāo)條目的屬性A的值來代替模板條目的RND。則目標(biāo)條目的屬性A的值加上cosTemplateDn的值恰好定義一個唯一的模板條目。 舉例如下,首先是一個經(jīng)典服務(wù)類的定義條目: 引用dn: cn=classicCoS,dc=example,dc=com objectclass: top objectclass: LDAPsubentry objectcl

22、ass: cosSuperDefinition objectclass: cosClassicDefinition cosTemplateDn: ou=People,dc=example,dc=com cosSpecifier: building cosAttribute: postalAddress該定義條目指明了3個參數(shù), 1 要共享的屬性是postalAddress 2 模板條目的上下文前綴是ou=People,dc=example,dc=com 3 模板條目的RDN存儲于目標(biāo)條目的building屬性中 其次,假定有如下模板條目: 引用dn: cn=B07,ou=People,dc=e

23、xample,dc=com objectclass: top objectclass: LDAPsubentry objectclass: extensibleobject objectclass: cosTemplate postalAddres: 7 Old Oak Street$Anytown, CA 95054最后,我們假設(shè)有以下目標(biāo)條目: 引用dn: cn=Babs Jensen,ou=People,dc=example,dc=com cn: Babs Jensen . building: B07 postalAddres: 7 Old Oak Street$Anytown, CA

24、95054由于目標(biāo)條目中,building屬性的值是B07,因此該條目的模板定義DN = B07加上ou=People,dc=example,dc=com ,即cn=B07,ou=People,dc=example,dc=com,因此目標(biāo)條目的postalAddres 引用模板的值7 Old Oak Street$Anytown, CA 95054。 LDAP 目錄搜索 LDAP搜索是目錄服務(wù)最常用的功能之一。在LDAP服務(wù)中搜索要用到相應(yīng)的Filter語句。Filter語句由3個部分組成: 1 屬性,如:cn ,uid ,操作屬性如:objectClass  ,  nsr

25、oledn 2 比較操作符 ,如 < , > ,= , 3 邏輯預(yù)算符,如: 與操作&  , 或操作| , 非操作! 關(guān)于Filter語句組成的詳細(xì)參數(shù)表如下: filter的運(yùn)算符 filter布爾運(yùn)算符 搜索過濾器示例 · 下列過濾器將搜索包含一個或多個 manager 屬性值的條目。這也稱為存在搜索:manager=* · 下列過濾器將搜索包含通用名 Ray Kultgen 的條目。這也稱為等價搜索:cn=Ray Kultgen · 下列過濾器返回所有不包含通用名 Ray Kultgen 的條目:(!(cn=Ray Kultge

26、n) · 下列過濾器返回的所有條目中都有包含子字符串 X.500 的說明屬性:description=*X.500* · 下列過濾器返回所有組織單元為 Marketing 且說明字段中不包含子字符串 X.500 的條目:(&(ou=Marketing)(!(description=*X.500*) · 下列過濾器返回所有組織單元為 Marketing 且 manager 為 Julie Fulmer 或 Cindy Zwaska 的條目:(&(ou=Marketing)(|(manager=cn=Julie Fulmer,ou=Marketing,

27、dc=siroe,dc=com)(manager=cn=Cindy Zwaska,ou=Marketing,dc=siroe,dc=com) · 下列過濾器返回所有不代表人員的條目:(!(objectClass=person) · 下列過濾器返回所有不代表人員且通用名近似于 printer3b 的條目:(&(!(objectClass=person)(cn=printer3b) ldapsearch指令參數(shù)-b 搜索的起始上下文 · -D 綁定搜索的賬號Distinguished Name · -h 主機(jī)名。位置 · -p LDAP服務(wù)

28、端口 · -l 搜索的最大耗時 · -s 從上下文開始的搜索范圍,有三個常量base(表示僅當(dāng)前根對象)/one(當(dāng)前根對象及下一級)/sub(當(dāng)前根對象的全部子樹) · -W 綁定賬號密碼 · -z 返回結(jié)果的最大數(shù)量 搜索“操作屬性” 在LDAP搜索中,操作屬性在默認(rèn)情況下是不會跟隨搜索結(jié)果返回的。必須在搜索中明確顯示的指定操作屬性,如: 引用ldapsearch -h -p 5201 -D "cn=directory manager" -w password "objectclass=*" aci=accou

29、nts。搜索“操作對象類”的條目 在LDAP中Role、CoS等對象被定義為特殊的Object Class操作對象類(operational object class),在一般的搜索中,這類對象是不會作為結(jié)果返回給用戶的。要想查找這些對象,必須在filter中顯式定義要找這個對象類。例如:(objectclass=ldapsubentry)。 ACI權(quán)限控制 ACI(Access Control Instruction)訪問控制指令是LDAP 服務(wù)中用以控制用戶訪問權(quán)限的有力手段。在目錄的Entry中,aci屬性記錄了對該條目的多條訪問控制指令。(aci屬性是一個多值操作屬性,可以賦予任意的L

30、DAP條目) ACI的語法格式如下:aci: (target)(version 3.0;acl "name"permission bind_rules;) ² target 指定了ACI要控制訪問的目標(biāo)屬性(集合)或條目(集合)。target可以用DN,一個或多個屬性,或者一個filter來定義。它是一個可選項(xiàng)。 target語法是:關(guān)鍵字 <op> 表達(dá)式 target關(guān)鍵字表 (更多詳細(xì)的target用法,請參閱 Sun ONE Directory Server 5.2 Administration Guide ) version 3.0 這是一個

31、必須的常量字竄,用以識別ACI的版本。 name 指定ACI的名稱,可以使任意的字竄,只要區(qū)別于同一個條目aci屬性下的其他ACI,這是一個必須屬性。 permission 指定權(quán)限許可。 權(quán)限包括:read、write、add、delete、search、compare、selfwrite、 proxy 或 all,其中all表示出了proxy之外的所有操作。 權(quán)限語法:allow | deny (權(quán)限) bind_rules 綁定規(guī)則。綁定規(guī)則定義了何人、何時,以及從何處可以訪問目錄。綁定規(guī)則可以是如下規(guī)則之一: · 被授予訪問權(quán)限的用戶、組以及角色 · 實(shí)體必須從中綁

32、定的位置 · 綁定必須發(fā)生的時間或日期 · 綁定期間必須使用的驗(yàn)證類型 綁定規(guī)則語法:keyword  = 或者 != "expression" (注:timeofday 關(guān)鍵字也支持不等式<、<=、>、>=)。 LDIF 綁定規(guī)則關(guān)鍵字表 (更多詳細(xì)的綁定規(guī)則用法,請參閱 Sun ONE Directory Server 5.2 Administration Guide ) ACI樣例 · 1.用戶 bjensen 具有修改其自己的目錄條目中所有屬性的權(quán)限。 aci:(target="ldap:/uid=bjensen,dc=example,dc=com")(targetattr=*)(version 3.0; acl "aci1" allow (write) userdn="ldap:/self") · 2.允許 Engineering Admins 組的成員修改 Eng

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論