Я добавил новую схему к своему 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-записи, когда ни один из объектовClasses, который вы дали, не поддерживает эту запись с помощью 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
и либо 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