Error adding entry to linux openldap server via System.DirectoryServices.Protocols

Last post 05-07-2008 11:21 AM by werner.reiche. 0 replies.

Sort Posts:

  • Error adding entry to linux openldap server via System.DirectoryServices.Protocols

    05-07-2008, 11:21 AM

    I have a linux based openldap server on which I have implemented the mhs schema defined in rfc 2294 (included at end of post).

     I have an object class mHSPerson:

    objectclass ( oc-mhs-person NAME 'mHSPerson' SUP top MUST ( mHSSurname ) MAY ( mHSGivenName $ mHSInitials $ mHSGenerationQualifier ) X-ORIGIN 'RFC2294' )

    The problem I have is that I cannot add a DN for a person including given names without first adding a person with a DN with no given name.  This forces me into one of two undesirable situations.  I either have to create a person/surname branch which is of person class or create one person as a child of the other.  i.e.

    case 1:

    dn sn=smith,ou=abc,o=aaa,p=xxx,a=yyy,c=ca  with attributes sn=smith

    dn gn=john,sn=smith,ou=abc,o=aaa,p=xxx,a=yyy,c=ca with attributes gn=john,sn=smith

    dn gn=mary,sn=smith,ou=abc,o=aaa,p=xxx,a=yyy,c=ca with attributes gn=mary,sn=smith

    case 2:

    dn sn=smith,ou=abc,o=aaa,p=xxx,a=yyy,c=ca  with attributes gn=john,sn=smith

    dn gn=mary,sn=smith,ou=abc,o=aaa,p=xxx,a=yyy,c=ca with attributes gn=mary,sn=smith

    What I really would like to do is create: 

    dn gn=john,sn=smith,ou=abc,o=aaa,p=xxx,a=yyy,c=ca with attributes gn=john,sn=smith

    dn gn=mary,sn=smith,ou=abc,o=aaa,p=xxx,a=yyy,c=ca with attributes gn=mary,sn=smith

    I can do this using the linux slapadd, but when I try to do this via .net, it reports an object does not exist error, presumably because it expects a parent branch for sn=smith,ou=abc,o=aaa,p=xxx,a=yyy,c=ca to exist.  From my understanding of LDAP and the directory server architecture, this requirement should not exist.  Is there a problem with the schema I have defined? 

    Code To Add directory entry

    string AddDn = "mHSGivenName=john," +

    "mHSSurname=smith," +

    "mHSOrganizationalUnitName=cyzz," +

    "mHSOrganizationName=c," +

    "pRMDName=navcan," +

    "aDMDName=icao," +

    "countryName=ca," +

    "dc=amhs";

    DirectoryAttribute[] AttrArr = new DirectoryAttribute[3];

    AttrArr[0] = new DirectoryAttribute("objectClass", "mHSPerson");

    AttrArr[1] = new DirectoryAttribute("mHSSurname", "smith");

    AttrArr[2] = new DirectoryAttribute("mHSGivenName", "john");

    AddRequest AddRqst = new AddRequest(AddDn, AttrArr);

    AddResponse AddRsp = (AddResponse)LdapConn.SendRequest(AddRqst);

    Complete Schema File: 

    #------------------------------------------------------------------------------

    # amhs_rfc2294.schema - Ubitech Aeronautical Message Handling System LDAP

    # Schema. Based on RFC 2294.

    #

    # Notes:

    #

    # Abbreviations:

    # oc object class

    # at attribute type

    # mhs message handling system

    #

    #------------------------------------------------------------------------------

    # Module MTSUpperBounds (X.411:06/1999)

    #

    # joint-iso-itu-t identifier:

    # 6 mhs

    # 3 mts

    # 0 modules

    # 3 upper-bounds

    # 1 version-1999

    #

    #------------------------------------------------------------------------------

    # RFC 2294

    #

    # mhs-ds identifer:

    # 1 iso

    # 3 org

    # 6 dod

    # 1 internet

    # 4 private

    # 1 enterprises

    # 453 isode-consortium

    # 7 mhs-ds

    #

    #------------------------------------------------------------------------------

    # Field lengths used from MTSUpperBounds (X.411:06/1999)

    #

    # ub-domain-name-length INTEGER ::= 16

    # ub-organization-name-length INTEGER ::= 64

    # ub-organizational-unit-name-length INTEGER ::= 32

    # ub-common-name-length INTEGER ::= 64

    # ub-x121-address-length INTEGER ::= 16

    # ub-domain-defined-attribute-type-length INTEGER ::= 8

    # ub-domain-defined-attribute-value-length INTEGER ::= 128

    # ub-terminal-id-length INTEGER ::= 24

    # ub-numeric-user-id-length INTEGER ::= 32

    # ub-country-name-numeric-length INTEGER ::= 3

    # ub-surname-length INTEGER ::= 40

    # ub-given-name-length INTEGER ::= 16

    # ub-initials-length INTEGER ::= 5

    # ub-generation-qualifier-length INTEGER ::= 3

    #

    #------------------------------------------------------------------------------

    # Syntaxes used from RFC 2252

    #

    # 1.3.6.1.4.1.1466.115.121.1.15 Directory String

    # 1.3.6.1.4.1.1466.115.121.1.26 IA5 String

    # 1.3.6.1.4.1.1466.115.121.1.36 Numeric String

    #

    #------------------------------------------------------------------------------

    objectIdentifier mhs-ds 1.3.6.1.4.1.453.7

    objectIdentifier tree mhs-ds:2

    objectIdentifier oc tree:1

    objectIdentifier at tree:2

    objectIdentifier oc-admd oc:1

    objectIdentifier oc-mhs-country oc:2

    objectIdentifier oc-mhs-domain-defined-attribute oc:3

    objectIdentifier oc-mhs-named-object oc:4

    objectIdentifier oc-mhs-organization oc:5

    objectIdentifier oc-mhs-organizational-unit oc:6

    objectIdentifier oc-mhs-person oc:7

    objectIdentifier oc-mhs-x121 oc:8

    objectIdentifier oc-prmd oc:9

    objectIdentifier oc-mhs-terminal-id oc:10

    objectIdentifier oc-mhs-numeric-user-id oc:11

    objectIdentifier at-admd-name at:1

    objectIdentifier at-mhs-common-name at:2

    objectIdentifier at-mhs-domain-defined-attribute-type at:3

    objectIdentifier at-mhs-domain-defined-attribute-value at:4

    objectIdentifier at-mhs-numeric-country-name at:5

    objectIdentifier at-mhs-organization-name at:6

    objectIdentifier at-mhs-organizational-unit-name at:7

    objectIdentifier at-unused-xx01 at:8

    objectIdentifier at-unused-xx02 at:9

    objectIdentifier at-prmd-name at:10

    objectIdentifier at-unused-xx03 at:11

    objectIdentifier at-x121-address at:12

    objectIdentifier at-mhs-terminal-id-name at:13

    objectIdentifier at-mhs-numeric-user-id-name at:14

    objectIdentifier at-mhs-surname at:15

    objectIdentifier at-mhs-given-name at:16

    objectIdentifier at-mhs-initials at:17

    objectIdentifier at-mhs-generation-qualifier at:18

    #------------------------------------------------------------------------------

    # MHS Country Object

    attributetype ( at-mhs-numeric-country-name

    NAME 'mHSNumericCountryName'

    EQUALITY numericStringMatch

    SYNTAX 1.3.6.1.4.1.1466.115.121.1.36{3}

    SINGLE-VALUE )

    objectclass ( oc-mhs-country

    NAME 'mHSCountry'

    SUP country

    MAY ( mHSNumericCountryName )

    X-ORIGIN 'RFC2294' )

    #------------------------------------------------------------------------------

    # MHS ADMD Object

    attributetype ( at-admd-name

    NAME 'aDMDName'

    EQUALITY caseIgnoreMatch

    SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{16} )

    objectclass ( oc-admd

    NAME 'aDMD'

    SUP top

    MUST ( aDMDName )

    X-ORIGIN 'RFC2294' )

    #------------------------------------------------------------------------------

    # MHS PRMD Object

    attributetype ( at-prmd-name

    NAME 'pRMDName'

    EQUALITY caseIgnoreMatch

    SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{16} )

    objectclass ( oc-prmd

    NAME 'pRMD'

    SUP top

    MUST ( pRMDName )

    X-ORIGIN 'RFC2294' )

    #------------------------------------------------------------------------------

    # MHS Organisation Object

    attributetype ( at-mhs-organization-name

    NAME 'mHSOrganizationName'

    EQUALITY caseIgnoreMatch

    SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{64} )

    objectclass ( oc-mhs-organization

    NAME 'mHSOrganization'

    SUP top

    MUST ( mHSOrganizationName )

    X-ORIGIN 'RFC2294' )

    #------------------------------------------------------------------------------

    # MHS Organisational Unit Object

    attributetype ( at-mhs-organizational-unit-name

    NAME 'mHSOrganizationalUnitName'

    EQUALITY caseIgnoreMatch

    SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32} )

    objectclass ( oc-mhs-organizational-unit

    NAME 'mHSOrganizationalUnit'

    SUP top

    MUST ( mHSOrganizationalUnitName )

    X-ORIGIN 'RFC2294' )

    #------------------------------------------------------------------------------

    # MHS Person Object

    attributetype ( at-mhs-surname

    NAME 'mHSSurname'

    EQUALITY caseIgnoreMatch

    SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{40}

    SUP surname )

    attributetype ( at-mhs-given-name

    NAME 'mHSGivenName'

    EQUALITY caseIgnoreMatch

    SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{16}

    SUP givenName )

    attributetype ( at-mhs-initials

    NAME 'mHSInitials'

    EQUALITY caseIgnoreMatch

    SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{5}

    SUP initials )

    attributetype ( at-mhs-generation-qualifier

    NAME 'mHSGenerationQualifier'

    EQUALITY caseIgnoreMatch

    SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{3}

    SUP generationQualifier )

    objectclass ( oc-mhs-person

    NAME 'mHSPerson'

    SUP top

    MUST ( mHSSurname )

    MAY ( mHSGivenName $ mHSInitials $ mHSGenerationQualifier )

    X-ORIGIN 'RFC2294' )

    #------------------------------------------------------------------------------

    attributetype ( at-mhs-common-name

    NAME 'mHSCommonName'

    EQUALITY caseIgnoreMatch

    SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{64} )

    objectclass ( oc-mhs-named-object

    NAME 'mHSNamedObject'

    SUP top

    MUST ( mHSCommonName )

    X-ORIGIN 'RFC2294' )

    #------------------------------------------------------------------------------

    attributetype ( at-x121-address

    NAME 'mHSX121Address'

    EQUALITY caseIgnoreMatch

    SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{16} )

    objectclass ( oc-mhs-x121

    NAME 'mHSX121'

    SUP top

    MUST ( mHSX121Address )

    X-ORIGIN 'RFC2294' )

    #------------------------------------------------------------------------------

    attributetype ( at-mhs-domain-defined-attribute-type

    NAME 'mHSDomainDefinedAttributeType'

    EQUALITY caseIgnoreMatch

    SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{8}

    SINGLE-VALUE )

    attributetype ( at-mhs-domain-defined-attribute-value

    NAME 'mHSDomainDefinedAttributeValue'

    EQUALITY caseIgnoreMatch

    SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{128}

    SINGLE-VALUE )

    objectclass ( oc-mhs-domain-defined-attribute

    NAME 'mHSDomainDefinedAttribute'

    SUP top

    MUST ( mHSDomainDefinedAttributeType $ mHSDomainDefinedAttributeValue )

    X-ORIGIN 'RFC2294' )

    #------------------------------------------------------------------------------

    attributetype ( at-mhs-terminal-id-name

    NAME 'mHSTerminalIDName'

    EQUALITY caseIgnoreMatch

    SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{24} )

    objectclass ( oc-mhs-terminal-id

    NAME 'mHSTerminalID'

    SUP top

    MUST ( mHSTerminalIDName )

    X-ORIGIN 'RFC2294' )

    #------------------------------------------------------------------------------

Page 1 of 1 (1 items)