Java检索备用Ldap属性名称

时间:2013-09-11 10:26:04

标签: java attributes ldap jndi

情况:

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

问题,在一个例子中解释:

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

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

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

问题:

是否有一些'简单'的方法来检索所有替代名称的列表,给定一个属性的名称?

谢谢你的时间!

1 个答案:

答案 0 :(得分:0)

rfc的方法是在条目的subschemaSubentry引用的模式定义中定位属性定义。 (RFC 4512中的p32)

E.g。 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现在有了一个解析器。