情况:
我实际上是从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;)
问题:
是否有一些'简单'的方法来检索所有替代名称的列表,给定一个属性的名称?
谢谢你的时间!
答案 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现在有了一个解析器。