如果需要開發(fā)一種提供公共信息查詢的系統(tǒng)一般的設(shè)計方法可能是采用基于WEB的數(shù)據(jù)庫設(shè)計方式,即前端使用瀏覽器而后端使用WEB服務(wù)器加上關(guān)系數(shù)據(jù)庫。后端在Windows的典型實現(xiàn)可能是Windows NT + IIS + Acess數(shù)據(jù)庫或者是SQL SERVER,IIS和數(shù)據(jù)庫之間通過ASP技術(shù)使用ODBC進(jìn)行連接,達(dá)到通過填寫表單查詢數(shù)據(jù)的功能;
后端在Linux系統(tǒng)的典型實現(xiàn)可能是Linux+ Apache + postgresql,Apache和數(shù)據(jù)庫之間通過PHP3提供的函數(shù)進(jìn)行連接。使用上述方法的缺點是后端關(guān)系數(shù)據(jù)庫的引入導(dǎo)致系統(tǒng)整體的性能降低和系統(tǒng)的管理比較繁瑣,因為需要不斷的進(jìn)行數(shù)據(jù)類型的驗證和事務(wù)的完整性的確認(rèn);并且前端用戶對數(shù)據(jù)的控制不夠靈活,用戶權(quán)限的設(shè)置一般只能是設(shè)置在表一級而不是設(shè)置在記錄一級。
目錄服務(wù)的推出主要是解決上述數(shù)據(jù)庫中存在的問題。目錄與關(guān)系數(shù)據(jù)庫相似,是指具有描述性的基于屬性的記錄集合,但它的數(shù)據(jù)類型主要是字符型,為了檢索的需要添加了BIN(二進(jìn)制數(shù)據(jù))、CIS(忽略大小寫)、CES(大小寫敏感)、TEL(電話型)等語法(Syntax),而不是關(guān)系數(shù)據(jù)庫提供的整數(shù)、浮點數(shù)、日期、貨幣等類型,同樣也不提供象關(guān)系數(shù)據(jù)庫中普遍包含的大量的函數(shù),它主要面向數(shù)據(jù)的查詢服務(wù)(查詢和修改操作比一般是大于10:1),不提供事務(wù)的回滾(rollback)機制,它的數(shù)據(jù)修改使用簡單的鎖定機制實現(xiàn)All-or-Nothing,它的目標(biāo)是快速響應(yīng)和大容量查詢并且提供多目錄服務(wù)器的信息復(fù)制功能。
現(xiàn)在該說說LDAP目錄到底有些什么優(yōu)勢了。現(xiàn)在LDAP的流行是很多因素共同作用的結(jié)果。可能LDAP最大的優(yōu)勢是:可以在任何計算機平臺上,用很容易獲得的而且數(shù)目不斷增加的LDAP的客戶端程序訪問LDAP目錄。而且也很容易定制應(yīng)用程序為它加上LDAP的支持。
LDAP提供很復(fù)雜的不同層次的訪問控制或者ACI。因這些訪問可以在服務(wù)器端控制,這比用客戶端的軟件保證數(shù)據(jù)的安全可安全多了。
用LDAP的ACI,可以完成:
l 給予用戶改變他們自己的電話號碼和家庭地址的權(quán)限,但是限制他們對其它數(shù)據(jù)(如,職務(wù)名稱,經(jīng)理的登錄名,等等)只有"只讀"權(quán)限。
l 給予"HR-admins"組中的所有人權(quán)限以改變下面這些用戶的信息:經(jīng)理、工作名稱、員工號、部門名稱和部門號。但是對其它域沒有寫權(quán)限。
l 禁止任何人查詢LDAP服務(wù)器上的用戶口令,但是可以允許用戶改變他或她自己的口令。
l 給予經(jīng)理訪問他們上級的家庭電話的只讀權(quán)限,但是禁止其他人有這個權(quán)限。
l 給予"host-admins"組中的任何人創(chuàng)建、刪除和編輯所有保存在LDAP服務(wù)器中的與計算機主機有關(guān)的信息
l 通過Web,允許"foobar-sales"組中的成員有選擇地給予或禁止他們自己讀取一部分客戶聯(lián)系數(shù)據(jù)的讀權(quán)限。這將允許他們把客戶聯(lián)系信息下載到本地的筆記本電腦或個人數(shù)字助理(PDA)上。(如果銷售人員的軟件都支持LDAP,這將非常有用)
l 通過Web,允許組的所有者刪除或添加他們擁有的組的成員。例如:可以允許銷售經(jīng)理給予或禁止銷售人員改變Web頁的權(quán)限。也可以允許郵件假名(mail aliase)的所有者不經(jīng)過IT技術(shù)人員就直接從郵件假名中刪除或添加用戶。"公用"的郵件列表應(yīng)該允許用戶從郵件假名中添加或刪除自己(但是只能是自己)。也可以對IP地址或主機名加以限制。例如,某些域只允許用戶IP地址以192.168.200.*開頭的有讀的權(quán)限,或者用戶反向查找DNS得到的主機名必須為*.foobar.com。
LDAP允許你根據(jù)需要使用ACI(一般都稱為ACL或者訪問控制列表)控制對數(shù)據(jù)讀和寫的權(quán)限。例如,設(shè)備管理員可以有權(quán)改變員工的工作地點和辦公室號碼,但是不允許改變記錄中其它的域。ACI可以根據(jù)誰訪問數(shù)據(jù)、訪問什么數(shù)據(jù)、數(shù)據(jù)存在什么地方以及其它對數(shù)據(jù)進(jìn)行訪問控制。因為這些都是由LDAP目錄服務(wù)器完成的,所以不用擔(dān)心在客戶端的應(yīng)用程序上是否要進(jìn)行安全檢查。
LDAP(Lightweight Directory Access Protocol)是目錄服務(wù)在TCP/IP上的實現(xiàn)(RFC 1777 V2版和RFC 2251 V3版)。它是對X500的目錄協(xié)議的移植,但是簡化了實現(xiàn)方法,所以稱為輕量級的目錄服務(wù)。在LDAP中目錄是按照樹型結(jié)構(gòu)組織,目錄由條目(Entry)組成,條目相當(dāng)于關(guān)系數(shù)據(jù)庫中表的記錄;條目是具有區(qū)別名DN(Distinguished Name)的屬性(Attribute)集合,DN相當(dāng)于關(guān)系數(shù)據(jù)庫表中的主鍵(Primary Key);屬性由類型(Type)和多個值(Values)組成,相當(dāng)于關(guān)系數(shù)據(jù)庫中的域(Field)由域名和數(shù)據(jù)類型組成,只是為了方便檢索的需要,LDAP中的Type可以有多個Value,而不是關(guān)系數(shù)據(jù)庫中為降低數(shù)據(jù)的冗余性要求實現(xiàn)的各個域必須是不相關(guān)的。LDAP中條目的組織一般按照地理位置和組織關(guān)系進(jìn)行組織,非常的直觀。LDAP把數(shù)據(jù)存放在文件中,為提高效率可以使用基于索引的文件數(shù)據(jù)庫,而不是關(guān)系數(shù)據(jù)庫。LDAP協(xié)議集還規(guī)定了DN的命名方法、存取控制方法、搜索格式、復(fù)制方法、URL格式、開發(fā)接口等。
LDAP對于這樣存儲這樣的信息最為有用,也就是數(shù)據(jù)需要從不同的地點讀取,但是不需要經(jīng)常更新。
例如,這些信息存儲在LDAP目錄中是十分有效的:
l 公司員工的電話號碼簿和組織結(jié)構(gòu)圖
l 客戶的聯(lián)系信息
l 計算機管理需要的信息,包括NIS映射、email假名,等等
l軟件包的配置信息
l 公用證書和安全密匙
什么時候該用LDAP存儲數(shù)據(jù)
大多數(shù)的LDAP服務(wù)器都為讀密集型的操作進(jìn)行專門的優(yōu)化。因此,當(dāng)從LDAP服務(wù)器中讀取數(shù)據(jù)的時候會比從專門為OLTP優(yōu)化的關(guān)系型數(shù)據(jù)庫中讀取數(shù)據(jù)快一個數(shù)量級。也是因為專門為讀的性能進(jìn)行優(yōu)化,大多數(shù)的LDAP目錄服務(wù)器并不適合存儲需要經(jīng)常改變的數(shù)據(jù)。例如,用LDAP服務(wù)器來存儲電話號碼是一個很好的選擇,但是它不能作為電子商務(wù)站點的數(shù)據(jù)庫服務(wù)器。
如果下面每一個問題的答案都是"是",那么把數(shù)據(jù)存在LDAP中就是一個好主意。
l 需要在任何平臺上都能讀取數(shù)據(jù)嗎?
l 每一個單獨的記錄項是不是每一天都只有很少的改變?
l 可以把數(shù)據(jù)存在平面數(shù)據(jù)庫(flat database)而不是關(guān)系型數(shù)據(jù)庫中嗎?換句話來說,也就是不管什么范式不范式的,把所有東西都存在一個記錄中(差不多只要滿足第一范式)。
最后一個問題可能會唬住一些人,其實用平面數(shù)據(jù)庫去存儲一些關(guān)系型的數(shù)據(jù)也是很一般的。例如,一條公司員工的記錄就可以包含經(jīng)理的登錄名。用LDAP來存儲這類信息是很方便的。一個簡單的判斷方法:如果可以把數(shù)據(jù)存在一張張的卡片里,就可以很容易地把它存在LDAP目錄里。
LDAP協(xié)議是跨平臺的和標(biāo)準(zhǔn)的協(xié)議,因此應(yīng)用程序就不用為LDAP目錄放在什么樣的服務(wù)器上操心了。實際上,LDAP得到了業(yè)界的廣泛認(rèn)可,因為它是Internet的標(biāo)準(zhǔn)。廠商都很愿意在產(chǎn)品中加入對LDAP的支持,因為他們根本不用考慮另一端(客戶端或服務(wù)端)是怎么樣的。LDAP服務(wù)器可以是任何一個開放源代碼或商用的LDAP目錄服務(wù)器(或者還可能是具有LDAP界面的關(guān)系型數(shù)據(jù)庫),因為可以用同樣的協(xié)議、客戶端連接軟件包和查詢命令與LDAP服務(wù)器進(jìn)行交互。與LDAP不同的是,如果軟件廠商想在軟件產(chǎn)品中集成對DBMS的支持,那么通常都要對每一個數(shù)據(jù)庫服務(wù)器單獨定制。不象很多商用的關(guān)系型數(shù)據(jù)庫,你不必為LDAP的每一個客戶端連接或許可協(xié)議付費。大多數(shù)的LDAP服務(wù)器安裝起來很簡單,也容易維護(hù)和優(yōu)化。
LDAP目錄以樹狀的層次結(jié)構(gòu)來存儲數(shù)據(jù)。如果你對自頂向下的DNS樹或UNIX文件的目錄樹比較熟悉,也就很容易掌握LDAP目錄樹這個概念了。就象DNS的主機名那樣,LDAP目錄記錄的標(biāo)識名(Distinguished Name,簡稱DN)是用來讀取單個記錄,以及回溯到樹的頂部。后面會做詳細(xì)地介紹。
為什么要用層次結(jié)構(gòu)來組織數(shù)據(jù)呢?原因是多方面的。下面是可能遇到的一些情況:
l 如果你想把所有的美國客戶的聯(lián)系信息都"推"到位于到西雅圖辦公室(負(fù)責(zé)營銷)的LDAP服務(wù)器上,但是你不想把公司的資產(chǎn)管理信息"推"到那里。
l 你可能想根據(jù)目錄樹的結(jié)構(gòu)給予不同的員工組不同的權(quán)限。在下面的例子里,資產(chǎn)管理組對"asset-mgmt"部分有完全的訪問權(quán)限,但是不能訪問其它地方。
l 把LDAP存儲和復(fù)制功能結(jié)合起來,可以定制目錄樹的結(jié)構(gòu)以降低對WAN帶寬的要求。位于西雅圖的營銷辦公室需要每分鐘更新的美國銷售狀況的信息,但是歐洲的銷售情況就只要每小時更新一次就行了。
刨根問底:基準(zhǔn)DN
LDAP目錄樹的最頂部就是根,也就是所謂的"基準(zhǔn)DN"?;鶞?zhǔn)DN通常使用下面列出的三種格式之一。假定我在名為FooBar的電子商務(wù)公司工作,這家公司在Internet上的名字是foobar
o="FooBar, Inc.", c=US
(以X.500格式表示的基準(zhǔn)DN)
在這個例子中,o=FooBar, Inc. 表示組織名,在這里就是公司名的同義詞。c=US 表示公司的總部在美國。以前,一般都用這種方式來表示基準(zhǔn)DN。但是事物總是在不斷變化的,現(xiàn)在所有的公司都已經(jīng)(或計劃)上Internet上。隨著Internet的全球化,在基準(zhǔn)DN中使用國家代碼很容易讓人產(chǎn)生混淆?,F(xiàn)在,X.500格式發(fā)展成下面列出的兩種格式。
o=foobar . com
(用公司的Internet地址表示的基準(zhǔn)DN)
這種格式很直觀,用公司的域名作為基準(zhǔn)DN。這也是現(xiàn)在最常用的格式。
dc=foobar, dc=com
(用DNS域名的不同部分組成的基準(zhǔn)DN)
就象上面那一種格式,這種格式也是以DNS域名為基礎(chǔ)的,但是上面那種格式不改變域名(也就更易讀),而這種格式把域名:foobar點com分成兩部分 dc=foobar, dc=com。在理論上,這種格式可能會更靈活一點,但是對于最終用戶來說也更難記憶一點??紤]一下foobar.com這個例子。當(dāng)foobar.com和gizmo.com合并之后,可以簡單的把"dc=com"當(dāng)作基準(zhǔn)DN。把新的記錄放到已經(jīng)存在的dc=gizmo, dc=com目錄下,這樣就簡化了很多工作(當(dāng)然,如果foobar.com和wocket.edu合并,這個方法就不能用了)。如果LDAP服務(wù)器是新安裝的,我建議你使用這種格式。再請注意一下,如果你打算使用活動目錄(Active Directory),Microsoft已經(jīng)限制你必須使用這種格式。
在UNIX文件系統(tǒng)中,最頂層是根目錄(root)。在根目錄的下面有很多的文件和目錄。象上面介紹的那樣,LDAP目錄也是用同樣的方法組織起來的。
在根目錄下,要把數(shù)據(jù)從邏輯上區(qū)分開。因為歷史上(X.500)的原因,大多數(shù)LDAP目錄用OU從邏輯上把數(shù)據(jù)分開來。OU表示"Organization Unit",在X.500協(xié)議中是用來表示公司內(nèi)部的機構(gòu):銷售部、財務(wù)部,等等?,F(xiàn)在LDAP還保留ou=這樣的命名規(guī)則,但是擴(kuò)展了分類的范圍,可以分類為:ou=people, ou=groups, ou=devices,等等。更低一級的OU有時用來做更細(xì)的歸類。例如:LDAP目錄樹(不包括單獨的記錄)可能會是這樣的:
dc=foobar, dc=com
ou=customers
ou=asia
ou=europe
ou=usa
ou=employees
ou=rooms
ou=groups
ou=assets-mgmt
ou=nisgroups
ou=recipes
DN是LDAP記錄項的名字
在LDAP目錄中的所有記錄項都有一個唯一的"Distinguished Name",也就是DN。每一個LDAP記錄項的DN是由兩個部分組成的:相對DN(RDN)和記錄在LDAP目錄中的位置。
RDN是DN中與目錄樹的結(jié)構(gòu)無關(guān)的部分。在LDAP目錄中存儲的記錄項都要有一個名字,這個名字通常存在cn(Common Name)這個屬性里。因為幾乎所有的東西都有一個名字,在LDAP中存儲的對象都用它們的cn值作為RDN的基礎(chǔ)。如果我把最喜歡的吃燕麥粥食譜存為一個記錄,我就會用cn=Oatmeal Deluxe作為記錄項的RDN。
l 我的LDAP目錄的基準(zhǔn)DN是dc=foobar,dc=com
l 我把自己的食譜作為LDAP的記錄項存在ou=recipes
l 我的LDAP記錄項的RDN設(shè)為cn=Oatmeal Deluxe
上面這些構(gòu)成了燕麥粥食譜的LDAP記錄的完整DN。記住,DN的讀法和DNS主機名類似。下面就是完整的DN:
cn=Oatmeal Deluxe,ou=recipes,dc=foobar,dc=com
舉一個實際的例子來說明DN
現(xiàn)在為公司的員工設(shè)置一個DN??梢杂没赾n或uid(User ID),作為典型的用戶帳號。例如,F(xiàn)ooBar的員工Fran Smith(登錄名:fsmith)的DN可以為下面兩種格式:
uid=fsmith,ou=employees,dc=foobar,dc=com
(基于登錄名)
LDAP(以及X.500)用uid表示"User ID",不要把它和UNIX的uid號混淆了。大多數(shù)公司都會給每一個員工唯一的登錄名,因此用這個辦法可以很好地保存員工的信息。你不用擔(dān)心以后還會有一個叫Fran Smith的加入公司,如果Fran改變了她的名字(結(jié)婚?離婚?或宗教原因?),也用不著改變LDAP記錄項的DN。
cn=Fran Smith,ou=employees,dc=foobar,dc=com
(基于姓名)
可以看到這種格式使用了Common Name(CN)??梢园袰ommon Name當(dāng)成一個人的全名。這種格式有一個很明顯的缺點就是:如果名字改變了,LDAP的記錄就要從一個DN轉(zhuǎn)移到另一個DN。但是,我們應(yīng)該盡可能地避免改變一個記錄項的DN。
你可以用LDAP存儲各種類型的數(shù)據(jù)對象,只要這些對象可以用屬性來表示,下面這些是可以在LDAP中存儲的一些信息:
l 員工信息:員工的姓名、登錄名、口令、員工號、他的經(jīng)理的登錄名,郵件服務(wù)器,等等。
l 物品跟蹤信息:計算機名、IP地址、標(biāo)簽、型號、所在位置,等等。
l 客戶聯(lián)系列表:客戶的公司名、主要聯(lián)系人的電話、傳真和電子郵件,等等。
l 會議廳信息:會議廳的名字、位置、可以坐多少人、電話號碼、是否有投影機。
l 食譜信息:菜的名字、配料、烹調(diào)方法以及準(zhǔn)備方法。
因為LDAP目錄可以定制成存儲任何文本或二進(jìn)制數(shù)據(jù),到底存什么要由你自己決定。LDAP目錄用對象類型(object classes)的概念來定義運行哪一類的對象使用什么屬性。在幾乎所有的LDAP服務(wù)器中,你都要根據(jù)自己的需要擴(kuò)展基本的LDAP目錄的功能,創(chuàng)建新的對象類型或者擴(kuò)展現(xiàn)存的對象類型。
LDAP目錄以一系列"屬性對"的形式來存儲記錄項,每一個記錄項包括屬性類型和屬性值(這與關(guān)系型數(shù)據(jù)庫用行和列來存取數(shù)據(jù)有根本的不同)。下面是我存在LDAP目錄中的一部分食譜記錄:
dn: cn=Oatmeal Deluxe, ou=recipes, dc=foobar, dc=com
cn: Instant Oatmeal Deluxe
recipeCuisine: breakfast
recipeIngredient: 1 packet instant oatmeal
recipeIngredient: 1 cup water
recipeIngredient: 1 pinch salt
recipeIngredient: 1 tsp brown sugar
recipeIngredient: 1/4 apple, any type
請注意上面每一種配料都作為屬性recipeIngredient值。LDAP目錄被設(shè)計成象上面那樣為一個屬性保存多個值的,而不是在每一個屬性的后面用逗號把一系列值分開。
因為用這樣的方式存儲數(shù)據(jù),所以數(shù)據(jù)庫就有很大的靈活性,不必為加入一些新的數(shù)據(jù)就重新創(chuàng)建表和索引。更重要的是,LDAP目錄不必花費內(nèi)存或硬盤空間處理"空"域,也就是說,實際上不使用可選擇的域也不會花費你任何資源。
作為例子的一個單獨的數(shù)據(jù)項
讓我們看看下面這個例子。我們用Foobar, Inc.的員工Fran Smith的LDAP記錄。這個記錄項的格式是LDIF,用來導(dǎo)入和導(dǎo)出LDAP目錄的記錄項。
dn: uid=fsmith, ou=employees, dc=foobar, dc=com
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
objectclass: foobarPerson
uid: fsmith
givenname: Fran
sn: Smith
cn: Fran Smith
cn: Frances Smith
telephonenumber: 510-555-1234
roomnumber: 122G
o: Foobar, Inc.
mailRoutingAddress: fsmith@foobar點com
mailhost: mail.foobar點com
userpassword: {crypt}3x1231v76T89N
uidnumber: 1234
gidnumber: 1200
homedirectory: /home/fsmith
loginshell: /usr/local/bin/bash
屬性的值在保存的時候是保留大小寫的,但是在默認(rèn)情況下搜索的時候是不區(qū)分大小寫的。某些特殊的屬性(例如,password)在搜索的時候需要區(qū)分大小寫。
讓我們一點一點地分析上面的記錄項。
dn: uid=fsmith, ou=employees, dc=foobar, dc=com
這是Fran的LDAP記錄項的完整DN,包括在目錄樹中的完整路徑。LDAP(和X.500)使用uid(User ID),不要把它和UNIX的uid號混淆了。
objectclass: person
objectclass: inetOrgPerson
objectclass: foobarPerson
可以為任何一個對象根據(jù)需要分配多個對象類型。person對象類型要求cn(common name)和sn(surname)這兩個域不能為空。person對象類型允許有其它的可選域,包括givenname、telephonenumber,等等。organizational Person給person加入更多的可選域,inetOrgPerson又加入更多的可選域(包括電子郵件信息)。最后,foobarPerson是為Foobar定制的對象類型,加入了很多定制的屬性。
uid: fsmith
givenname: Fran
sn: Smith
cn: Fran Smith
cn: Frances Smith
telephonenumber: 510-555-1234
roomnumber: 122G
o: Foobar, Inc.
以前說過了,uid表示User ID。當(dāng)看到uid的時候,就在腦袋里想一想"login"。
請注意CN有多個值。就象上面介紹的,LDAP允許某些屬性有多個值。為什么允許有多個值呢?假定你在用公司的LDAP服務(wù)器查找Fran的電話號碼。你可能只知道她的名字叫Fran,但是對人力資源處的人來說她的正式名字叫做Frances。因為保存了她的兩個名字,所以用任何一個名字檢索都可以找到Fran的電話號碼、電子郵件和辦公房間號,等等。
mailRoutingAddress: fsmith@foobar點com
mailhost: mail.foobar點com
就象現(xiàn)在大多數(shù)的公司都上網(wǎng)了,F(xiàn)oobar用Sendmail發(fā)送郵件和處理外部郵件路由信息。Foobar把所有用戶的郵件信息都存在LDAP中。最新版本的Sendmail支持這項功能。
Userpassword: {crypt}3x1231v76T89N
uidnumber: 1234
gidnumber: 1200
gecos: Frances Smith
homedirectory: /home/fsmith
loginshell: /usr/local/bin/bash
注意,F(xiàn)oobar的系統(tǒng)管理員把所有用戶的口令映射信息也都存在LDAP中。FoobarPerson類型的對象具有這種能力。再注意一下,用戶口令是用UNIX的口令加密格式存儲的。UNIX的uid在這里為uidnumber。提醒你一下,關(guān)于如何在LDAP中保存NIS信息,有完整的一份RFC。在以后的文章中我會談一談NIS的集成。
LDAP復(fù)制
LDAP服務(wù)器可以使用基于"推"或者"拉"的技術(shù),用簡單或基于安全證書的安全驗證,復(fù)制一部分或者所有的數(shù)據(jù)。
例如,F(xiàn)oobar有一個"公用的"LDAP服務(wù)器,地址為ldap.foobar點com,端口為389。Netscape Communicator的電子郵件查詢功能、UNIX的"ph"命令要用到這個服務(wù)器,用戶也可以在任何地方查詢這個服務(wù)器上的員工和客戶聯(lián)系信息。公司的主LDAP服務(wù)器運行在相同的計算機上,不過端口號是1389。
你可能即不想讓員工查詢資產(chǎn)管理或食譜的信息,又不想讓信息技術(shù)人員看到整個公司的LDAP目錄。為了解決這個問題,F(xiàn)oobar有選擇地把子目錄樹從主LDAP服務(wù)器復(fù)制到"公用"LDAP服務(wù)器上,不復(fù)制需要隱藏的信息。為了保持?jǐn)?shù)據(jù)始終是最新的,主目錄服務(wù)器被設(shè)置成即時"推"同步。這些種方法主要是為了方便,而不是安全,因為如果有權(quán)限的用戶想查詢所有的數(shù)據(jù),可以用另一個LDAP端口。
假定Foobar通過從奧克蘭到歐洲的低帶寬數(shù)據(jù)的連接用LDAP管理客戶聯(lián)系信息。可以建立從ldap.foobar點com:1389到munich-ldap.foobar點com:389的數(shù)據(jù)復(fù)制,象下面這樣:
periodic pull: ou=asia,ou=customers,o=sendmail點com
periodic pull: ou=us,ou=customers,o=sendmail點com
immediate push: ou=europe,ou=customers,o=sendmail點com
"拉"連接每15分鐘同步一次,在上面假定的情況下足夠了。"推"連接保證任何歐洲的聯(lián)系信息發(fā)生了變化就立即被"推"到Munich。
用上面的復(fù)制模式,用戶為了訪問數(shù)據(jù)需要連接到哪一臺服務(wù)器呢?在Munich的用戶可以簡單地連接到本地服務(wù)器。如果他們改變了數(shù)據(jù),本地的LDAP服務(wù)器就會把這些變化傳到主LDAP服務(wù)器。然后,主LDAP服務(wù)器把這些變化"推"回本地的"公用"LDAP服務(wù)器保持?jǐn)?shù)據(jù)的同步。這對本地的用戶有很大的好處,因為所有的查詢(大多數(shù)是讀)都在本地的服務(wù)器上進(jìn)行,速度非??臁.?dāng)需要改變信息的時候,最終用戶不需要重新配置客戶端的軟件,因為LDAP目錄服務(wù)器為他們完成了所有的數(shù)據(jù)交換工作。
LDAP協(xié)議中采用的命名格式, 因為我們需要通過名字信息訪問目錄對象,所以名字格式對于用戶或者應(yīng)用程序非常重要?;顒幽夸浿С执蠖鄶?shù)的名字格式類型。較為常用的格式有以下兩種:
LDAP URL 和X.500
任何一個支持LDAP 的客戶都可以利用LDAP名通過LDAP 協(xié)議訪問活動目錄,LDAP 名不像普通的Internet URL 名字那么直觀,但是LDAP 名往往隱藏在 應(yīng)用系統(tǒng)的內(nèi)部,最終用戶很少直接使用LDAP 名。LDAP 名使用X.500 命名規(guī) 范,也稱為屬性化命名法,包括活動目錄服務(wù)所在的服務(wù)器以及對象的屬性信息。
適用法律、法規(guī) 國家、地方政府現(xiàn)行法律、法規(guī)和規(guī)定。 (1)綜合 專利商及設(shè)備供貨商關(guān)于本裝置(設(shè)備)的標(biāo)準(zhǔn)規(guī)范、安裝指導(dǎo)性文件 工程建設(shè)標(biāo)準(zhǔn)強制性條文-石油和化工建設(shè)工程部分 工程建設(shè)標(biāo)準(zhǔn)強制性條文...
把構(gòu)件塊存盤試一下,然后新建一個工程塊提取。不行的話,就導(dǎo)出圖形文件,保存導(dǎo)出的圖形文件即可。
緩存目錄是系統(tǒng)自動生成的。
1.1. LDAP是什么
1.2. LDAP是電話簿
1.3. LDAP是不是數(shù)據(jù)庫
2. LDAP的特點
2.1. LDAP的優(yōu)勢
2.1.1 跨平臺
2.1.2 費用及維護(hù)
大多數(shù)的LDAP服務(wù)器安裝起來很簡單,也容易維護(hù)和優(yōu)化。
2.1.3 復(fù)制技術(shù)
2.1.4 允許使用ACI
2.2. LDAP存儲什么數(shù)據(jù)
LDAP對于這樣存儲這樣的信息最為有用:也就是數(shù)據(jù)需要從不同的地點讀取,但是不需要經(jīng)常更新。例如,這些信息存儲在LDAP目錄中是十分有效的:
l 公司員工的電話號碼簿和組織結(jié)構(gòu)圖
l 客戶的聯(lián)系信息
l 軟件包的配置信息
l 公用證書和安全密匙
2.3. 什么時候該用LDAP存儲數(shù)據(jù)
如果下面每一個問題的答案都是"是",那么把數(shù)據(jù)存在LDAP中就是一個好主意。
l 需要在任何平臺上都能讀取數(shù)據(jù)嗎?
l 每一個單獨的記錄項是不是每一天都只有很少的改變?
3. LDAP的基本模型
3.1 信息模型:描述LDAP的信息表示方式
在LDAP中信息以樹狀方式組織,在樹狀信息中的基本數(shù)據(jù)單元是條目,而每個條目由屬性構(gòu)成,屬性中存儲有屬性值;LDAP中的信息模式,類似于面向?qū)ο蟮母拍?,在LDAP中每個條目必須屬于某個或多個對象類(Object Class),每個Object Class由多個屬性類型組成,每個屬性類型有所對應(yīng)的語法和匹配規(guī)則;對象類和屬性類型的定義均可以使用繼承的概念。每個條目創(chuàng)建時,必須定義所屬的對象類,必須提供對象類中的必選屬性類型的屬性值,在LDAP中一個屬性類型可以對應(yīng)多個值。
在LDAP中把對象類、屬性類型、語法和匹配規(guī)則統(tǒng)稱為Schema,在LDAP中有許多系統(tǒng)對象類、屬性類型、語法和匹配規(guī)則,這些系統(tǒng)Schema在LDAP標(biāo)準(zhǔn)中進(jìn)行了規(guī)定,同時不同的應(yīng)用領(lǐng)域也定義了自己的Schema,同時用戶在應(yīng)用時,也可以根據(jù)需要自定義Schema。這有些類似于XML,除了XML標(biāo)準(zhǔn)中的XML定義外,每個行業(yè)都有自己標(biāo)準(zhǔn)的DTD或DOM定義,用戶也可以自擴(kuò)展;也如同XML,在LDAP中也鼓勵用戶盡量使用標(biāo)準(zhǔn)的Schema,以增強信息的互聯(lián)互通。
在Schema中最難理解的是匹配規(guī)則,這是LDAP中為了加快查詢的速度,針對不同的數(shù)據(jù)類型,可以提供不同的匹配方法,如針對字符串類型的相等、模糊、大于小于均提供自己的匹配規(guī)則。
3.2 命名模型:描述LDAP中的數(shù)據(jù)如何組織
LDAP中的命名模型,也即LDAP中的條目定位方式。在LDAP中每個條目均有自己的DN和RDN。DN是該條目在整個樹中的唯一名稱標(biāo)識,RDN是條目在父節(jié)點下的唯一名稱標(biāo)識,如同文件系統(tǒng)中,帶路徑的文件名就是DN,文件名就是RDN。
3.3功能模型:描述LDAP中的數(shù)據(jù)操作訪問
在LDAP中共有四類10種操作:查詢類操作,如搜索、比較;更新類操作,如添加條目、刪除條目、修改條目、修改條目名;認(rèn)證類操作,如綁定、解綁定;其它操作,如放棄和擴(kuò)展操作。除了擴(kuò)展操作,另外9種是LDAP的標(biāo)準(zhǔn)操作;擴(kuò)展操作是LDAP中為了增加新的功能,提供的一種標(biāo)準(zhǔn)的擴(kuò)展框架,當(dāng)前已經(jīng)成為LDAP標(biāo)準(zhǔn)的擴(kuò)展操作,有修改密碼和StartTLS擴(kuò)展,在新的RFC標(biāo)準(zhǔn)和草案中正在增加一些新的擴(kuò)展操作,不同的LDAP廠商也均定義了自己的擴(kuò)展操作。
3.4 安全模型:描述LDAP中的安全機制
LDAP中的安全模型主要通過身份認(rèn)證、安全通道和訪問控制來實現(xiàn)。
3.4.1身份認(rèn)證
在LDAP中提供三種認(rèn)證機制,即匿名、基本認(rèn)證和SASL(Simple Authentication and Secure Layer)認(rèn)證。匿名認(rèn)證即不對用戶進(jìn)行認(rèn)證,該方法僅對完全公開的方式適用;基本認(rèn)證均是通過用戶名和密碼進(jìn)行身份識別,又分為簡單密碼和摘要密碼認(rèn)證;SASL認(rèn)證即LDAP提供的在SSL和TLS安全通道基礎(chǔ)上進(jìn)行的身份認(rèn)證,包括數(shù)字證書的認(rèn)證。
3.4.2 通訊安全
在LDAP中提供了基于SSL/TLS的通訊安全保障。SSL/TLS是基于PKI信息安全技術(shù),是當(dāng)前Internet上廣泛采用的安全服務(wù)。LDAP通過StartTLS方式啟動TLS服務(wù),可以提供通訊中的數(shù)據(jù)保密性、完整性保護(hù);通過強制客戶端證書認(rèn)證的TLS服務(wù),同時可以實現(xiàn)對客戶端身份和服務(wù)器端身份的雙向驗證。
3.4.3訪問控制
雖然LDAP并無訪問控制的標(biāo)準(zhǔn),但從一些草案中或是事實上LDAP產(chǎn)品的訪問控制情況,我們不難看出:LDAP訪問控制異常的靈活和豐富,在LDAP中是基于訪問控制策略語句來實現(xiàn)訪問控制的,這不同于現(xiàn)有的關(guān)系型數(shù)據(jù)庫系統(tǒng)和應(yīng)用系統(tǒng),它是通過基于訪問控制列表來實現(xiàn)的,無論是基于組模式或角色模式,都擺脫不了這種限制。
在使用關(guān)系型數(shù)據(jù)庫系統(tǒng)開發(fā)應(yīng)用時,往往是通過幾個固定的數(shù)據(jù)庫用戶名訪問數(shù)據(jù)庫。對于應(yīng)用系統(tǒng)本身的訪問控制,通常是需要建立專門的用戶表,在應(yīng)用系統(tǒng)內(nèi)開發(fā)針對不同用戶的訪問控制授權(quán)代碼,這樣一旦訪問控制策略變更時,往往需要代碼進(jìn)行變更??傊痪湓?,關(guān)系型數(shù)據(jù)庫的應(yīng)用中用戶數(shù)據(jù)管理和數(shù)據(jù)庫訪問標(biāo)識是分離的,復(fù)雜的數(shù)據(jù)訪問控制需要通過應(yīng)用來實現(xiàn)。
而對于LDAP,用戶數(shù)據(jù)管理和訪問標(biāo)識是一體的,應(yīng)用不需要關(guān)心訪問控制的實現(xiàn)。這是由于在LDAP中的訪問控制語句是基于策略語句來實現(xiàn)的,無論是訪問控制的數(shù)據(jù)對象,還是訪問控制的主體對象,均是與這些對象在樹中的位置和對象本身的數(shù)據(jù)特征相關(guān)。
在LDAP中,可以把整個目錄、目錄的子樹、制定條目、特定條目屬性集或符合某過濾條件的條目作為控制對象進(jìn)行授權(quán);可以把特定用戶、屬于特定組或所有目錄用戶作為授權(quán)主體進(jìn)行授權(quán);最后,還可以定義對特定位置(例如IP地址或DNS名稱)的訪問權(quán)。
4. LDAP數(shù)據(jù)結(jié)構(gòu)
LDAP是實現(xiàn)了指定的數(shù)據(jù)結(jié)構(gòu)的存貯,它包括以下可以用關(guān)系數(shù)據(jù)庫實現(xiàn)的結(jié)構(gòu)要求:樹狀組織、條目認(rèn)證、類型定義、許可樹形記錄拷貝。
4.1 樹狀組織
無論是X500還是LDAP都是采用樹狀方式進(jìn)行記錄。每一個樹目錄都有一個樹根的入口條目,子記錄全部是這一根條目的子孫。這是目錄與關(guān)系數(shù)據(jù)類型最大的區(qū)別(關(guān)系數(shù)據(jù)庫的應(yīng)用結(jié)構(gòu)也可實現(xiàn)樹狀記錄)。因此,把目錄看作是更高級的樹狀數(shù)據(jù)庫也未嘗不可,只不過除此外,它不能實現(xiàn)關(guān)系存貯的重要功能。
4.2 條目和條目認(rèn)證
LDAP是以條目作為認(rèn)證的根據(jù)。ROOT的權(quán)限認(rèn)證與目錄本身無關(guān),但除此外所有條目的認(rèn)證權(quán)限由條目本身的密碼進(jìn)行認(rèn)證。LDAP可以配置成各種各樣不同的父子條目權(quán)限繼承方式。
每一個條目相當(dāng)于一個單一的平面文本記錄,由條目自身或指定的條目認(rèn)證進(jìn)行訪問控制。因此,LDAP定義的存貯結(jié)構(gòu)等同于一批樹狀組織的平面數(shù)據(jù)庫,并提供相應(yīng)的訪問控制。
條目中的記錄以名-值對的形式存在,每一個名值對必須由數(shù)據(jù)樣式schema預(yù)定義。因此,LDAP可以看作是以規(guī)定的值類型以名值對形式存貯在一系列以樹狀組織的平面數(shù)據(jù)庫的記錄的集合。
4.3 數(shù)據(jù)樣式(schema)
數(shù)據(jù)樣式schema是針對不同的應(yīng)用,由用戶指定(設(shè)計)類和屬性類型預(yù)定義,條目中的類(objectclass)和屬性必須在在LDAP服務(wù)器啟動時載入內(nèi)存的schema已有定義。因此,AD活動目錄中的條目記錄就必須符合Active Directory的schema中。如果已提供的schema中的定義不夠用,用戶可以自行定義新的schema.
在http://ldap.akbkhome點com/index.php中可以看到常用的schema。
4.4 對象類型(objectClass)
LDAP目錄用對象類型(objectclass)的概念來定義運行哪一類的對象使用什么屬性。
條目中的記錄通過objectclass實現(xiàn)分類,objectClass是一個繼承性的類定義,每一個類定義指定必須具備的屬性。如某一條目指定必須符合某個類型,則它必須具備超類所指定的屬性。
通過objectclass分類,分散的條目中的記錄就實際上建立了一個索引結(jié)構(gòu),為高速的讀查詢打下了基礎(chǔ)。Objectclass也是過濾器的主要查詢對象。
4.5 過濾器和語法
LDAP是一個查詢?yōu)橹鞯挠涗浗Y(jié)構(gòu),無論是何種查詢方式,最終都由過濾器缺點查詢的條件。過濾器相當(dāng)于SQL中的WHERE子句。任何LDAP的類過濾和字符串都必須放在括號內(nèi),如(objectclass=*),指列出所有類型的記錄(不過分類)。
可以使用=,>=,<=,~=(約等于)進(jìn)行比較,如(number<=100)。合并條件是最怪的,必須把操作符放在兩個操作對象的前面而不是中間,單一操作對象用括號括起來。如
l A與B,不是A&B,而是(&(A)(B))。
l 或使用"|"表示;
l 非使用"!"表示。
l 對于"與",或"或"在操作符后可以跟多個條件表達(dá)式,但非后則只參是單個表達(dá)式。
詳見RFC1558。
4.6 樹移植
LDAP最重要的特性和要求并不是讀性能,而是擴(kuò)展性。這一特性是通過樹移植和樹復(fù)制實現(xiàn)的。按LDAP的RFC要求,LDAP目錄應(yīng)該可以任意地在不同的目錄間連接、合并并實現(xiàn)自動復(fù)制,及自動性同步。這意味著用戶可以在任一LDAP中訪問條目,而不用管其中某一部分是否復(fù)制自全世界另一目錄中的記錄,同時另一目錄中的記錄同樣在正常運作。
這一特性如果在關(guān)系數(shù)據(jù)庫中實現(xiàn),意味著要使用程序化的非規(guī)范化預(yù)復(fù)制。類似于匯總帳目的設(shè)計。
4.7 LDIF交換文件
LDIF是LDAP約定的記錄交換格式,以平面文本的形式存在,是大部分LDAP內(nèi)容交換的基礎(chǔ),如拷貝、添加、修改等操作,都是基于LDIF文件進(jìn)行操作。
4.8 JAVA或CORBA對象串行化存儲
網(wǎng)絡(luò)高效率的訪問加上JAVA的跨平臺能力,當(dāng)把JAVA或CORBA對象串行化后存儲到LDAP目錄上時,可以產(chǎn)生非同一般的集成效果--實際上,這正是EJB和.NET的網(wǎng)絡(luò)定位基礎(chǔ)技術(shù)。
使用JAVA或CORBA對象存儲時,必須首先讓LDAP服務(wù)支持該對象定義,也就是說包含qmail.schema或corba.schema。
JAVA必須存儲在objectclass=javacontainer的條目中,而且必須帶有cn屬性,這意味著除非該JAVA類專門實現(xiàn)了DirContext接口,對于大多數(shù)JAVA類來說,只能采用DirContext代替Context實現(xiàn)bind的添加操作。取出JAVA類相對要簡單得多,只需使用context.lookup()獲得該對象的句柄,然后強制造型成所需要的對象就可以了,如:
Person p=(Person)contex.lookup("cn=elvis,dc=daifu,dc=com");
這個句法在EJB的程序中,是經(jīng)常用到的。
使用CORBA的跨語言性質(zhì),使用CORBA存儲對象比JAVA更加誘人,這意味著所存儲的對象可以被任何語言編寫的客戶端訪問。其實,微軟的.net說到底也非常簡單,無非是把COM對象存儲到微軟自家的目錄ActiveDirectory里面,從而可以在網(wǎng)絡(luò)范圍內(nèi)使用任何微軟平臺的語言進(jìn)行對象訪問而已。眾所周知,COM就是與CORBA相對的微軟規(guī)范。
使用對象串行化技術(shù),可以把常用對象如某個打印機,某個客戶直接存儲到LDAP中,然后快速獲取該對象的引用,這樣,就比把對象信息存儲到關(guān)系數(shù)據(jù)庫中,分別取出屬性,然后再初始化對象操作的做法,效率要高得多了。這是LDAP比普通關(guān)系數(shù)據(jù)庫存儲要優(yōu)秀的地方,而對象數(shù)據(jù)庫還不成熟。
圖集目錄
格式:pdf
大?。?span id="u8iiska" class="single-tag-height">61KB
頁數(shù): 13頁
評分: 4.5
序號 圖集名稱 1、 招標(biāo)范本 2、 (04G329-4)建筑物抗震構(gòu)造詳圖 (小砌塊墻樓房 )(pdf4).pdf 3、 (04G329-5)建筑物抗震構(gòu)造詳圖 (配筋磚砌體樓房 )(pdf4).pdf 4、 (04G329-6)建筑物抗震構(gòu)造詳圖 (局部框架房屋 )(pdf4).pdf 5、 (04G329-7)建筑物抗震構(gòu)造詳圖 (磚排架房屋 )(pdf4).pdf 6、 (04G329-8)建筑物抗震構(gòu)造詳圖 (鋼筋砼柱單層廠房 )(pdf4).pdf 7、 00SJ202建筑坡屋面構(gòu)造 .pdf 8、 00J202-1 坡屋面建筑構(gòu)造(一) .pdf 9、 00SJ202 建筑坡屋面構(gòu)造 .pdf 10、 01(03)J304樓地面建筑構(gòu)造 .PDF 11、 01(04)SG519 多、高層鋼結(jié)構(gòu)圖集修改說明 .pdf 12、 01(04)SG519 修改說明 .pdf 13、
圖集目錄
格式:pdf
大?。?span id="kmqsamk" class="single-tag-height">61KB
頁數(shù): 48頁
評分: 4.8
第一部分:結(jié)構(gòu)、建筑、市政、路橋 GJBT圖集系列 1 00(03)J202-1(GJBT-529-2002) 坡屋面建筑構(gòu)造(一) 2 00G101(GJBT-518-2000)混凝土結(jié)構(gòu)施工圖平面整體表示方法制圖規(guī)則 和構(gòu)造詳圖 3 00G514(六 )(GJBT-531-2001) 吊車軌道聯(lián)結(jié)及車擋 4 00J008-2(GJBT-368-2002) 抗震重力式擋土墻 5 00J008-3(GJBT-368-2002) 鋼筋混凝土擋土墻 6 00J202-1(GJBT-529-2002) 坡屋面建筑構(gòu)造 7 00J618(一 ) 中懸鋼天窗 8 00J904-1(GJBT-528-2002) 智能化示范小區(qū)設(shè)計 9 00SJ008(二 )(GJBT-368-2002) 抗震重力式擋土墻 10 00SJ202(GJBT-529-2000) 建筑坡屋面構(gòu)造 11 00SJ904(一 )
提供到LDAP、RADIUS和TACAS目錄的頂級HTTP和其它流量類型的客戶端認(rèn)證,降低服務(wù)器和應(yīng)用的負(fù)載,同時使服務(wù)器和應(yīng)用免遭攻擊。
主機尺寸:600×757×900mm(包括自動文件送稿器和送稿器安裝支架)
重量:約138kg
電源:220-240V,50/60Hz,6.5A
功率:最大:低于1450W
節(jié)能:約180W
睡眠:約20W
系統(tǒng)平臺:Windows XP/2000/98/Me/Server 2003/NT.4.0
Mac OS 8.6-10.4
其它特點:網(wǎng)絡(luò)用戶認(rèn)證:支持的協(xié)議(SMTP,LDAP,NTLM),支持的模式(復(fù)印,掃描,電子郵件,打印,傳真)
數(shù)據(jù)安全:硬盤驅(qū)動覆蓋,存儲器刪除,傳真存儲器刪除
主機尺寸:600×757×900mm(包括自動文件送稿器和送稿器安裝支架)
重量:約135kg
電源:220-240V,50/60Hz,6.5A
功率:最大:低于1450W
節(jié)能:約40W
睡眠:約20W
系統(tǒng)平臺:Windows XP/2000/98/Me/Server 2003/NT.4.0
Mac OS 8.6-10.4
其它特點:網(wǎng)絡(luò)用戶認(rèn)證:支持的協(xié)議(SMTP,LDAP,NTLM),支持的模式(復(fù)印,掃描,電子郵件,打印,傳真)
數(shù)據(jù)安全:硬盤驅(qū)動覆蓋,存儲器刪除,傳真存儲器刪除