LDAP Schema的概念和基本要素
Schema是LDAP的一個重要組成部分,類似于數(shù)據(jù)庫的模式定義,LDAP的Schema定義了LDAP目錄所應(yīng)遵循的結(jié)構(gòu)和規(guī)則,比如一個 objectclass會有哪些屬性,這些屬性又是什么結(jié)構(gòu)等等,schema給LDAP服務(wù)器提供了LDAP目錄中類別,屬性等信息的識別方式,讓這些可以被LDAP服務(wù)器識別。
??? 在LDAP的schema中,有四個重要的元素:
??? 1. Objectclass
??? objectclass定義了一個類別,這個類別會被不同的目錄(在LDAP中就是一個Entry)用到,它說明了該目錄應(yīng)該有哪些屬性,哪些屬性是必須的,哪些又是可選的。一個objectclass的定義包括名稱(NAME),說明(DESC),類型(STRUCTURAL或AUXILARY ,表示是結(jié)構(gòu)型的還是輔助型的),必須屬性(MUST),可選屬性(MAY)等信息。
??????在BAP產(chǎn)品中,有下面幾種類別
# GalaxyTitle objectclass ( 2.16.840.1.153730.3.4.2NAME 'GalaxyTitle'DESC 'GalaxyTitle use to manage title'SUP topSTRUCTURALMUST ( uid )MAY (sortid )) # GalaxyPost objectclass ( 2.16.840.1.153730.3.4.32NAME 'GalaxyPost'DESC 'GalaxyPost use to manage post'SUP topSTRUCTURALMUST ( uid )MAY (sortid $ type )) # GalaxyDuty objectclass ( 2.16.840.1.153730.3.4.22NAME 'GalaxyDuty'DESC 'GalaxyDuty use to manage duty'SUP topSTRUCTURALMUST ( dutyuid )MAY (sortid )) # GalaxyGroup objectclass ( 2.16.840.1.153730.3.2.12NAME 'GalaxyGroup'DESC 'GalaxyGroup use to manage group'SUP topSTRUCTURALMUST ( uid )MAY (sysid $ employeeids $ sortid $ groupType $ searchCondition $ groupManager $ telephone $email $ gfax $ others1 $ others2 $others3 $ uniqueMember $ searchConditionXml)) # GalaxyPeople objectclass ( 2.16.840.1.153730.3.2.22NAME 'GalaxyPeople'DESC 'GalaxyPeople use to manage people'SUP InetOrgPersonSTRUCTURALMAY (otherDepartmentNumber $ sortid $ ifactivated $ peopleLevel $ leadermember $ leaderFilter $ title $ post $ globalsortid $ virtualaccount)) # GalaxyOrganization objectclass ( 2.16.840.1.153730.3.2.2NAME 'GalaxyOrganization'DESC 'GalaxyOrganization use to manage dep'SUP topSTRUCTURALMUST ( uid )MAY (sysid $ employeeids $ sortid $ depmanager $ telephone $email $ gfax $ others1 $ others2 $others3 $ depmanagerFilter $ title $ post)) # GalaxyContainer objectclass ( 2.16.840.1.153730.3.2.16NAME 'GalaxyContainer'DESC 'a container,can fill with people,org,group...'SUP topSTRUCTURALMUST ( cn )) # GalaxyLevel objectclass ( 2.16.840.1.153730.3.3.18NAME 'GalaxyLevel'DESC 'level inof'SUP topSTRUCTURALMUST ( cn $ number )) # GalaxyAttOfPeople objectclass ( 2.16.840.1.153730.3.3.19NAME 'GalaxyAttOfPeople'DESC 'att name and sn'SUP topSTRUCTURALMUST ( sn $ cn ))??
??? 2. Attribute
??? attribute就是一個上面objectclass中可能包含的屬性,對其的定義包括名稱,數(shù)據(jù)類型,單值還是多值以及匹配規(guī)則等。后面用具體的例子來說明。
??? 3. Syntax
??? syntax是LDAP中的“語法”,其實就是LDAP中會用到的數(shù)據(jù)類型和數(shù)據(jù)約束,這個語法是遵從X.500中數(shù)據(jù)約束的定義的。其定義需要有一個ID(遵從X.500)以及說明(DESP)
??? 4. Matching Rules
??? 是用來指定某屬性的匹配規(guī)則,實際上就是定義一個特殊的Syntax的別名,讓LDAP服務(wù)器可以識別,并對定義的屬性進行匹配。
??? LDAP的schema的主要元素就是這些了,下面列舉出了一些LDAP規(guī)定好的或是現(xiàn)在比較通用的schema,一般的LDAP服務(wù)器都應(yīng)該可以識別這些定義。
??? 這就是一個名為subschema的objectclass的定義:
??? (2.5.20.1 NAME 'subschema'? AUXILIARY
???? MAY ( dITStructureRules $ nameForms $ ditContentRules $
???????????????? objectClasses $ attributeTypes $ matchingRules $ matchingRuleUse )?)
??? 首先是ID,這里是2.5.20.1,接著是NAME,AUXILIARY說明是輔助型,之后是可選屬性的定義,subschema中沒有定義必須屬性,如果需要定義,應(yīng)該和MAY一樣,將屬性放在MUST()中并用$隔開
??
??? 再來看一個屬性定義:
??? ( 2.5.4.3 NAME 'cn' SUP name EQUALITY caseIgnoreMatch )
? 可以看到cn屬性的父屬性是name,它相等性匹配于caseIgnoreMatch(匹配原則為EQUALITY,還有如SUBSTR是字符串匹配,ORDERING是順序匹配)
??
??? syntax定義一般都比較簡單,如:
??? ( 1.3.6.1.4.1.1466.115.121.1.6? DESC? 'String' )
??? 這個定義說明,這一串?dāng)?shù)字1.3.6.1.4.1.1466.115.121.1.5就代表了LDAP中的字符串,這個數(shù)字串的定義和X.500相關(guān),包括了它的存儲方式,所占空間大小等。
??? 最后看看Matching Rule的例子,前面提到了caseIgnoreMatch,就看他的吧
? ( 2.5.13.2 NAME 'caseIgnoreMatch'
????? SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )??
??? 其實1.3.6.1.4.1.1466.115.121.1.15 就是LDAP數(shù)據(jù)類型Directory String的ID,說明前面的cn需要等于這個數(shù)據(jù)類型才有效。
??? 還有很多常用schema的定義都在了RFC2252中,LDAP服務(wù)器都應(yīng)該支持這些基本的schema。好了,現(xiàn)在基本對LDAP中的schema有個一個大致的說明,可能有不到位或不妥之處,還望大家指正。
總結(jié)
以上是生活随笔為你收集整理的LDAP Schema的概念和基本要素的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: BAP存储属性的思想
- 下一篇: CSS之expression