OpenDJ与UnboundId LDAP SDK for Java

时间:2014-04-18 08:20:50

标签: java ldap unboundid-ldap-sdk opendj

我遇到了以下问题。 有工作的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的属性地图中没有参数“不可编辑的参数”

2 个答案:

答案 0 :(得分:2)

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

此致 朱利

答案 1 :(得分: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 "";
}