【问题标题】:Java retrieve alternative Ldap Attribute namesJava 检索替代的 Ldap 属性名称
【发布时间】:2013-09-11 10:26:04
【问题描述】:

情况:

我实际上是从 Java 应用程序中的 Ldap 源读取联系信息。找到的 SearchResult 包含我想要的所有值,这没有问题。 一旦 SearchResult 可用,我需要读取它的属性 - 要读取的属性由用户在配置文件中指定。

问题,举例说明:

用户指定读取属性“stateOrProvinceName”。 Ldap 将其作为“st”处理。返回的 Searchresult 将包含一个 key=>value 对,其中 'st' 作为键。如果我查找“stateOrProvinceName”,这当然会找不到。我想要那个'st'键-但我不想手动编码替代Ldap-Field名称的mappnig。相关代码部分:

Attributes ldapAttributes = foundContact.getAttributes();
Attribute wantedAttribute = ldapAttributes.get(ldapFieldName);

解释:'foundContact' 是 SearchResult,我将其属性存储在 'ldapAttributes' 中。 “ldapFieldName”是配置文件中指定的用户名(如“stateOrProvinceName”),我尝试获取此属性并将其存储在“wantedAttribute”中。如果不包含“stateOrProvinceName”,“wantedAttribute”当然为空。但由于 'st' 存在,我不希望它为 null ;)

问题:

在给定一个属性名称的情况下,是否有一些“简单”的方法可以检索所有替代名称的列表?

感谢您的宝贵时间!

【问题讨论】:

    标签: java attributes ldap jndi


    【解决方案1】:

    rfc'ed 方法是在条目的 subschemaSubentry 引用的架构定义中定位属性定义。 (RFC 4512 中的 p32)

    例如OpenLDAP 将此信息存储在 cn=Subschema 中。不幸的是,此条目使用您首先必须自己解析的属性定义格式:

    attributetype ( 2.5.4.8 
        NAME ( 'st' 'stateOrProvinceName' ) 
        DESC 'RFC2256: state or province which this object resides in' 
        SUP name ) 
    

    Iirc/也许 UnboundID 的 LDAP SDK 现在有一个用于此目的的解析器。

    【讨论】:

      猜你喜欢
      • 2010-12-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-02
      • 2010-11-23
      • 2011-10-04
      • 1970-01-01
      相关资源
      最近更新 更多