Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 5.3
Note
titleWork in progress

This site is in the process of being reviewed and updated.

Table of Contents
indent20px
typelist

Introduction

We want to store the schema into ADS as any other entries. We have to define the minimum set of ObjectClasses an AttributeTypes needed to be able to bootstrap the schema.

...

Those are following the following grammar (from RFC 4512 ) :

Code Blocknoformat
<SyntaxDescription> ::=
    <LPAREN> <WSP>
         <numericoid>
         ( <SP> "DESC" <SP> <qdstring> )?
         <extensions> <WSP>
    <RPAREN>

Only one is already defined: in http://www.rfc-archive.org/getrfc.php?rfc=4517

34 of them are defined in  RFC 4517. For instance, here the definition of Boolean syntax :

No Format

3.
Code Block

3.3.3.  Boolean

   A value of the Boolean syntax is one of the Boolean values, true or
   false.  The LDAP-specific encoding of a value of this syntax is
   defined by the following ABNF:

      Boolean = "TRUE" / "FALSE"

   The LDAP definition for the Boolean syntax is:

      ( 1.3.6.1.4.1.1466.115.121.1.7 DESC 'Boolean' )

   This syntax corresponds to the BOOLEAN ASN.1 type from [ASN.1].

They Here are the new one we need to implement the MetaSchema, described in the following table :

Desc

OID

Extensions

rules

nameOrNumericId objectClassType

1.3.6.1.4.1.18060.0.4.0.0.0 1

-

Should be one of those 3 strings :

  • ABSTRACT
  • STRUCTURAL
  • AUXILIARY

numericOid

Must be a valid Name or a valid OID

objectClassType

1.3.6.1.4.1.18060.0.4.0.0.1 2

-

Must be a valid numeric OID

attributeTypeUsage

1.3.6.1.4.1.18060.0.4.0.0.3

-

Should be one of those 4 strings :

  • userApplications
  • directoryOperation
  • distributedOperation
  • dSAOperation

number

Should be one of those 3 strings :

  • ABSTRACT
  • STRUCTURAL
  • AUXILIARY

oid

1.3.6.1.4.1.18060.0.4.0.0.2 4

-

Must be a valid OID number

oidLen usage

1.3.6.1.4.1.18060.0.4.0.0.3 5

-

Should be one of those 4 strings :

  • userApplications
  • directoryOperation
  • distributedOperation
  • Must be a valid numeric oid followed
    by a length constraint

    objectName

    1.3.6.1.4.1.18060.0.4.0.0.6

    -

    Must be a valid name a-zA-Z(a-zA-Z0-9-;)*

    dSAOperation

    MatchingRules

    The Matching rules are deifned defined in RFC 4512 :

    Code Blocknoformat
    <MatchingRuleDescription> ::= <LPAREN> <WSP>
             <numericoid> <MRParameters>
             <SP> "SYNTAX" <SP> <numericoid>
             <extensions> <WSP> <RPAREN>
    
    <MRParameters> ::=
        ( <SP> "NAME" <SP> <qdstrings> |
        <SP> "DESC" <SP> <qdstring> |
        <SP> "OBSOLETE" )+
    

    ...

    The ObjectClass element is described in RFC 4512 :

    Code Blocknoformat
    <ObjectClassDescription> ::=
              <LPAREN> <SP> <numericoid> <ocparameters> <extensions> <WSP> <RPAREN>
    
    // Each parameters should not be seen more than once
    <ocparameters>  ::=
        ( <SP> "NAME" <SP> <qdescrs>
        | <SP> "DESC" <SP> <qdstring>
        | <SP> "OBSOLETE"
        | <SP> "SUP" <SP> <oids>
        | <SP> ( "ABSTRACT" | "STRUCTURAL" | "AUXILIARY" )
        | <SP> "MUST" <SP> <oids>
        | <SP> "MAY" <SP> <oids> )+
    

    Here we have some elements which are already in the schema :

    Code Blocknoformat
    attributetype ( 2.5.4.0
    	NAME 'objectClass'
    	DESC 'RFC2256: object classes of the entity'
    	EQUALITY objectIdentifierMatch
    	SYNTAX 1.3.6.1.4.1.1466.115.121.1.38
     )
    
    Code Blocknoformat
    attributetype ( 2.5.4.13
    	NAME 'description'
    	DESC 'RFC2256: descriptive information'
    	EQUALITY caseIgnoreMatch
    	SUBSTR caseIgnoreSubstringsMatch
    	SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{1024}
     )
    
    Code Blocknoformat
    attributetype ( 2.5.4.41
    	NAME 'name'
    	DESC 'RFC2256: common supertype of name attributes'
    	EQUALITY caseIgnoreMatch
    	SUBSTR caseIgnoreSubstringsMatch
    	SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768}
     )
    

    ...

    Name

    OID

    Desc

    Sup

    Equality

    Ordering

    Substr

    Syntax

    SingleValue

    Collective

    m-oid

    1.3.6.1.4.1.18060.0.4.0.2.1

    The Object Identifier

    -

    OidMatch

    -

    -

    OID

    yes

    -

    m-name

    1.3.6.1.4.1.18060.0.4.0.2.2

    The Object name

    -

    caseIgnoreMatch

    -

    caseIgnoreSubstringsMatch

    1.3.6.1.4.1.1466.115.121.1.15objectName {32768}

    no

    -

    m-description

    1.3.6.1.4.1.18060.0.4.0.2.3

    The object description

    -

    caseIgnoreMatch

    -

    caseIgnoreSubstringsMatch

    1.3.6.1.4.1.1466.115.121.1.15{1024}

    yes

    -

    m-obsolete

    1.3.6.1.4.1.18060.0.4.0.2.4

    The type is obsolete

    -

    BooleanMatch

    -

    -

    Boolean

    yes

    -

    m-supObjectClass

    1.3.6.1.4.1.18060.0.4.0.2.5

    The list of superiors

    -

    NameOrOidMatch

    -

    -

    NameOrOid

    no

    -

    m-must

    1.3.6.1.4.1.18060.0.4.0.2.6

    The list of mandatory ATs

    -

    NameOrOidMatch

    -

    -

    NameOrOid

    no

    -

    m-may

    1.3.6.1.4.1.18060.0.4.0.2.7

    The list of authorized ATs

    -

    NameOrOidMatch

    -

    -

    NameOrOid

    no

    -

    m-typeObjectClass

    1.3.6.1.4.1.18060.0.4.0.2.8

    The ObjectClass type

    -

    TypeObjectClassMatch

    -

    -

    TypeObjectClass

    yes

    -

    m-extensionObjectClass

    1.3.6.1.4.1.18060.0.4.0.2.9

    An objectclass
    extension

    -

    caseIgnoreMatch

    -

    -

    1.3.6.1.4.1.1466.115.121.1.15{32768}

    no

    -

    ...

    The AttributeType element is described in RFC 4512 :

    Code Blocknoformat
    <AttributeTypeDescription> = <LPAREN> <WSP> <numericoid> <atparameters> <extensions> <WSP> <RPAREN>
    
    // Each parameters should not be seen more than once
    <atparameters>  ::=
        (<SP> "NAME" <SP> <qdescrs>
        | <SP> "DESC" <SP> qdstring
        | <SP> "OBSOLETE"
        | <SP> "SUP" <SP> <oid>
        | <SP> "EQUALITY" <SP> <oid>
        | <SP> "ORDERING" <SP> <oid>
        | <SP> "SUBSTR" <SP> <oid>
        | <SP> "SYNTAX" <SP> <noidlen>
        | <SP> "SINGLE-VALUE"
        | <SP> "COLLECTIVE"
        | <SP> "NO-USER-MODIFICATION"
        | <SP> "USAGE" <SP> <usage>)+
    

    Here we have some elements which are already in the schema :

    Code Blocknoformat
    attributetype ( 2.5.4.13
    	NAME 'description'
    	DESC 'RFC2256: descriptive information'
    	EQUALITY caseIgnoreMatch
    	SUBSTR caseIgnoreSubstringsMatch
    	SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{1024}
     )
    
    Code Blocknoformat
    attributetype ( 2.5.4.41
    	NAME 'name'
    	DESC 'RFC2256: common supertype of name attributes'
    	EQUALITY caseIgnoreMatch
    	SUBSTR caseIgnoreSubstringsMatch
    	SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768}
     )
    

    ...

    Name

    OID

    Desc

    Sup

    Equality

    Ordering

    Substr

    Syntax

    SingleValue

    Collective

    m-supAttributeType

    1.3.6.1.4.1.18060.0.4.0.2.10

    The list of superior

    -

    nameOrOidMatch

    -

    -

    NameOrOid

    yes

    -

    m-equality

    1.3.6.1.4.1.18060.0.4.0.2.11

    Equality matching rule

    -

    nameOrOidMatch

    -

    -

    NameOrOid

    yes

    -

    m-ordering

    1.3.6.1.4.1.18060.0.4.0.2.12

    Ordering matching rule

    -

    nameOrOidMatch

    -

    -

    NameOrOid

    yes

    -

    m-substr

    1.3.6.1.4.1.18060.0.4.0.2.13

    Substring matching rule

    -

    nameOrOidMatch

    -

    -

    NameOrOid

    yes

    -

    m-syntax

    1.3.6.1.4.1.18060.0.4.0.2.14

    The attribute syntax

    -

    nameOrOidMatch

    -

    -

    NameOrOid

    yes

    -

    m-singleValue

    1.3.6.1.4.1.18060.0.4.0.2.15

    The attribute is single valued

    -

    BooleanMatch

    -

    -

    Boolean

    yes

    -

    m-collective

    1.3.6.1.4.1.18060.0.4.0.2.16

    The attribute is collective

    -

    BooleanMatch

    -

    -

    Boolean

    yes

    -

    m-noUserModification

    1.3.6.1.4.1.18060.0.4.0.2.17

    The attribute is protected

    -

    BooleanMatch

    -

    -

    Boolean

    yes

    -

    m-usage

    1.3.6.1.4.1.18060.0.4.0.2.18

    Type of operation

    -

    operation

    -

    UsageMatch

    -

    -

    Usage

    yes

    -

    m-extensionAttribyteType

    1.3.6.1.4.1.18060.0.4.0.2.19

    Extension for attributeType

    -

    caseIgnoreMatch

    -

    -

    1.3.6.1.4.1.1466.115.121.1.15{32768}

    no

    -

    Ordering is useless, so is Substr.

    DITStructureRules

    The DITStructureRule element is described in RFC 4512 :

    No Format
    
    <DITStructureRule> = <LPAREN> <WSP> <ruleid> <dsrparameters> <extensions> <WSP> <RPAREN>
    
    // Each parameters should not be seen more than once
    <dsrparameters>  ::=
        ( <SP> "NAME" <SP> <qdescrs>
        | <SP> "DESC" <SP> qdstring
        | <SP> "OBSOLETE"
        | <SP> "FORM" <SP> <oid>
        | <SP> "SUP" <SP> <ruleids>) +
    

    The other ones must be defined. Here is a table grouping all the missing elements :

    Name

    OID

    Desc

    Sup

    Equality

    Ordering

    Substr

    Syntax

    SingleValue

    Collective

    m-ruleId

    1.3.6.1.4.1.18060.0.4.0.2.20

    The rule ID

    -

    ruleIdMatch

    -

    -

    RuleId

    yes

    -

    m-form 

    1.3.6.1.4.1.18060.0.4.0.2.21

    The name form associated
    with this DITStructure rule

    -

    oidMatch

    -

    -

    RuleIds

    yes

    -

    m-supDitStructureRule

    1.3.6.1.4.1.18060.0.4.0.2.22

    The list of superiors

    -

    ruleIdsMatch

    -

    -

    Oid

    no

    -

    m-extensionDITStructureRule

    1.3.6.1.4.1.18060.0.4.0.2.23

    Extensions for DITStructureRule

    -

    caseIgnoreMatch

    -

    -

    1.3.6.1.4.1.1466.115.121.1.15{32768}

    no

    -

    NameForms

    The NameForm element is described in RFC 4512 :

    No Format
    
    <NameForm> = <LPAREN> <WSP> <numericOid> <nfParameters> <extensions> <WSP> <RPAREN>
    
    // Each parameters should not be seen more than once
    <nfParameters>  ::=
        ( <SP> "NAME" <SP> <qdescrs>
        | <SP> "DESC" <SP> qdstring
        | <SP> "OBSOLETE"
        | <SP> "OC" <SP> <oid>
        | <SP> "MUST" <SP> <oids>
        | <SP> "MAY" <SP> <oids> ) +
    

    The other ones must be defined. Here is a table grouping all the missing elements :

    Name

    OID

    Desc

    Sup

    Equality

    Ordering

    Substr

    Syntax

    SingleValue

    Collective

    m-oc

    1.3.6.1.4.1.18060.0.4.0.2.24

    The structural ObjectClass

    -

    numericOidMatch UsageMatch

    -

    -

    Usage Oid

    yes

    -

    m-extensionAttribyteType extensionNameForm

    1.3.6.1.4.1.18060.0.4.0.2.19 25

    Extension Extensions for attributeType NameForm

    -

    caseIgnoreMatch

    -

    -

    1.3.6.1.4.1.1466.115.121.1.15{32768}

    no

    -

    Ordering is useless, so is Substr.

    ...

    DITContentRules

    The DITStructureRule DITContentRule element is described in RFC 4512 :

    Code Blocknoformat
    <DITStructureRule><DITContentRule> = <LPAREN> <WSP> <ruleid><numericOid> <dsrparameters><dcrParameters> <extensions> <WSP> <RPAREN>
    
    // Each parameters should not be seen more than once
    <dsrparameters><dcrParameters>  ::=
        ( <SP> "NAME" <SP> <qdescrs>
        | <SP> "DESC" <SP> qdstring
        | <SP> <qdescrs> "OBSOLETE"
        | <SP> "DESCAUX" <SP> qdstring<oids>
        | <SP> "OBSOLETEMUST" <SP> <oids>
        | <SP> "FORMMAY" <SP> <oid><oids>
        | <SP> "SUPNOT" <SP> <oids> <ruleids>) +
    

    The other ones must be defined. Here is a table grouping all the missing elements :

    Name

    OID

    Desc

    Sup

    Equality

    Ordering

    Substr

    Syntax

    SingleValue

    Collective

    m-ruleId

    1.3.6.1.4.1.18060.0.4.0.2.20

    The rule ID

    -

    ruleIdMatch

    -

    -

    RuleId

    yes

    -

    OID

    Desc

    Sup

    Equality

    Ordering

    Substr

    Syntax

    SingleValue

    Collective

    m-aux m-form 

    1.3.6.1.4.1.18060.0.4.0.2.21

    The name form associated
    with this DITStructure rule

    -

    26

    List of auxiliary ObjectClasses

    -

    numericOidMatch oidMatch

    -

    -

    RuleIds Oids

    yes no

    -

    m-supDitStructureRule not

    1.3.6.1.4.1.18060.0.4.0.2.22 27

    List of precluded attribute types The list of superiors

    -

    numericOidMatch ruleIdsMatch

    -

    -

    Oid Oids

    no

    -

    m-extensionDITStructureRule extensionDITContentRule

    1.3.6.1.4.1.18060.0.4.0.2.23 28

    Extensions for DITStructureRule DITContentRule

    -

    caseIgnoreMatch

    -

    -  

    1.3.6.1.4.1.1466.115.121.1.15{32768}

    no

    -

    ...

    MatchingRuleUses

    The NameForm MatchingRuleUse element is described in RFC 4512 :

    Code Blocknoformat
    <NameForm><MatchingRuleUse> = <LPAREN> <WSP> <numericOid> <nfParameters><mruParameters> <extensions> <WSP> <RPAREN>
    
    // Each parameters should not be seen more than once
    <nfParameters><mruParameters>  ::=
        ( <SP> "NAME" <SP> <qdescrs>
        | <SP> "DESC" <SP> qdstring
        | <SP> "OBSOLETE"
        | <SP> "OC" <SP> <oid>
        | <SP> "MUST" <SP> <oids>    OBSOLETE"
        | <SP> "MAYAPPLIES" <SP> <oids> ) +
    

    The other ones must be defined. Here is a table grouping all the missing elements :

    Name

    OID

    Desc

    Sup

    Equality

    Ordering

    Substr

    Syntax

    SingleValue

    Collective

    m-oc applies

    1.3.6.1.4.1.18060.0.4.0.2.24 29

    List of attribute types the matching rule applies to The structural ObjectClass

    -

    numericOidMatch

    -

    -

    Oid Oids

    yes no

    -

    m-extensionNameForm extensionMatchingRuleUse

    1.3.6.1.4.1.18060.0.4.0.2.25 30

    Extensions for NameForm DITContentRule

    -

    caseIgnoreMatch

    -

    -

     

    1.3.6.1.4.1.1466.115.121.1.15{32768}

    no yes

    -

    Description of currently existing schemas

    ...