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