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

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

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

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

              LDAP中每一條記錄都有一個(gè)唯一的區(qū)別于其它記錄的名字DN(Distinguished Name),其處在“葉子”位置的部分稱作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)文本文件格式,之所以使用文本文件來格式來存儲(chǔ)這些信息是為了方便讀取和修改,這也是其它大多數(shù)服務(wù)配置文件所采取的格式。LDIF文件常用來向目錄導(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)開頭的為注釋行;第二行起的行中,冒號(hào)左邊為屬性,右邊是屬性的值,這類同于編程中的變量及為其所賦的值,但屬性可以被重復(fù)賦值。

          四、objectClass 

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

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

              objectClass大致分為三類:結(jié)構(gòu)型的(如:person和organizationUnit)、輔助型的(如:extensibeObject)和抽象型的(這類不能直接使用)。官方定義的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類同于編程語言中的變量,它可以被賦值,就像是可以存放一個(gè)單一類型信息的容器。官方聲明了許多常用的Attribute,如果其中沒有你所需要的,你可以自己定義,但要避免重名。objectClass是一種特殊的Attribute,它包含其它用到的Attribute以及它自身。常見的Attribute如:givenName、l、objectClass、dc、ou、cn、c、mail、telephoneNumber、sn、uid等。分別介紹如下:

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

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

          六、什么是schema

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

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

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

               對(duì)象標(biāo)識(shí)符(OID)是被LDAP內(nèi)部數(shù)據(jù)庫引用的數(shù)字標(biāo)識(shí)。Attribute的名字是設(shè)計(jì)為方便人們讀取的,但為了方便計(jì)算機(jī)的處理,通常使用一組數(shù)字來標(biāo)識(shí)這些對(duì)象,這類同于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)正主要是用來確定一次會(huì)主中客戶端用戶所具有的權(quán)利,即用來確立用戶能否登錄以及登錄具有使用哪些資源以及如何使用資源的權(quán)限。驗(yàn)正過程中的修改、查詢等操作由認(rèn)證級(jí)別來控制。

              objectClass中的person可以用來作linux系統(tǒng)中用戶登入的身份驗(yàn)正,此時(shí)需要指定userPassword屬性的值,即指定用戶登入時(shí)使用的密碼。密碼可以使用的加密方式有MD5、CRYPT、SHA、SSHA等。在LDAP V3中,驗(yàn)正客戶端時(shí)可以使用的驗(yàn)正機(jī)制有匿名驗(yàn)正、簡單驗(yàn)正、基于SSL/TLS的驗(yàn)正和基于SASL的驗(yàn)正等四種方式。
          posted on 2008-09-21 02:40 憶風(fēng) 閱讀(674) 評(píng)論(0)  編輯  收藏 所屬分類: Java EE
          主站蜘蛛池模板: 扶绥县| 怀安县| 隆安县| 呼玛县| 青铜峡市| 巴林右旗| 合肥市| 平邑县| 广饶县| 增城市| 泰安市| 泗水县| 宜章县| 广水市| 洮南市| 马边| 马尔康县| 罗平县| 上饶县| 玉树县| 光山县| 中西区| 岳阳县| 桃园县| 长宁区| 襄樊市| 玉门市| 房山区| 乐陵市| 县级市| 武夷山市| 双桥区| 靖西县| 仁布县| 武威市| 廉江市| 邳州市| 巍山| 合江县| 曲阜市| 金华市|