Search code examples
importldapschemaopenldapldif

Error when importing LDAP schema: OID could not be expanded


I'm trying to import a schema into openLDAP. The schema comes from an installer that uses an an older version of OpenDS so I've have to make some adjustments. Here is the original schema LDIF:

dn: cn=schema
objectClass: top
objectClass: ldapSubentry
objectClass: subschema
cn: schema
attributeTypes: ( udcid-oid NAME 'udcid' DESC 'UDC_IDENTIFIER' EQUALITY caseIgnoreMatch ORDERING caseIgnoreOrderingMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE USAGE userApplications X-ORIGIN 'SGHE Defined' )
objectClasses: ( lpSghePerson-oid NAME 'lpSghePerson' DESC 'Luminis Person' SUP inetOrgPerson STRUCTURAL MUST ( objectClass $ cn $ sn ) MAY ( jpegPhoto $ x500UniqueIdentifier $ initials $ givenName $ audio $ manager $ displayName $ postalAddress $ postalCode $ postOfficeBox $ physicalDeliveryOfficeName $ title $ description $ uid $ businessCategory $ udcid $ pager $ mobile $ roomNumber $ ou $ mail $ o $ photo $ registeredAddress $ internationaliSDNNumber $ x121Address $ facsimileTelephoneNumber $ preferredDeliveryMethod $ labeledURI $ destinationIndicator $ homePostalAddress $ telexNumber $ teletexTerminalIdentifier $ telephoneNumber $ userPKCS12 $ userPassword $ seeAlso $ userCertificate $ departmentNumber $ carLicense $ employeeType $ preferredLanguage $ employeeNumber $ userSMIMECertificate $ street $ homePhone $ l $ secretary $ st ) X-ORIGIN 'SGHE Defined' )

Here is what I have adjusted it to:

dn: cn=lpSghePerson,cn=schema,cn=config
objectClass: olcSchemaConfig
cn: lpSghePerson
olcAttributeTypes: ( udcid-oid NAME 'udcid' DESC 'UDC_IDENTIFIER' EQUALITY caseIgnoreMatch ORDERING caseIgnoreOrderingMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE USAGE userApplications X-ORIGIN 'SGHE Defined' )
olcObjectClasses: ( lpSghePerson-oid NAME 'lpSghePerson' DESC 'Luminis Person' SUP inetOrgPerson STRUCTURAL MUST ( objectClass $ cn $ sn ) MAY ( jpegPhoto $ x500UniqueIdentifier $ initials $ givenName $ audio $ manager $ displayName $ postalAddress $ postalCode $ postOfficeBox $ physicalDeliveryOfficeName $ title $ description $ uid $ businessCategory $ udcid $ pager $ mobile $ roomNumber $ ou $ mail $ o $ photo $ registeredAddress $ internationaliSDNNumber $ x121Address $ facsimileTelephoneNumber $ preferredDeliveryMethod $ labeledURI $ destinationIndicator $ homePostalAddress $ telexNumber $ teletexTerminalIdentifier $ telephoneNumber $ userPKCS12 $ userPassword $ seeAlso $ userCertificate $ departmentNumber $ carLicense $ employeeType $ preferredLanguage $ employeeNumber $ userSMIMECertificate $ street $ homePhone $ l $ secretary $ st ) X-ORIGIN 'SGHE Defined' )

I am getting this error: ldap_add: Other (e.g., implementation specific) error (80) additional info: olcAttributeTypes: OID could not be expanded: "udcid-oid"

I'm a little confused. I think I am getting this error because it is not using a numericoid but I don't know what that would be. Is that correct? I looked at an older test server that is openDS and used the original schema and the OID is not numeric, it is text. Is this just a difference between openDS and openLDAP or something? Does openLDAP require it to be numeric?


Solution

  • You're right: The error message is caused by not using numeroids in the schema descriptions. OpenLDAP is more strict with this than other LDAP server implementations.

    If you cannot find appropriate numeroids you would have to assign your own OIDs.

    See also: OpenLDAP FAQ: How do I obtain an OID arc for my use?

    BTW: Textual names are interpreted as OID macros which have to be defined with directive objectidentifier in slapd.conf or attribute olcObjectIdentifier in dynamic config entry cn=schema,cn=config. Hence the error message "OID could not be expanded".