【问题标题】:Adding Custom Attributes to ApacheDS Server向 ApacheDS 服务器添加自定义属性
【发布时间】:2013-11-26 18:25:26
【问题描述】:

我使用 ApacheDS 服务器作为 LDAP 服务器。我创建了一个自定义属性以在我定义的 LDAP 结构中使用。我创建了一个模式,并在该模式内定义了一个 ObjectClass 和一个名为 dateOfBirth 的属性。我导出了 Schema 并将其导入到 ApacheDS 的 DIT 中。架构已导入,可以查看 dateOfBirth 属性。

但是,当我尝试添加它时,我收到一条警告:

Warning according to the schema attribute dateOfBirth is not allowed.

Do you still want to add the new value?

dateOfBirth 用于存储有关人员的信息。 LDAP 中的 Person 对象类称为 inetOrgPerson ObjectClass。添加 dateOfBirth 以便使用它的最佳方法是什么?

【问题讨论】:

    标签: java ldap apacheds ldif


    【解决方案1】:

    无需定义dateOfBirth 属性。辅助对象类naturalPerson - 在RFC2985 中描述 - 已经允许使用generalizedTimeSyntax 的这个属性。将naturalPerson objectClass 添加到您的条目中,然后添加符合generalizedTimeSyntaxdateOfBirth 属性。

    dn: cn=myPerson,dc=example,dc=com
    objectClass: top
    objectClass: inetOrgPerson
    objectClass: naturalPerson
    dateOfBirth: 20121115121912.810Z
    

    等等。

    更新:来自 RC2985 的示例 objectClass 定义。

    dn: cn=schema
    objectClass: top
    objectClass: ldapSubentry
    objectClass: subSchema
    objectClasses: ( 1.2.840.113549.1.9.24.2 NAME 'naturalPerson'
      SUP top
      AUXILIARY
      MAY ( emailAddress $
        unstructuredName $
        unstructuredAddress $
        dateOfBirth $
        placeOfBirth $
        gender $
        countryOfCitizenship $
        countryOfResidence $
        pseudonym $
        serialNumber )
      X-ORIGIN 'RFC 2985' ) 
    

    【讨论】:

    • 不要低估这个答案背后的智慧。尽可能使用标准的 objectClass,这通常是“所有时间”;)
    • 感谢您的回复。实际上,作为公司要求的一部分,我需要创建某些属性。所以从这个意义上说,我将不得不创建一些其他属性。如何克服描述中显示的警告?这些新属性根本不在 ApacheDS 中。
    • 另外,我似乎在 ApacheDS 中找不到这个 naturalPerson 对象类。你确定它在 ApacheDS 中吗?
    • ApacheDS 可能不支持所有 LDAP 标准定义的现成属性。检查 RFC2985 以获取所需的架构定义,只需将所需的属性类型和对象类添加到架构中。
    • 嗯,这就是我所做的。如上所述,我已经添加了架构并将其导入到 ou=schema.xml 中。可以搜索和查看。但是,当尝试添加它时,会出现上述警告。不知道如何解决这个问题。 Google 上的内容不多。
    【解决方案2】:

    您可以使用 Apache directory studio 在 Apache DS 中添加自定义对象和属性(应该不存在)。

    步骤是

    1. 打开 Apache Directory Studio。
    2. 转到 Schema Editor 透视图。
    3. 右键单击项目窗格并创建新的架构项目。
    4. 选择离线/在线并给出项目名称。
    5. 打开连接
    6. 右键单击架构窗格并创建具有唯一名称的新架构(例如 test123)。
    7. 在架构下可以为这些属性创建新的属性和对象。(查看现有对象以供参考)
    8. 完成所有操作后,可以导出为 .ldif 文件(比如说 test.ldif)
    9. 现在转到 LDAP 浏览器 透视图。
    10. ou=schema 对象上右键,然后单击导入为 LDIF。
    11. 导入从架构项目中导出的 LDIF 文件(步骤 8)。
    12. 成功完成并刷新 ou=schema 对象即可看到添加的对象。

    【讨论】:

    • 我已按照这些步骤操作并且可以看到架构,但是当我尝试创建新条目时,我导入的 objectClasses 不会作为选项出现。我需要做什么?
    • 当你在对象类弹出窗口中。请单击可用对象类文本框附近的重新加载按钮。现在你可以看到对象了。
    猜你喜欢
    • 2012-02-18
    • 1970-01-01
    • 2013-03-04
    • 2015-03-09
    • 2018-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多