Я добавил новую схему на свой сервер 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