【问题标题】:javax.naming.CommunicationException LDAP SSL InitialLdapContextjavax.naming.CommunicationException LDAP SSL InitialLdapContext
【发布时间】:2020-04-16 07:33:38
【问题描述】:

我在通过 SSL 使用 LDAP 时遇到了奇怪的问题。要进入应用程序,我们有登录窗口,用户在其中输入他的密码和用户名。如果他输入正确的,一切正常。但如果他输入错误,就会出现奇怪的问题。我收到有关错误密码的错误消息,但这仍然可以。但是如果他再次尝试输入,这次是一个正确的密码/用户名(不关闭应用程序)我有以下异常:

javax.naming.CommunicationException: simple bind failed: X.X.X:636 [Root exception is javax.net.ssl.SSLException: java.lang.IllegalStateException: stream has already been operated upon or closed] 

用户最终需要重新启动应用程序才能输入正确的用户名/密码才能登录。 有代码块:

Hashtable<String, String> t = new Hashtable<>();
.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
            t.put(Context.PROVIDER_URL, "ldap://x.x.x:636"); // SSL Server
            t.put(Context.SECURITY_PROTOCOL, "ssl");
            t.put(Context.SECURITY_AUTHENTICATION, "simple");
            t.put(Context.SECURITY_PRINCIPAL, userDn);
            t.put(Context.SECURITY_CREDENTIALS, password);

return new InitialLdapContext(t, null);

正如我在帖子中提到的,最后一行导致异常。

【问题讨论】:

    标签: java ldap


    【解决方案1】:

    我已经解决了。 LDAP连接失败后需要重新导入证书。

    【讨论】:

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