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

javax.naming.CommunicationException:简单绑定失败[重复]

韩宜春
2023-03-14

当尝试使用简单的LDAP应用程序连接到LDAP服务器时,我得到一个错误,上面写着“simple bind Failed”。我想这和某种绑定有关。我在一个不同应用程序的属性文件中有一个绑定属性,但不确定如何将该属性传递给这个程序。

import javax.naming.directory.*;   
import javax.naming.*;   
import java.util.Vector;   
import java.util.Enumeration;   
import java.util.Properties;   
public class SearchLDAP {   
    public static void main(String[] args) {   
        String base = "";   

        String filter = "(objectclass=*)";   

        Properties env = new Properties();   

        env.put(DirContext.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory");   
        env.put(DirContext.PROVIDER_URL,"ldaps://misguided.com.au:343"); 

        try {   

            System.out.println("11");
            DirContext dc = new InitialDirContext(env);
            System.out.println("22");

            SearchControls sc = new SearchControls();   
            sc.setSearchScope(SearchControls.OBJECT_SCOPE);   
            NamingEnumeration ne = null;   

            ne = dc.search(base, filter, sc);   

            while (ne.hasMore()) {   
                SearchResult sr = (SearchResult) ne.next();   
                System.out.println(sr.toString()+"\n");   
            }   
            dc.close();   
        } catch (NamingException nex) {   
            System.err.println("Error: " + nex.getMessage());   
            nex.printStackTrace();
        }   
    }   
}  

错误

11
Error: simple bind failed: XXXX.XXX.XXXX.net:808
javax.naming.CommunicationException: simple bind failed: misguided.com.au:343 [Root exception is javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target]
    at com.sun.jndi.ldap.LdapClient.authenticate(LdapClient.java:215)
    at com.sun.jndi.ldap.LdapCtx.connect(LdapCtx.java:2740)
    at com.sun.jndi.ldap.LdapCtx.<init>(LdapCtx.java:316)
    at com.sun.jndi.ldap.LdapCtxFactory.getUsingURL(LdapCtxFactory.java:193)

共有1个答案

万坚壁
2023-03-14

这个问题现在有点老了,但相当普遍。试图简单地解释一下:

发生此问题的原因是JRE密钥库中缺少SSL证书。

对于LDAPS或HTTPS连接,java运行库需要使用相应的SSL证书来创建与另一端服务器的安全连接。

keytool –import -file adserv.crt -keystore <location to keystore> 

当它丢失时,你会得到一个:

"sun.security.provider.certpath.SunCertPathBuilderException: 
unable to find valid certification path to requested target". 

因此,您需要做的只是在建立安全连接之前安装证书。

 类似资料:
  • 我是Maven的新手,运行Eclipse Neon,m2e插件Maven 3.3.9: 在保存时生成此错误

  • 主要内容:1 简单数据绑定的映射关系,2 简单数据绑定的示例数据绑定API用于使用属性访问器或使用注解将JSON与POJO(普通Java对象)进行转换。它有两种类型。 简单数据绑定:在List,String,数值类型,布尔值和NULL对象之间来回转换JSON。 完全数据绑定:将JSON与任何Java类型相互转换。 ObjectMapper读取/写入两种类型的数据绑定的JSON。数据绑定是最方便的方法,类似于XML的JAXB解析器。 1 简单数据绑定的映射关

  • 我想学习如何编写JUnit测试,但我完全失败了。 这是我的测试: 问题是这个简单的断言已经失败了。返回的列表是空的。我知道,我对这一切都不熟悉,但是从我的角度来看,失败是如此出乎意料,以至于我没有办法解决这个问题。 以下是全部代码(不太多): 要测试的功能就是这个,我知道它是有效的: 实际上,我只是想学习如何编写这样的测试,但是几天来我一直没有写出来。有相当多的例子和解释,但是不管我做什么尝试,我

  • 我正在尝试将我的Java应用程序导出到Mac。该应用程序基于编译器兼容级别1.7。我尝试了不同的方法来捆绑应用程序。 1)Eclipse。我可以用来在Eclipse上导出的JVM的最新版本是1.6*。 2)Maven。在Maven上似乎也存在同样的问题。当我使用以下命令时,它显示了一个版本相关的错误。 Maven命令 Maven返回的错误 而且

  • 我正在将一个kotlin库绑定到xamarin android,绑定并解决所有错误后,我得到了一个意外错误,没有任何解释或异常原因, JAVALang.NoClassDefFoundError:“未能解析:Landroidx/viewbinding/viewbinding;” 这是我得到的堆栈痕迹: MAYActivity.cs:40在Android。App.活动。n_OnCreate_Landr

  • 我是spring Boot的初学者,我尝试使用thymeleaf表单进行简单登录,它接受输入的名称和密码,并将其与存储在id为1的数据库中的用户的名称和密码进行比较。我的控制器是: 我的html表单如下: 有什么问题吗 控制器无法重新识别对象th: ject="${user}",因此我将此方法更改为: 对此: 现在一切顺利