0

情况:

我实际上是从 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”存在,我不希望它为空;)

问题:

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

谢谢你的时间!

4

1 回答 1

0

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 现在有一个用于此目的的解析器。

于 2013-09-11T16:17:27.723 回答