
Agregué un esquema a OpenLDAP a través de cn=conf. El esquema se tomó de WSO2 Identity Server, pero se modificó para aplicarlo a cn=conf y OpenLDAP.
El esquema se cargó sin errores, pero no funciona. Después de consultar cn=schemes,cn=conf para todos los esquemas cargados, descubrí que mi esquema no tiene las declaraciones olcObjectClasses que definen el nombre y el contenido del esquema. Esto era parte de los archivos LDIF que cargué (sin errores), pero por alguna razón no está presente en la configuración en vivo.
Ahora estoy intentando agregarlo después del hecho, pero aparece un error:
ldapmodify: invalid format (line 5) entry: "cn={4}wso2Person,cn=schema,cn=config"
El archivo que estoy intentando cargar tiene este aspecto:
dn: cn={4}wso2Person,cn=schema,cn=config
changetype: modify
add: olcObjectClasses
olcObjectClasses: ( 0.3.6.1.4.1.37505.1.1
NAME 'wso2Person'
DESC 'wso2Person'
SUP inetOrgPerson
STRUCTURAL
MAY ( gender $ country $ nickName $ timeZone $ dateOfBirth $ role $ im $ url $ otherPhone $ privatePersonalIdentifier $ profileconfiguration $ prefferedLanguage)
)
Al realizar una consulta: ldapsearch -Y EXTERNAL -H ldapi:/// -b cn=schema,cn=config
la sección sobre mi esquema se ve así:
# {4}wso2Person, schema, config
dn: cn={4}wso2Person,cn=schema,cn=config
objectClass: olcSchemaConfig
cn: {4}wso2Person
olcAttributeTypes: {0}( 1.3.6.1.4.1.37505.1.2 NAME 'gender' EQUALI
TY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX
1.3.6.
1.4.1.1466.115.121.1.15{1024} )
olcAttributeTypes: {1}( 1.3.6.1.4.1.37505.1.3 NAME 'country'
EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX
1.3.6.1.4.1.1466.115.121.1.15{1024} )
olcAttributeTypes: {2}( 1.3.6.1.4.1.37505.1.4 NAME 'nickName' EQUA
LITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX
1.3.6.1.4.1.1466.115.121.1.15{1024} )
olcAttributeTypes: {3}( 1.3.6.1.4.1.37505.1.5 NAME 'timeZone'
EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX
1.3.6.1.4.1.1466.115.121.1.15{1024} )
olcAttributeTypes: {4}( 1.3.6.1.4.1.37505.1.6 NAME 'dateOfBirth'
EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX
1.3.6.1.4.1.1466.115.121.1.15{1024} )
olcAttributeTypes: {5}( 1.3.6.1.4.1.37505.1.7 NAME 'role' EQUALITY
caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.
4.1.1466.115.121.1.15{1024} )
olcAttributeTypes: {6}( 1.3.6.1.4.1.37505.1.8 NAME 'im' EQUALITY
caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX
1.3.6.1.4.1.1466.115.121.1.15{1024} )
olcAttributeTypes: {7}( 1.3.6.1.4.1.37505.1.9 NAME 'url' EQUALITY
caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX
1.3.6.1.4.1.1466.115.121.1.15{1024} )
olcAttributeTypes: {8}( 1.3.6.1.4.1.37505.1.10 NAME 'otherPhone'
EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX
1.3.6.1.4.1.1466.115.121.1.15{1024} )
olcAttributeTypes: {9}( 1.3.6.1.4.1.37505.1.11 NAME
'privatePersonalIdentifier' EQUALITY caseIgnoreMatch SUBSTR
caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{1024} )
olcAttributeTypes: {10}( 1.3.6.1.4.1.37505.1.12 NAME
'profileconfiguration' EQUALITY caseIgnoreMatch SUBSTR
caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{1024} )
olcAttributeTypes: {11}( 1.3.6.1.4.1.37505.1.13 NAME
'prefferedLanguage' EQUALITY caseIgnoreMatch SUBSTR
caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{1024} )
¿Qué estoy haciendo mal?
Respuesta1
Lo resolví.
Todo lo que sigue a olcObjectClasses: debe leerse como una sola línea, pero no fue así. Esto se debió a la forma en que espacié las líneas en el archivo ldif. A continuación se muestra el archivo de trabajo. (agregar un espacio delante de una línea indica que es una continuación de la línea anterior)
dn: cn={4}wso2Person,cn=schema,cn=config
changetype: modify
add: olcObjectClasses
olcObjectClasses: ( 0.3.6.1.4.1.37505.1.1
NAME 'wso2Person'
DESC 'wso2Person'
SUP inetOrgPerson
STRUCTURAL
MAY ( gender $ country $ nickName $ timeZone $ dateOfBirth $ role $ im $
url $ otherPhone $ privatePersonalIdentifier $ profileconfiguration $
prefferedLanguage))
La razón por la que no se leyó cuando agregué el resto del esquema fue debido a un salto de línea adicional en un lugar inadecuado. Había una línea vacía entre la adición de olcObjectClasses y el resto del contenido LDIF. ver a continuación.
[..]
olcAttributeTypes: {11}( 1.3.6.1.4.1.37505.1.13 NAME
'prefferedLanguage' EQUALITY caseIgnoreMatch SUBSTR
caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{1024} )
olcObjectClasses: ( 0.3.6.1.4.1.37505.1.1
[...]