
Я добавил схему в OpenLDAP через cn=conf. Схема была взята из WSO2 Identity Server, но была изменена для применения к cn=conf и OpenLDAP.
Схема загружена без ошибок, но не работает. После запроса cn=schemes,cn=conf для всех загруженных схем я обнаружил, что моя схема не имеет операторов olcObjectClasses, которые определяют имя и содержимое схемы. Это было частью загруженных мной LDIF-файлов (без ошибок), но по какой-то причине отсутствует в live conf.
Я сейчас пытаюсь добавить его постфактум, но получаю ошибку:
ldapmodify: invalid format (line 5) entry: "cn={4}wso2Person,cn=schema,cn=config"
Файл, который я пытаюсь загрузить, выглядит так:
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)
)
При запросе: ldapsearch -Y EXTERNAL -H ldapi:/// -b cn=schema,cn=config
раздел о моей схеме выглядит так:
# {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} )
Что я делаю не так?
решение1
Я решил эту проблему.
Все после olcObjectClasses: должно читаться как одна строка, но это не так. Это было из-за того, как я разместил строки в файле ldif. Ниже приведен рабочий файл. (добавление пробела перед строкой указывает на то, что она является продолжением предыдущей строки)
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))
Причина, по которой он не был прочитан, когда я добавил остальную часть схемы, была в дополнительном разрыве строки в неподходящем месте. Между добавлением olcObjectClasses и остальной частью содержимого LDIF была пустая строка. см. ниже.
[..]
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
[...]