LDAP中的objectClass与Attribute

  • Post author:
  • Post category:其他




http://hexstar.javaeye.com/blog/305950


对照Java里面的一些概念来讲讲LDAP中的objectClass与Attribute,非常相似!



LDAP中每一个Entry必须属于某一个objectClass,

用Java的方式来理解就是Entry是一个Instance,而objectClass就是class。


在LDAP中objectClass分为三种:Abstract,Structural,AUXIALIARY。


在Java中Class可以分为Abstract,concrete两种,我们知道要new一个Instance时必须要有一个concrete Class。


要定义一个Entry必须包含一个

Structural类型的ObjectClass

,其他两个类型可包括0或多个。 其中


Top

是一个顶级ObjectClass

,里面定义了一个MUST Attribute:ObjectClass,于是也就决定了

必须有一个其它的Structural ObjectClass才能定义一个Entry

.其中ObjectClass又可以存在继承关系,子ObjectClass会继承父ObjectClass中的全部Attribute.

该继承关系于Java中有点相似.


下面分析一下ObjectClass与Attribute的关系。



如同Java里面的一个类可以包括多个Field,在业务上可能会定义某些Field是必须的,另外一些是可选的。

在LDAP中也存在类似关系,每一个ObjectClass都定义了一些Attribute,其Attribute仍然可以是ObjectClass。在这些Attriubte中分为两种类型MUST,MAY, MUST表示这个Entry必须包括的属性,MAY为可选。一个ObjectClass的Attribute也包括所有继承自父ObjectClass和自身定义的ObjectClass。



下面用一个类型进行说明:

objectclass ( 2.5.6.0 NAME

‘top’


ABSTRACT



MUST objectClass

)



objectclass ( 1.3.6.1.4.1.1466.344 NAME

‘dcObject’


DESC ‘RFC2247: domain component object’


SUP top


AUXILIARY



MUST dc

)



上面是两个objectclass的定义,其中top为ABSTRACT,dcObject为AUXILIARY,这两个类型都不能定义Entry.


下面这个LDIF文件在导入到LDAP时会出错:

dn: dc=java,dc=com

objectClass:dcObject

dc: java.com



要定义这个Entry必须找到一个STRUCTURAL类型的ObjectClass。


objectClasses: ( 2.5.6.4 NAME

‘organization’


DESC ‘RFC2256: an organization’ SUP top STRUCTURAL


MUST o



MAY ( userPassword $ searchGuide $ seeAlso $ businessCategory

$ x121Address $ registeredAddress $ destinationIndicator

$ preferredDeliveryMethod $ telexNumber $ teletexTerminalIdentifier

$ telephoneNumber $ internationaliSDNNumber $ facsimileTelephoneNumber

$ street $ postOfficeBox $ postalCode $ postalAddress

$ physicalDeliveryOfficeName $ st $ l $ description

) )


这个objectClass的类型为STRUCTURAL,因此可以用来定义Entry.具体定义如下

dn: dc=java,dc=com

objectClass:

dcObject


objectClass:

organization


dc: java.com

o: java.com

其中



dc:java.com为dcObject的MUST Attribute,o: java.com为organization的MUST Attribute。





属性类型描述Attribute Type Description的定义如下:


AttributeTypeDescription = “(” whsp

numericoid whsp              ; AttributeType identifier

[ “NAME” qdescrs ]             ; name used in AttributeType

[ “DESC” qdstring ]            ; description

[ “OBSOLETE” whsp ]

[ “SUP” woid ]                 ; derived from this other

; AttributeType

[ “EQUALITY” woid              ; Matching Rule name

[ “ORDERING” woid              ; Matching Rule name

[ “SUBSTR” woid ]              ; Matching Rule name

[ “SYNTAX” whsp noidlen whsp ] ; Syntax OID

[ “SINGLE-VALUE” whsp ]        ; default multi-valued

[ “COLLECTIVE” whsp ]          ; default not collective

[ “NO-USER-MODIFICATION” whsp ]; default user modifiable

[ “USAGE” whsp AttributeUsage ]; default userApplications

whsp “)”

AttributeUsage =

“userApplications”     /

“directoryOperation”   /

“distributedOperation” / ; DSA-shared

“dSAOperation”          ; DSA-specific, value depends on server



whsp是空格的意思(‘ ‘)。numericoid 是全局唯一的 OID,是带.的十进制形式 (e.g.


1.1.0


), qdescrs有一个或几个意思, woid 可以使名称或者是 OID 可选择的一定长度的后缀(e.g


{10


})。

ObjectClassDescription = “(” whsp

numericoid whsp      ; ObjectClass identifier

[ “NAME” qdescrs ]

[ “DESC” qdstring ]

[ “OBSOLETE” whsp ]

[ “SUP” oids ]       ; Superior ObjectClasses

[ ( “ABSTRACT” / “STRUCTURAL” / “AUXILIARY” ) whsp ]

; default structural

[ “MUST” oids ]      ; AttributeTypes

[ “MAY” oids ]       ; AttributeTypes

whsp “)”

OpenLDAP中 Schema的详细介绍


http://hi.baidu.com/%D0%C7203/blog/item/810adf52f19b7a0c0df3e3dd.html