【问题标题】:How to define objectclass o and ou in LDAP directory server schema?如何在 LDAP 目录服务器模式中定义 objectclass o 和 ou?
【发布时间】:2013-10-28 14:59:05
【问题描述】:

问题 1:

我正在使用 apacheds 2.0 嵌入式 ldap 服务器。服务启动时出现问题。有什么问题?

错误信息:

09:40:43.657 [main] ERROR o.a.d.a.l.m.entry.DefaultAttribute - ERR_04487_ATTRIBUTE_IS_SINGLE_VALUED The attribute 'dc' is single valued, we cant add no more values into it
09:40:43.658 [main] WARN  o.a.d.s.c.n.NormalizationInterceptor - The Rdn 'dc=example' is not present in the entry
Exception in thread "main" org.apache.directory.api.ldap.model.exception.LdapException: ERR_04269 OBJECT_CLASS for OID ou does not exist!
    at org.apache.directory.api.ldap.model.schema.registries.DefaultSchemaObjectRegistry.lookup(DefaultSchemaObjectRegistry.java:176)
    at org.apache.directory.api.ldap.schemamanager.impl.DefaultSchemaManager.lookupObjectClassRegistry(DefaultSchemaManager.java:1656)

Java 代码:

Partition examplePartition = addPartition("example", "dc=example,dc=com");

// Index some attributes on the apache partition
addIndex(examplePartition, "objectClass", "ou", "uid");

    // And start the service
service.startup();

// Inject the context entry for dc=foo,dc=com partition if it does not already exist
try {
  service.getAdminSession().lookup(examplePartition.getSuffixDn());
}
catch (LdapException lnnfe) {
  Dn dn = new Dn("dc=example,dc=com");
  Entry entry = service.newEntry(dn);
  entry("objectClass", "top", "domain", "extensibleObject", "ou", "o", "mail");
  entry("dc", "example", "com");
  // entry("ou", "people");
  // entry("o", "exampleinc");
  service.getAdminSession().add(entry);
}

问题 2: 服务启动后,我想导入 ldif 文件。我的文件正确吗?我需要在文件中设置 OU 和 O 还是应该在服务代码中设置?有什么例子吗?

ldif 文件:

dn: ou=people,dc=example,dc=com
ou: people
objectclass: top
objectclass: organizationalUnit

dn: o=exampleinc,dc=example,dc=com
o: exampleinc
objectclass: top
objectclass: organization

dn: cn=some guy,ou=people,o=exampleinc,dc=example,dc=com
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
CN: some guy
sn: some_guy
givenName: someguy
name: some guy
uid: some_guy
mail: some_guy@example.com

【问题讨论】:

    标签: java directory ldap jndi apacheds


    【解决方案1】:

    第二个问题你可以试试:

    dn: ou=people,dc=example,dc=com
    ou: people
    objectclass: top
    objectclass: organizationalUnit
    
    dn: ou=exampleinc,ou=people,dc=example,dc=com
    ou: exampleinc
    objectclass: top
    objectclass: organization
    
    dn: cn=some guy,ou=exampleinc,ou=people,dc=example,dc=com
    

    【讨论】:

      【解决方案2】:

      我认为你的问题是这一行: entry("dc", "example", "com");

      正如错误所指出的,它不是多值的。

      语法上没有线索,但我想它可能更像: entry("dc", "dc=example,dc=com");

      否则

      entry("dc", "example.com");

      【讨论】:

        【解决方案3】:

        我认为您需要为每个组件单独调用 entry():

        entry("dc", "example");
        entry("dc", "com");
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-03-12
          • 1970-01-01
          • 2023-04-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-11-27
          相关资源
          最近更新 更多