Назад | Перейти на главную страницу

Невозможно увидеть 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) я не смог найти никаких атрибутов или классов объектов, которые я определил. Кто-нибудь может мне помочь?

Похоже, вы пытаетесь 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