我正在开发具有LDAP连接功能的应用程序。到目前为止,我们只使用Open JLDAP库来执行LDAP搜索和身份验证。我们有许多客户成功使用它,使用未加密和SSL连接连接到Active Directory和Oracle Internet Directory。
我们最近有一个使用IBM Tivoli Directory的客户端,当处于标准模式(非SSL)时,OpenLDAP库可以很好地连接到此服务器,但是当使用SSL时,连接将在执行搜索时断开连接。绑定和读取工作正常。
我们得到的错误是:
LDAPException:连接丢失等待ldap.host:389(91)连接错误的结果 java.io.EOFException:BERDecoder:decode:标识符中的EOF
我认为这是JLDAP的一个问题,所以我用UnboundId LDAP库替换了我们的代码,除了我遇到类似的问题。只有在执行搜索时才会断开连接,只在SSL下。
作为测试,我安装了Tivoli Directory的试用版,并启用了SSL。 JLDAP和UnBoundID库都可以针对我的实例正常工作。
Tivoli上是否有任何配置选项会导致仅在SSL下删除连接?
我有一个LDAP工具(jxplorer),可以通过SSL连接和搜索客户端LDAP服务器。我认为jxplorer使用JNDI库进行LDAP连接。
我想知道在移植我的LDAP代码以使用JNDI LDAP代码之前还有什么我可以尝试的......(可能仍有同样的问题)。
欢迎提示......
感谢。
答案 0 :(得分:0)
服务器正在断开连接。在SSL模式下查看其超时设置。
JXplorer使用自己的LDAP库,而不是JNDI。
答案 1 :(得分:0)
我找到了自己的答案。 Java 1.6_18到Java 1.6_28之间的JNDI库中的Java SSL实现存在问题,在最近的补丁中,Java 1.7中也出现了这个问题。
答案 2 :(得分:0)
我见过同样的例外:
LDAPException: Connection lost waiting for results from ldap.host:636 (91) Connect Error java.io.EOFException: BERDecoder: decode: EOF in Identifier
尝试使用非SSL套接字工厂连接到SSL端口时。