【问题标题】:OpenDJ with UnboundId LDAP SDK for JavaOpenDJ 与 UnboundId LDAP SDK for Java
【发布时间】:2014-04-18 08:20:50
【问题描述】:

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

【问题讨论】:

  • 不知道为什么这被否决 - 似乎是一个合理的问题......?

标签: java ldap unboundid-ldap-sdk opendj


【解决方案1】:

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

问候, 卢多维奇

【讨论】:

    【解决方案2】:

    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 "";
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多