亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

LDAP協議介紹

系統 1719 0
LDAP協議基礎概念 ?

1. 從用途上闡述LDAP,它是一個存儲靜態相關信息的服務,適合“一次記錄多次讀取”。經常使用LDAP服務存儲的信息:?
  • 公司的物理設備信息(如打印機,它的IP地址、存放位置、廠商、購買時間等)
  • ? 公開的員工信息(地址、電話、電子郵件…)
  • ? 合同和賬號信息(客戶信息、產品交付日期、投標信息、項目信息…)
  • ? 憑證信息(認證憑證、許可證憑證…)

2. 從數據結構上闡述LDAP,它是一個樹型結構,能有效明白的描寫敘述一個組織結構特性的相關信息。在這個樹型結構上的每一個節點,我們稱之為“條目(Entry)”,每一個條目有自己的唯一可差別的名稱(Distinguished Name ,DN)。條目的DN是由條目所在樹型結構中的父節點位置(Base DN)和該條目的某個可用來差別身份的屬性(稱之為RDN如uid , cn)組合而成。對Full DN :“shineuserid=linly , ou=Employee , dc=jsoso , dc=net”而言,當中Base DN:“ou=Employee , dc=jsoso , dc=net”,RDN:“shineuserid=linly”以下是一個LDAPserver的數據結構圖:?
LDAP協議介紹 ?
3. 從協議衍化上闡述LDAP,它是“文件夾訪問協議DAP——ISO X.500”的衍生,簡化了DAP協議,提供了輕量級的基于TCP/IP協議的網絡訪問,減少了管理維護成本,但保持了強壯且易于擴充的信息框架。LDAP的應用程序能夠非常輕松的新增、改動、查詢和刪除文件夾內容信息。?

LDAP文件夾條目(Directory Entry)簡述 ?
從Object Classes談起 ?
在LDAP文件夾數據庫中,全部的條目都必須定義objectClass這個屬性。這有點像Java語言里說闡述的“一切皆對象”的理念,每一個條目(LDAP Entry)都要定義自己的Object Classes。Object Class能夠看作是LDAP Entry的模板,它定義了條目的屬性集,包含必有屬性(requited attribute)和可選屬性(option attribute)。這里要著重指出的是,在LDAP的Entry中是不能像關系數據庫的表那樣隨意加入屬性字段的,一個Entry的屬性是由它所繼承的全部Object Classes的屬性集合決定的,此外能夠包含LDAP中規定的“操作屬性”(操作屬性是一種獨立于Object Class而存在的屬性,它能夠賦給文件夾中的隨意條目)。假設你想加入的屬性不在Object Classes定義屬性的范疇,也不是LDAP規定的操作屬性,那么是不能直接綁定(在LDAP中,給Entry賦予屬性的過程稱為綁定)到條目上的,你必須自己定義一個含有你須要的屬性的Object Class,而后將此類型賦給條目。?
Object Class是能夠被繼承的,這使它看上去真的非常像Java語言中的POJO對象。繼承類的對象實例也必須實現父?
類規定的必有屬性(requited attribute),同一時候擁有父類規定的可選屬性(option attribute)。繼承類能夠擴展父類的必有屬性和可選屬性。因為Object Class的繼承特性,因此在一個LDAP Entry上,objectClass屬性是一個多值屬性,它涵蓋了Object Class的完整繼承樹,如用戶條目uid=Linly , ou=People, dc=jsoso , dc=net,它直接實現了inetorgperson這個對象類,那么它的objectClass屬性值為inetorgperson,organizationalPerson,person,top。?

從Object Classes到Directory Server Schema ?
上一章節中,我們了解了LDAP條目都要遵守的一個最重要的規定Object Classes,而實際上,對Entry很多其它更細的規范被涵蓋在了Directory Server Schema(文件夾服務模式)中。Directory Schema聲明了完整的LDAP數據的存儲規范,這包含數據的字節大小、數值范圍和格式定義。?
默認的,在一個LDAPserver上,都定義有一套標準的Schema和一套為server功能定制的Schema。用戶在須要的時候,是能夠定制自己的LDAP屬性和Object Class,以擴展標準Schema的功能。在Sun Directory Server中,使用了標準LDAPv3 Schema,并在此基礎上做了輕微的擴展。?

在Schema中的標準屬性(Standard Attributes)是一個鍵-值對,如:cn:linly ,屬性ID(屬性名)為cn,屬性值為linly 。其實,一個完整的條目就是由一系列的鍵-值對組成的。下面是一個完整的LDAP Entry:?
引用
dn: uid=Linly,ou=People, dc=jsoso,dc=net?
telephoneNumber: 13950491407?
mail: linliangyi2005@gmail.com?
objectClass: top?
objectClass: person?
objectClass: organizationalPerson?
objectClass: inetorgperson?
cn: LinLiangyi?
userPassword: {SSHA}aPTgP47LeziVGqjPBI8343FwkcL3QgQQ9kirXw==?
creatorsName: uid=admin,ou=administrators,ou=topologymanagement,o=netscaperoot?
createTimestamp: 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:: 6Imv55uK?
sn: lin?
sn;lang-zh:: 5p6X?
uid: linly?
manager: cosTemplateForPostalCode?
modifiersName: uid=admin,ou=administrators,ou=topologymanagement,o=netscaperoot?
modifyTimestamp: 20080227083015Z


在Schema中,對屬性的定義包括下面內容:?
  • ? 一個唯一的屬性名稱
  • ? 一個屬性的OID(object? identifier)
  • ? 一段屬性的文本描寫敘述信息
  • ? 一個關聯屬性文法定義的OID
  • ? 屬性的單值/多值描寫敘述;屬性是否是文件夾自有的;屬性的由來;附加的一些匹配規則


此外Schema中最重要的部分就是我們上面提到的Object Classes,它實際上是提前定義的一套捆綁成套的屬性集合。在Schema定義中,Object Classes要包括下面內容:?
  • ? 一個唯一的名字
  • ? 一個object identifier (OID) 定義Object Class
  • ? 一個必有的屬性集合
  • ? 一個可選的屬性集合


高級LDAP條目 ?
在文件夾服務中,信息是以條目的形式被分層次的組織在一起的。LDAP提供了幾種分組機制,使得信息管理更富有彈性。?

靜態組和動態組(Static Group and Dynamic Group) ?
組(Group) ,聲明一個文件夾條目的集合?
靜態組(Static Group): 顯式聲明了一個它的集合成員,這樣的方式適用于少量明白的成員組合。?
動態組(Dynamic Group) :它定義了一個過濾條件,全部匹配條件的條目都是組的成員。所以稱之為動態組,是由于每次讀取其組員名單時,要動態計算過濾條件。?
使用組的長處是可以高速的查找所屬的成員;缺點是,給出隨意的成員,無法獲知它所屬的組。因此從數據關聯關系上看,Group適合一對多的查詢。?

受管角色、過濾器角色和嵌套角色(Managed Role、Filtered Role and Nested Role) ?
角色(Role) ,它是條目的還有一種集合形式。它與組不同的在于,給定一個隨意的成員條目,我們能立馬獲知它所屬的角色。因此從數據關聯關系上看,Role適合多對一的查詢。角色定義僅對它們的父節點子樹以下的文件夾條目有效。?
受管角色(Managed Role) ,它等價于Group中的靜態組,不同的是,Role不是把組員信息加入到自身屬性中,而是將自身的DN加入到組員條目的nsroledn屬性中。?
過濾器角色(Filtered Role) ,它與動態組相似,通過定義條目過濾器來確定組員。?
嵌套角色(Nested Role) ,它是對角色定義的一種嵌套形式。能夠嵌套其他的嵌套角色的。嵌套角色的成員,是其包括的全部角色成員的合集。嵌套角色通過包括從屬于其他子樹下的角色,能夠擴展其搜索的scope。?

服務類CoS ?
服務類實際上是一種屬性的共享機制,它無須定義條目間的關聯關系,卻能夠做到數據同步和空間優化。比如,在一個公司文件夾下,擁有上千個員工,他們擁有同樣的公司地址屬性;在傳統的條目中,地址屬性分別存貯在員工條目里,這樣不但浪費存儲空間,一旦地址變更,則要對員工條目進行逐一改動。採用CoS機制后,公司地址屬性被存放在一個對象內,員工條目通過引用這個對象來獲得地址信息,從而縮小的存儲空間損耗,并方便了信息的改動。?
CoS僅對其父節點子樹以下的文件夾條目有效。CoS機制包括兩個部分,CoS 定義條目和CoS模板條目。定義條目描寫敘述了屬性是怎樣被引用的;模板條目描寫敘述了屬性的值。CoS機制包括3種類型:?
指針服務類(Pointer CoS), ?
在Pointer CoS中,CoS包括一個定義Definition Entry,它指定了兩個屬性:1.共享屬性的名稱;2.提供共享數據的模板DN。 另外CoS還要有一個Template Entry,它要提供共享的數據。?
在定義了Definition Entry和Template Entry后,Pointer CoS將為其父節點子樹以下的全部條目(目標條目Target Entry)分配共享屬性和模板所定義的值。示意圖例如以下:?
LDAP協議介紹 ?
? 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:它是目標條目,由于它位于dc=example , dc=com的子樹下。所以它獲得了共享屬性postalCode:45773。?

間接服務類(Indirect CoS) ,?
在使用間接服務類時,在Definition Entry條目中定義了CoS的共享屬性cosAttribut和一個用來間接指向模板的屬性cosIndirectSpecifier。?
首先,我們須要用cosIndirectSpecifier的值A作為屬性名,來檢索CoS父節點子樹中全部擁有A屬性的條目,作為目標條目Target Entry。?
其次,依據找到的Target Entry條目中A屬性的值來定位模板對象。?
最后,再分別依據找到的模板對象中擁有的共享屬性值賦給相應的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,dc=example,dc=com下的子樹中全部具有manager屬性的 條目有效,同一時候設定其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=example,dc=com?
cn: Babs Jensen?
...?
manager: cn=Carla Fuentes,ou=People,dc=example,dc=com?
departmentNumber: 318842

由于該Entry具有manager屬性,且在ou=People,dc=example,dc=com子樹下,所以它成為了Target Entity。而且由于其manager的值指向模板cn=Carla Fuentes,ou=People,dc=example,dc=com,因此,它的departmentNumber為 318842。?

經典服務類(Classic CoS) ?
經典服務類同間接服務類有點相似,它也是對屬性的間接應用。在Classic CoS的定義條目中,除了共享屬性定義外,還有兩個定義,一個是cosTemplateDn,它指向模板條目的父節點;還有一個是cosSpecifier,它的值指向目標條目的屬性A。由目標條目的屬性A的值來取代模板條目的RND。則目標條目的屬性A的值加上cosTemplateDn的值恰好定義一個唯一的模板條目。?
舉比例如以下,首先是一個經典服務類的定義條目:?
引用
dn: cn=classicCoS,dc=example,dc=com?
objectclass: top?
objectclass: LDAPsubentry?
objectclass: cosSuperDefinition?
objectclass: cosClassicDefinition?
cosTemplateDn: ou=People,dc=example,dc=com?
cosSpecifier: building?
cosAttribute: postalAddress

該定義條目指明了3個參數,?
1. 要共享的屬性是postalAddress?
2. 模板條目的上下文前綴是ou=People,dc=example,dc=com?
3. 模板條目的RDN存儲于目標條目的building屬性中?
其次,假定有例如以下模板條目:?
引用
dn: cn=B07,ou=People,dc=example,dc=com?
objectclass: top?
objectclass: LDAPsubentry?
objectclass: extensibleobject?
objectclass: cosTemplate?
postalAddres: 7 Old Oak Street$Anytown, CA 95054

最后,我們如果有下面目標條目:?
引用
dn: cn=Babs Jensen,ou=People,dc=example,dc=com?
cn: Babs Jensen?
...?
building: B07?
postalAddres: 7 Old Oak Street$Anytown, CA 95054

因為目標條目中,building屬性的值是B07,因此該條目的模板定義DN = B07加上ou=People,dc=example,dc=com ,即cn=B07,ou=People,dc=example,dc=com,因此目標條目的postalAddres 引用模板的值7 Old Oak Street$Anytown, CA 95054。

LDAP 文件夾搜索 ?
LDAP搜索是文件夾服務最經常使用的功能之中的一個。在LDAP服務中搜索要用到對應的Filter語句。Filter語句由3個部分組成:?
1. 屬性,如:cn ,uid ,操作屬性如:objectClass? ,? nsroledn?
2. 比較操作符 ,如 < , > ,= ,…?
3. 邏輯預算符,如: 與操作&? , 或操作| , 非操作!?
關于Filter語句組成的具體參數表例如以下:?
filter的運算符 ?
LDAP協議介紹 ?
filter布爾運算符 ?
LDAP協議介紹 ?

搜索過濾器演示樣例?
  • 下列過濾器將搜索包括一個或多個 manager 屬性值的條目。這也稱為存在搜索:manager=*
  • 下列過濾器將搜索包括通用名 Ray Kultgen 的條目。這也稱為等價搜索:cn=Ray Kultgen
  • 下列過濾器返回全部不包括通用名 Ray Kultgen 的條目:(!(cn=Ray Kultgen))
  • 下列過濾器返回的全部條目中都有包括子字符串 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,dc=siroe,dc=com)(manager=cn=Cindy Zwaska,ou=Marketing,dc=siroe,dc=com)))
  • 下列過濾器返回全部不代表人員的條目:(!(objectClass=person))
  • 下列過濾器返回全部不代表人員且通用名近似于 printer3b 的條目:(&(!(objectClass=person))(cn~=printer3b))


ldapsearch指令參數 -b 搜索的起始上下文?
  • -D 綁定搜索的賬號Distinguished Name
  • -h 主機名。地址
  • -p LDAP服務port
  • -l 搜索的最大耗時
  • -s 從上下文開始的搜索范圍,有三個常量base(表示僅當前根對象)/one(當前根對象及下一級)/sub(當前根對象的所有子樹)
  • -W 綁定賬號password
  • -z 返回結果的最大數量


搜索“操作屬性” ?
在LDAP搜索中,操作屬性在默認情況下是不會尾隨搜索結果返回的。必須在搜索中明白顯示的指定操作屬性,如:?
引用
ldapsearch -h linly.jsoso.net -p 5201 -D "cn=directory manager" -w password "objectclass=*" aci=accounts。


搜索“操作對象類”的條目 ?
在LDAP中Role、CoS等對象被定義為特殊的Object Class——操作對象類(operational object class),在一般的搜索中,這類對象是不會作為結果返回給用戶的。要想查找這些對象,必須在filter中顯式定義要找這個對象類。比如:(objectclass=ldapsubentry)。?

ACI權限控制 ?
ACI(Access Control Instruction)訪問控制指令是LDAP 服務中用以控制用戶訪問權限的有力手段。在文件夾的Entry中,aci屬性記錄了對該條目的多條訪問控制指令。(aci屬性是一個多值操作屬性,能夠賦予隨意的LDAP條目)?
ACI的語法格式例如以下 :aci: (target)(version 3.0;acl "name";permission bind_rules;)?
? target? 指定了ACI要控制訪問的目標屬性(集合)或條目(集合)。target能夠用DN,一個或多個屬性,或者一個filter來定義。它是一個可選項。?
target語法是: keyword <op> 表達式?
targetkeyword表 ?
LDAP協議介紹 ?
(很多其它具體的target使用方法,請參閱 Sun ONE Directory Server 5.2 Administration Guide )?

version 3.0? 這是一個必須的常量字竄,用以識別ACI的版本號。?

name? 指定ACI的名稱,能夠使隨意的字竄,僅僅要差別于同一個條目aci屬性下的其它ACI,這是一個必須屬性。?

permission? 指定權限許可。?
權限包含 :read、write、add、delete、search、compare、selfwrite、 proxy 或 all,當中all表示出了proxy之外的全部操作。?
權限語法 :allow | deny (權限)?

bind_rules? 綁定規則。綁定規則定義了何人、何時,以及從何處能夠訪問文件夾。綁定規則能夠是例如以下規則之中的一個:?
  • ? 被授予訪問權限的用戶、組以及角色
  • ? 實體必須從中綁定的位置
  • ? 綁定必須發生的時間或日期
  • ? 綁定期間必須使用的驗證類型

綁定規則語法 :keyword? = 或者 != "expression"; (注:timeofday keyword也支持不等式<、<=、>、>=)。?
LDIF 綁定規則keyword表 ?
LDAP協議介紹 ?

(很多其它具體的綁定規則使用方法,請參閱 Sun ONE Directory Server 5.2 Administration Guide )?

ACI例子 ?
  • 1.用戶 bjensen 具有改動其自己的文件夾條目中全部屬性的權限。aci:(target="ldap:///uid=bjensen,dc=example,dc=com")(targetattr=*)(version 3.0; acl "aci1"; allow (write) userdn="ldap:///self";)
  • 2.同意 Engineering Admins 組的成員改動 Engineering 業務類別中全部條目的 departmentNumber 和 manager 屬性aci:(targetattr="departmentNumber || manager")(targetfilter="(businessCategory=Engineering)") (version 3.0; acl "eng-admins-write"; allow (write) groupdn ="ldap:///cn=Engineering Admins, dc=example,dc=com";)
  • 3.同意匿名用戶對o=NetscapeRoot下的條目讀取和搜索aci:(targetattr="*")(targetfilter=(o=NetscapeRoot))(version 3.0; acl "Default anonymous access"; allow (read, search) userdn="ldap:///anyone";)
  • 4.向全部經過驗證的用戶授予對整個樹的讀取訪問,能夠在dc=example,dc=com 節點創建下列 ACI:aci:(version 3.0; acl "all-read"; allow (read)userdn="ldap:///all";)
  • 5.同意對整個 example.com 樹進行匿名讀取和搜索訪問,能夠在dc=example,dc=com 節點創建下列 ACI:aci:(version 3.0; acl "anonymous-read-search";allow (read, search) userdn = "ldap:///anyone";)
  • 授予Administrators 組對整個文件夾樹寫入的權限,則能夠在 dc=example,dc=com 節點創建下列 ACI:aci:(version 3.0; acl "Administrators-write"; allow (write) groupdn="ldap:///cn=Administrators,dc=example,dc=com";)?

LDAP協議介紹


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 欧美日韩精品一区二区在线线 | 欧美大狠狠大臿蕉香蕉大视频 | 97在线免费视频观看 | 日韩一区二区三区不卡视频 | 九九性视频 | 爱唯侦察1024入口地址 | 99re6这里只有精品视频 | 久久久在线视频精品免费观看 | 色综合婷婷在线 | 亚洲国产精品一区二区久 | 日韩成人一级 | 手机看片日韩日韩国产在线看 | 亚洲资源站资源网在线 | 日韩在线看片中文字幕不卡 | 亚洲视频大全 | 亚洲免费视频网址 | 精品一区二区三区色花堂 | 亚洲欧洲中文字幕 | 青青青青久久精品国产h | 国产国拍亚洲精品午夜不卡17 | 国产精品嫩草研究所永久网址 | 精品在线99 | 97影院3 | 免看一级a毛片一片成人不卡 | 九九视频只有精品六 | 91视频网| 久草性视频 | 色偷偷久久 | 日本亚洲a | 久久频精品99香蕉国产 | 波多野吉衣一区二区三区在线观看 | 国产精片 | 亚洲欧美在线一区 | 日韩中文字幕精品 | 成人公开视频 | 国产精品香蕉在线观看不卡 | 久久社区视频 | 精品资源在线 | 四虎永久在线精品影院 | 成人黄色在线免费观看 | 国产老年人性视频 |