Не удается увидеть objectClass из пользовательской схемы

Я добавил новую схему на свой ldap-сервер, но когда мне нужно создать запись с пользовательским objectClass и пользовательскими атрибутами, он не видит мои пользовательские вещи. Это просто эксперимент, поэтому OID не важны.

Мой файл custom.schema.ldif

dn: cn=deployment,cn=schema,cn=config
objectClass: olcSchemaConfig
cn: deployment

olcAttributeTypes: ( 1000.1.1.1 NAME ( 'user' )
    DESC 'Username of the deployer'
    EQUALITY caseExactMatch
    SUBSTR caseExactSubstringsMatch
    SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )

olcAttributeTypes: ( 1000.1.1.2 NAME ( 'app' )
    DESC 'Application name'
    EQUALITY caseExactMatch
    SUBSTR caseExactSubstringsMatch
    SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )

olcAttributeTypes: ( 1000.1.1.3 NAME ( 'port' )
    DESC 'Port of the application'
    EQUALITY integerMatch
    ORDERING integerOrderingMatch
    SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 )

olcAttributeTypes: ( 1000.1.1.4 NAME  'available'
    DESC 'App is available'
    SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 )

olcObjectClasses: ( 1000.2.1.1 NAME 'deploymentClass'
    DESC 'Deployment class'
    MUST ( user $ app $ port $ available )
    STRUCTURAL )

Затем я добавил это с:

ldapadd -w123 -x -D "cn=admin,cn=config" -f custom.schema.ldif

После перезапуска сервера я попытался создать записи с этим ldif:

dn: ou=deployment,dc=las,dc=com
objectClass: organizationalUnit
ou: deployment

dn: cn=app1_user1,ou=deployment,dc=las,dc=com
objectClass: deploymentClass
cn: app1_user1
user: user1
app: app1
port: 8888
available: 0

После попытки добавить это:

ldapadd -x -D "cn=admin,dc=las,dc=com" -w123 -f deployment.base.ldif -c

Я получил:

adding new entry "cn=app1_user1,ou=deployment,dc=las,dc=com"
ldap_add: Invalid syntax (21)
    additional info: objectClass: value #0 invalid per syntax

После попытки изучить каталог LDAP с помощью браузера LDAP (JXplorer) я не смог найти какие-либо атрибуты или класс объектов, которые я определил. Кто-нибудь может мне помочь?

1 ответ

Похоже, вы пытаетесь cn значение для вашей записи ldap, когда ни один из объектных классов, которым вы предоставили эту запись, не поддерживает использование cn.

Вы можете попытаться изменить свою схему или изменить саму запись.

dn: app=app1+user=user1,ou=deployment,dc=las,dc=com
objectClass: deploymentClass
user: user1
app: app1
port: 8888
available: 0

В качестве альтернативы, если вы используете core.schema, memberOf overlay и либо nis.schema или же rfc2307bis.schema Вы можете приготовить что-нибудь без дополнительной схемы.

dn: cn=app1+uid=user1,ou=deployment,dc=las,dc=com
objectClass: ipService
objectClass: uidObect
uid: user1
cn: app1
ipServicePort: 8888
ipServiceProtocol: TCP

dn: cn=available-deployments,ou=deployment,dc=las,dc=com
objectClass: groupOfNames
cn: available-deployments
member: cn=app1+uid=user1,ou=deployment,dc=las,dc=com
Другие вопросы по тегам