当前位置: 首页 > 知识库问答 >
问题:

在ldap中搜索用户时出现问题

邬宜然
2023-03-14

我使用的是运行在一台服务器上的open LDAP,它运行在10.0.26.x IP上,而我的客户端运行在IP 10.0.25.x上,防火墙位于两者之间,但端口389是打开的,处于侦听状态。所以我面临的问题是,客户机关闭了客户机服务器,之后我必须每6个小时重新启动客户机,然后它可以正常工作一段时间,然后再次给出同样的问题。

Hashtable<String, String> envMap = new Hashtable<>();
    envMap.put(Context.INITIAL_CONTEXT_FACTORY, initContextFactory);
    envMap.put(Context.PROVIDER_URL, providerUrl);
    envMap.put(Context.SECURITY_AUTHENTICATION, securityAuthentication);
    envMap.put(Context.SECURITY_PRINCIPAL, userDN);
    envMap.put(Context.SECURITY_CREDENTIALS, password);
    DirContext userCtx = new InitialDirContext(envMap);

SearchControls controls = new SearchControls();
        controls.setSearchScope(SearchControls.SUBTREE_SCOPE);
        String filter = MessageFormat.format(Constants.LDAP_PERSON_FILTER, attrKey, attrValue);
        NamingEnumeration<SearchResult> userResults = dirReaderctx.search(Constants.LDAP_DOMAIN_NAME,
                filter, controls);
        if (userResults.hasMore()) {
            searchResult = userResults.next();
            return searchResult;
        }

我得到的例外是:

共有1个答案

穆宾白
2023-03-14

不知道异常,有一点是错误的,那就是您没有在NamingEnumeration上调用Close()方法,因此您泄漏了资源。

如果它工作了一段时间,然后停止工作,这很可能是资源耗尽异常。

NamingEnumeration<SearchResult> userResults = dirReaderctx.search(Constants.LDAP_DOMAIN_NAME,
        filter, controls);
if (userResults.hasMore()) {
    searchResult = userResults.next();
    userResults.close(); // <-- add this line
    return searchResult;
}
 类似资料:
  • LDAP新手。我们LDAP的排列方式是人和组。这些人拥有用户信息,如姓名、uid和邮件。组有组名和multiple member字段,该字段的值为cn=first Last,cn=People,dc=comic,dc=com,列出了属于组的成员。 目前从userid和password开始,执行两个搜索:1)通过在People base domain上搜索uid=value来获取用户,然后从用户获得

  • 我正在使用LDAP从我的应用程序连接到AD服务器。我成功地通过了身份验证,但是当我搜索一个用户时,它会抛出一个异常,在acl_read:instanceType中的LDAP错误代码为32。 谢谢

  • 我安装并配置了OpenLDAP服务器,配置如下: 我测试了这个简单的Java LDAP客户机,以便通过发送用户名和密码对用户进行身份验证:

  • 问题内容: 我正在玩LDAP和Java搜索。这是我的一个简单组织的LDIF导出 如何运行Java代码段以从LDAP服务器获取所有用户?我的Apache DS目录服务器上没有身份验证设置。 问题答案:

  • 我已经创建了一个新的用户组,并授予读取、写入、删除类型和属性的权限。在这里,我观察到我无法通过该用户的backoffice访问方面搜索配置。我不想将“admingroup”分配给用户。是否有任何类型或属性,我可以将访问权限分配给该用户,以便用户可以运行索引。 下面是我用来分配角色的弹劾:-

  • 问题内容: 我正在使用JNDI连接到LDAP活动目录,并且我想搜索名称包含搜索字符串的用户,因此我的搜索方法如下: 这是我与LDAP建立连接的方式: LDAP凭证如下: 为什么搜索需要那么多时间来检索数据?由于广告中只有285个联系人,我可以做些什么来加快搜索速度吗? 问题答案: 解决方案是更改为