schema是ldap的乙個重要組成部分,類似於資料庫的模式定義,ldap的schema定義了ldap目錄所應遵循的結構和規則,比如乙個 objectclass會有哪些屬性,這些屬性又是什麼結構等等,schema給ldap伺服器提供了ldap目錄中類別,屬性等資訊的識別方式,讓這些可以被ldap伺服器識別。
在ldap的schema中,有四個重要的元素:
1. objectclass
objectclass定義了乙個類別,這個類別會被不同的目錄(在ldap中就是乙個entry)用到,它說明了該目錄應該有哪些屬性,哪些屬性是必須的,哪些又是可選的。乙個objectclass的定義包括名稱(name),說明(desc),型別(structural或auxilary ,表示是結構型的還是輔助型的),必須屬性(must),可選屬性(may)等資訊。
在bap產品中,有下面幾種類別
# galaxytitle
objectclass ( 2.16.840.1.153730.3.4.2
name 'galaxytitle'
desc 'galaxytitle use to manage title'
sup top
structural
must ( uid )
may (
sortid )
) # galaxypost
objectclass ( 2.16.840.1.153730.3.4.32
name 'galaxypost'
desc 'galaxypost use to manage post'
sup top
structural
must ( uid )
may (
sortid $ type )
) # galaxyduty
objectclass ( 2.16.840.1.153730.3.4.22
name 'galaxyduty'
desc 'galaxyduty use to manage duty'
sup top
structural
must ( dutyuid )
may (
sortid )
) # galaxygroup
objectclass ( 2.16.840.1.153730.3.2.12
name 'galaxygroup'
desc 'galaxygroup use to manage group'
sup top
structural
must ( 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.22
name 'galaxypeople'
desc 'galaxypeople use to manage people'
sup inetorgperson
structural
may (
otherdepartmentnumber $ sortid $ ifactivated $ peoplelevel $ leadermember $ leaderfilter $ title $ post $ globalsortid $ virtualaccount
))
# galaxyorganization
objectclass ( 2.16.840.1.153730.3.2.2
name 'galaxyorganization'
desc 'galaxyorganization use to manage dep'
sup top
structural
must ( uid )
may (
sysid $ employeeids $ sortid $ depmanager $ telephone $
email $ gfax $ others1 $ others2 $
others3 $ depmanagerfilter $ title $ post)
) # galaxycontainer
objectclass ( 2.16.840.1.153730.3.2.16
name 'galaxycontainer'
desc 'a container,can fill with people,org,group...'
sup top
structural
must ( cn )
)
# galaxylevel
objectclass ( 2.16.840.1.153730.3.3.18
name 'galaxylevel'
desc 'level inof'
sup top
structural
must ( cn $ number )
)
# galaxyattofpeople
objectclass ( 2.16.840.1.153730.3.3.19
name 'galaxyattofpeople'
desc 'att name and sn'
sup top
structural
must ( sn $ cn )
)
2. attribute
attribute就是乙個上面objectclass中可能包含的屬性,對其的定義包括名稱,資料型別,單值還是多值以及匹配規則等。後面用具體的例子來說明。
3. syntax
syntax是ldap中的「語法」,其實就是ldap中會用到的資料型別和資料約束,這個語法是遵從x.500中資料約束的定義的。其定義需要有乙個id(遵從x.500)以及說明(desp)
4. matching rules
是用來指定某屬性的匹配規則,實際上就是定義乙個特殊的syntax的別名,讓ldap伺服器可以識別,並對定義的屬性進行匹配。
ldap的schema的主要元素就是這些了,下面列舉出了一些ldap規定好的或是現在比較通用的schema,一般的ldap伺服器都應該可以識別這些定義。
這就是乙個名為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中沒有定義必須屬性,如果需要定義,應該和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' )
這個定義說明,這一串數字1.3.6.1.4.1.1466.115.121.1.5就代表了ldap中的字串,這個數字串的定義和x.500相關,包括了它的儲存方式,所佔空間大小等。
最後看看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資料型別directory string的id,說明前面的cn需要等於這個資料型別才有效。
還有很多常用schema的定義都在了rfc2252中,ldap伺服器都應該支援這些基本的schema。好了,現在基本對ldap中的schema有個乙個大致的說明,可能有不到位或不妥之處,還望大家指正。
轉貼 談LDAPschema的定義
schema包含五大元件 oid,唯一名稱name,父物件sup,must屬性,may屬性。下面是乙個schema例子 xlymail ldap v3 directory schema written by hefish cz8.net attribute type definitions attr...
封基和開基的異同
封閉式 簡稱 封基 學名叫 契約型封閉式 開放式 簡稱 開基 學名叫 契約型開放式 相同點大致有 一 都是 管理公司的集合理財產品 二 都屬於面向社會公開募集 的範疇 三 都要執行 法 和規範的會計準則 四 都要按照資產淨值提取管理費 託管費 五 目前 分紅都不需要交納個人所得稅 歡迎補充 不同點有...
mysql版本概念 MySQL基本概念及基本操作
資料庫基本概念 資料庫是什麼 儲存資料的倉庫 1.列表 字典.等等 都是記憶體中的 缺點 斷電丟失 優點 速度快 2.檔案儲存 缺點 速度慢 優點 可以實現永久儲存 本質就是一套基於cs結構的 客戶端和伺服器程式,最終的資料儲存在伺服器端的磁碟中 為什麼要使用資料庫 直接使用檔案儲存帶來的問題 1....