隨筆-84  評(píng)論-56  文章-0  trackbacks-0
          一、Directory Services(目錄服務(wù))能做什么?

              我們知道,當(dāng)局域網(wǎng)的規(guī)模變的越來(lái)越大時(shí),為了方便主機(jī)管理,我們使用DHCP來(lái)實(shí)現(xiàn)IP地址、以太網(wǎng)地址、主機(jī)名和拓?fù)浣Y(jié)構(gòu)等的集中管理和統(tǒng)一分配。同樣,如果一個(gè)局域網(wǎng)內(nèi)有許多的其它資源時(shí),如打印機(jī)、共享文件夾等等,為了方便的定位及查找它們,一種集中定位管理的方式或許是較好的選擇,DNS和NIS都是用來(lái)實(shí)現(xiàn)類(lèi)似管理的方法。
              
              對(duì)于局域網(wǎng)內(nèi)的一個(gè)用戶來(lái)講,工作等其它應(yīng)用需要,我們必須憑帳號(hào)登錄主機(jī)、用帳號(hào)收發(fā)E-mail,甚至為了管理需要公司還需要維護(hù)一個(gè)電子號(hào)碼簿來(lái)存儲(chǔ)員工的姓名、地址、電話號(hào)碼等信息。隨著時(shí)間的增長(zhǎng),我們會(huì)為這些越來(lái)越多的帳號(hào)和密碼弄的頭暈?zāi)X脹。同時(shí),如果一個(gè)員工離開(kāi),管理員就不得不翻遍所有的記錄帳號(hào)信息的文件把離職員工的信息刪除。這些將是一個(gè)繁瑣而效率低下的工作。那么,如果能將此些帳號(hào)信息等統(tǒng)一到一個(gè)文件中進(jìn)行管理,無(wú)疑會(huì)大大提高員工及管理員的工作效率。目錄服務(wù)(LDAP是其實(shí)現(xiàn)的一種)正是基于這些應(yīng)用實(shí)現(xiàn)的。

          二、什么是LDAP?
              
              LDAP是Lightweight Directory Access Protocol的縮寫(xiě),顧名思義,它是指輕量級(jí)目錄訪問(wèn)協(xié)議(這個(gè)主要是相對(duì)另一目錄訪問(wèn)協(xié)議X.500而言的;LDAP略去了x.500中許多不太常用的功能,且以TCP/IP協(xié)議為基礎(chǔ))。目錄服務(wù)和數(shù)據(jù)庫(kù)很類(lèi)似,但又有著很大的不同之處。數(shù)據(jù)庫(kù)設(shè)計(jì)為方便讀寫(xiě),但目錄服務(wù)專(zhuān)門(mén)進(jìn)行了讀優(yōu)化的設(shè)計(jì),因此不太適合于經(jīng)常有寫(xiě)操作的數(shù)據(jù)存儲(chǔ)。同時(shí),LDAP只是一個(gè)協(xié)議,它沒(méi)有涉及到如何存儲(chǔ)這些信息,因此還需要一個(gè)后端數(shù)據(jù)庫(kù)組件來(lái)實(shí)現(xiàn)。這些后端可以是bdb(BerkeleyDB)、ldbm、shell和passwd等。

              LDAP目錄以樹(shù)狀的層次結(jié)構(gòu)來(lái)存儲(chǔ)數(shù)據(jù)(這很類(lèi)同于DNS),最頂層即根部稱(chēng)作“基準(zhǔn)DN”,形如"dc=mydomain,dc=org"或者"o=mydomain.org",前一種方式更為靈活也是Windows AD中使用的方式。在根目錄的下面有很多的文件和目錄,為了把這些大量的數(shù)據(jù)從邏輯上分開(kāi),LDAP像其它的目錄服務(wù)協(xié)議一樣使用OU(Organization Unit),可以用來(lái)表示公司內(nèi)部機(jī)構(gòu),如部門(mén)等,也可以用來(lái)表示設(shè)備、人員等。同時(shí)OU還可以有子OU,用來(lái)表示更為細(xì)致的分類(lèi)。

              LDAP中每一條記錄都有一個(gè)唯一的區(qū)別于其它記錄的名字DN(Distinguished Name),其處在“葉子”位置的部分稱(chēng)作RDN;如dn:cn=tom,ou=animals,dc=mydomain,dc=org中tom即為RDN;RDN在一個(gè)OU中必須是唯一的。

          三、什么是LDIF?

              LDIF(LDAP Interchange Format)是指存儲(chǔ)LDAP配置信息及目錄內(nèi)容的標(biāo)準(zhǔn)文本文件格式,之所以使用文本文件來(lái)格式來(lái)存儲(chǔ)這些信息是為了方便讀取和修改,這也是其它大多數(shù)服務(wù)配置文件所采取的格式。LDIF文件常用來(lái)向目錄導(dǎo)入或更改記錄信息,這些信息需要按照LDAP中schema的格式進(jìn)行組織,并會(huì)接受schema的檢查,如果不符合其要求的格式將會(huì)出現(xiàn)報(bào)錯(cuò)信息。LDIF文件樣例如下:

          #LDIF file example
          dn: dc=mydomain,dc=org
          objectClass: domain
          dc: mydomain

              其中,以“#”號(hào)開(kāi)頭的為注釋行;第二行起的行中,冒號(hào)左邊為屬性,右邊是屬性的值,這類(lèi)同于編程中的變量及為其所賦的值,但屬性可以被重復(fù)賦值。

          四、objectClass 

              LDAP中,一條記錄必須包含一個(gè)objectClass屬性,且其需要賦予至少一個(gè)值。每一個(gè)值將用作一條LDAP記錄進(jìn)行數(shù)據(jù)存儲(chǔ)的模板;模板中包含了一條記錄中數(shù)個(gè)必須被賦值的屬性和一系列可選的屬性。如上述LDIF文件中的記錄所示,objectClass的值為domain。

              objectClass有著嚴(yán)格的等級(jí)之分,最頂層的類(lèi)是top和alias。例如,organizationalPerson這個(gè)objectClass隸屬于Person,而Person又是top的子類(lèi)。

              objectClass大致分為三類(lèi):結(jié)構(gòu)型的(如:person和organizationUnit)、輔助型的(如:extensibeObject)和抽象型的(這類(lèi)不能直接使用)。官方定義的objectClass,如下所示:

          alias 
          applicationEntity 
          dSA 
          applicationProcess 
          bootableDevice 
          certificationAuthority 
          certificationAuthority-V2 
          country 
          cRLDistributionPoint 
          dcObject 
          device 
          dmd 
          domain 
          domainNameForm 
          extensibleObject 
          groupOfNames 
          groupOfUniqueNames 
          ieee802Device 
          ipHost 
          ipNetwork 
          ipProtocol 
          ipService 
          locality 
          dcLocalityNameForm 
          nisMap 
          nisNetgroup 
          nisObject 
          oncRpc 
          organization 
          dcOrganizationNameForm 
          organizationalRole 
          organizationalUnit 
          dcOrganizationalUnitNameForm 
          person 
          organizationalPerson 
          inetOrgPerson 
          uidOrganizationalPersonNameForm 
          residentialPerson 
          posixAccount 
          posixGroup 
          shadowAccount 
          strongAuthenticationUser 
          uidObject 
          userSecurityInformation

          五、Attribute介紹

              如上文所述,Attribute類(lèi)同于編程語(yǔ)言中的變量,它可以被賦值,就像是可以存放一個(gè)單一類(lèi)型信息的容器。官方聲明了許多常用的Attribute,如果其中沒(méi)有你所需要的,你可以自己定義,但要避免重名。objectClass是一種特殊的Attribute,它包含其它用到的Attribute以及它自身。常見(jiàn)的Attribute如:givenName、l、objectClass、dc、ou、cn、c、mail、telephoneNumber、sn、uid等。分別介紹如下:

          c:國(guó)家;
          cn:common name,指一個(gè)對(duì)象的名字;如果指人,需要使用其全名;
          dc:domain Component,經(jīng)常用來(lái)指一個(gè)域名的一部分,如:dc=mydomain,dc=org;
          givenName:指一個(gè)人的名字,不能用來(lái)指姓或者middle name;
          l:指一個(gè)地名,如一個(gè)城市或者其它地理區(qū)域的名字;
          mail:電子信箱地址
          o:organizationName,指一個(gè)組織的名字;
          objectClass:一個(gè)LDAP server要想啟用必須能夠識(shí)別每一個(gè)對(duì)象的Attribute,objectClass Attribute正是用來(lái)描述一個(gè)對(duì)象應(yīng)該具有的Attribute及可選Attribute。因此,每個(gè)objectClass“模板”的Attribute中必然含有一條objectClass Attribute,我不知道用“自包含”稱(chēng)呼這個(gè)算不算合適。
          ou:organizationalUnitName,指一個(gè)組織單元的名字。
          sn:surname,指一個(gè)人的姓;
          telephoneNumber:電話號(hào)碼,應(yīng)該帶有所在的國(guó)家的代碼;
          uid:userid,通常指一個(gè)人的登錄名,這個(gè)不同于Linux系統(tǒng)中用戶的uid; 

              如果可以這樣類(lèi)比的話,我想,我們不妨把objectClass理解為關(guān)系數(shù)據(jù)庫(kù)的表,而attribute則類(lèi)同為表中的字段。而下面即可介紹的schema或許可以類(lèi)比作一個(gè)數(shù)據(jù)庫(kù),但它的這個(gè)類(lèi)比或許從邏輯上說(shuō)更合適些。

          六、什么是schema

                  好了,現(xiàn)在可以說(shuō)說(shuō)到底什么是schema了。LDAP中,schema用來(lái)指定一個(gè)目錄中所包含的objects的類(lèi)型(objectClass)以及每一個(gè)objectClass中的各個(gè)必備(mandatory)和可選(optional)的屬性(attribute)。因此,[color=Orange]Schema是一個(gè)數(shù)據(jù)模型,它被用來(lái)決定數(shù)據(jù)怎樣被存儲(chǔ),被跟蹤的數(shù)據(jù)的是什么類(lèi)型,存儲(chǔ)在不同的Entry下的數(shù)據(jù)之間的關(guān)系。[/color]schema需要在主配置文件slapd.conf中指定,以用來(lái)決定本目錄中使用到的objectClass。管理員可以自己設(shè)計(jì)制定schema,一般包括屬性定義(AttributeDefinition)、類(lèi)定義(ClassDefinition)以及語(yǔ)法定義(SyntaxDefinition)等部分。  

              LDAP V3中在x.500標(biāo)準(zhǔn)的基礎(chǔ)上定義了一個(gè)包含了網(wǎng)絡(luò)中大多常見(jiàn)對(duì)象的schema,這些對(duì)象包括國(guó)家、所在地、組織、人員、小組以及設(shè)備等。同時(shí),LDAP V3中可以很方便的從目錄中提取出schema,它正是一條記錄中關(guān)于屬性的聲明部分。

          七、對(duì)象標(biāo)識(shí)符(Object Identifiers)

               對(duì)象標(biāo)識(shí)符(OID)是被LDAP內(nèi)部數(shù)據(jù)庫(kù)引用的數(shù)字標(biāo)識(shí)。Attribute的名字是設(shè)計(jì)為方便人們讀取的,但為了方便計(jì)算機(jī)的處理,通常使用一組數(shù)字來(lái)標(biāo)識(shí)這些對(duì)象,這類(lèi)同于SNMP中的MIB2。例如,當(dāng)計(jì)算機(jī)接收到dc這個(gè)Attribute時(shí),它會(huì)將這個(gè)名字轉(zhuǎn)換為對(duì)應(yīng)的OID:1.3.6.1.4.1.1466.115.121.1.26。


          八、使用LDAP做身份驗(yàn)正

              驗(yàn)正主要是用來(lái)確定一次會(huì)主中客戶端用戶所具有的權(quán)利,即用來(lái)確立用戶能否登錄以及登錄具有使用哪些資源以及如何使用資源的權(quán)限。驗(yàn)正過(guò)程中的修改、查詢(xún)等操作由認(rèn)證級(jí)別來(lái)控制。

              objectClass中的person可以用來(lái)作linux系統(tǒng)中用戶登入的身份驗(yàn)正,此時(shí)需要指定userPassword屬性的值,即指定用戶登入時(shí)使用的密碼。密碼可以使用的加密方式有MD5、CRYPT、SHA、SSHA等。在LDAP V3中,驗(yàn)正客戶端時(shí)可以使用的驗(yàn)正機(jī)制有匿名驗(yàn)正、簡(jiǎn)單驗(yàn)正、基于SSL/TLS的驗(yàn)正和基于SASL的驗(yàn)正等四種方式。
          posted on 2008-09-21 02:40 憶風(fēng) 閱讀(674) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): Java EE
          主站蜘蛛池模板: 陇西县| 黄骅市| 江城| 漾濞| 迁西县| 北流市| 昔阳县| 固安县| 莆田市| 肇东市| 攀枝花市| 纳雍县| 枣庄市| 菏泽市| 仙居县| 锦州市| 神木县| 潮州市| 方正县| 谢通门县| 南召县| 襄垣县| 曲靖市| 米林县| 南京市| 岳普湖县| 蒙阴县| 邢台县| 繁昌县| 龙州县| 顺平县| 绍兴县| 吉安市| 双桥区| 兴义市| 长武县| 苍溪县| 大竹县| 舞阳县| 新乡县| 驻马店市|