2

我遇到了以下问题。有工作的 OpenDJ 服务器,使用 UnboundID LDAP SKD for Java 进行连接。我学会了如何搜索特定条目,但是获取给定条目的“entryUUID”属性值的方法是什么?OpenDJ 说这是“不可编辑的属性”之一,我在使用 getAttributes() 方法的 SearchResultEntry 对象中看不到任何这些属性。

我的意思是:

public String getUserUUID(String cn) {
   SearchResult sr = connection.search(dn, SearchScope.SUB, Filter.createEqualityFilter("cn",          cn));
   if (sr.getEntryCount() > 0){     
       return sr.getSearchEntries().get(0).getAttributeValue("entryUUID");
   }
}

但是在 SearchResultEntry 的属性图中没有参数“不可编辑的参数”

4

2 回答 2

2

EntryUUID 是不可编辑的 OPERATIONAL 属性。使用 LDAP,只有在搜索时才返回操作属性,前提是您特别要求它们。在您的情况下,搜索请求未指定请求的属性,因此意味着返回所有用户属性。我很确定 UnboundID SDK 有一个搜索方法,它接受要返回的属性列表。

问候,卢多维奇

于 2014-05-11T20:57:33.570 回答
1

EntryUUID是一个操作属性,默认情况下只返回用户属性。为此,您必须明确请求操作属性。您可以使用ALL_OPERATIONAL_ATTRIBUTES.


以下方法适用于 UnboundId LDAP SDK for Java 2.3.8。

public String getUserUUID(String cn) throws LDAPSearchException {
    SearchResult sr = connection.search(dn, SearchScope.SUB, Filter.createEqualityFilter("cn",cn), ALL_OPERATIONAL_ATTRIBUTES);
    if (sr.getEntryCount() > 0){
        return sr.getSearchEntries().get(0).getAttributeValue("entryUUID");
    }
    return "";
}
于 2016-12-14T08:53:33.143 回答