Tomcat LDAP JNDI领域异常

时间:2015-08-18 16:38:23

标签: tomcat

我在使用LDAP服务器进行身份验证时,Apache Tomcat的行为方式存在问题。

当我第一次尝试登录时,一切都很好。如果我将连接空闲一段时间,然后只是注销(出于测试目的)并重新登录,它会抛出下面提到的异常,但是成功登录。为什么会这样?

请注意,如果我在未注销的情况下继续使用该应用程序,则不会发生这种情况。

这是我的服务器配置

Server version: Apache Tomcat/8.0.24
Server built:   Jul 1 2015 20:19:55 UTC
Server number:  8.0.24.0
OS Name:        Linux
OS Version:     2.6.18-238.el5
Architecture:   amd64
JVM Version:    1.7.0_67-b01
JVM Vendor:     Oracle Corporation

以下是具有异常跟踪的控制台输出。由于我退出,前两行是输出,然后当我尝试重新登录时创建异常(最终成功)

2015-08-18 15:47:14.493 DEBUG 28842 --- [io-8180-exec-10] c.c.c.a.c.BaseAceConsoleApplication      : Cleared cookie JSESSIONID, value= 1157DD8C066BBC384E7C2BAD380476A8
2015-08-18 15:47:14.494 DEBUG 28842 --- [io-8180-exec-10] c.c.c.a.c.BaseAceConsoleApplication      : Cleared cookie JSESSIONIDSSO, value= 3800C322B28A40CB74A5CDBC3AAD46C5
18-Aug-2015 15:47:18.780 INFO [http-nio-8180-exec-7] org.apache.catalina.realm.JNDIRealm.authenticate Exception performing authentication. Retrying...
 javax.naming.CommunicationException [Root exception is java.net.SocketException: Connection reset]; remaining name 'DC=companyname,DC=com'
    at com.sun.jndi.ldap.LdapClient.authenticate(LdapClient.java:162)
    at com.sun.jndi.ldap.LdapCtx.connect(LdapCtx.java:2740)
    at com.sun.jndi.ldap.LdapCtx.ensureOpen(LdapCtx.java:2648)
    at com.sun.jndi.ldap.LdapCtx.ensureOpen(LdapCtx.java:2622)
    at com.sun.jndi.ldap.LdapCtx.doSearch(LdapCtx.java:1942)
    at com.sun.jndi.ldap.LdapCtx.searchAux(LdapCtx.java:1847)
    at com.sun.jndi.ldap.LdapCtx.c_search(LdapCtx.java:1772)
    at com.sun.jndi.toolkit.ctx.ComponentDirContext.p_search(ComponentDirContext.java:386)
    at com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.search(PartialCompositeDirContext.java:356)
    at com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.search(PartialCompositeDirContext.java:339)
    at javax.naming.directory.InitialDirContext.search(InitialDirContext.java:267)
    at org.apache.catalina.realm.JNDIRealm.getUserBySearch(JNDIRealm.java:1681)
    at org.apache.catalina.realm.JNDIRealm.getUser(JNDIRealm.java:1517)
    at org.apache.catalina.realm.JNDIRealm.getUser(JNDIRealm.java:1465)
    at org.apache.catalina.realm.JNDIRealm.authenticate(JNDIRealm.java:1406)
    at org.apache.catalina.realm.JNDIRealm.authenticate(JNDIRealm.java:1264)
    at org.apache.catalina.realm.CombinedRealm.authenticate(CombinedRealm.java:192)
    at org.apache.catalina.realm.LockOutRealm.authenticate(LockOutRealm.java:180)
    at org.apache.catalina.authenticator.FormAuthenticator.authenticate(FormAuthenticator.java:245)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:453)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
    at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:617)
    at org.apache.catalina.authenticator.SingleSignOn.invoke(SingleSignOn.java:240)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:518)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1091)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:668)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1527)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1484)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Thread.java:745)
Caused by: java.net.SocketException: Connection reset
    at java.net.SocketInputStream.read(SocketInputStream.java:196)
    at java.net.SocketInputStream.read(SocketInputStream.java:122)
    at java.io.BufferedInputStream.fill(BufferedInputStream.java:235)
    at java.io.BufferedInputStream.read1(BufferedInputStream.java:275)
    at java.io.BufferedInputStream.read(BufferedInputStream.java:334)
    at com.sun.jndi.ldap.Connection.run(Connection.java:853)
    ... 1 more

2015-08-18 15:47:19.150 DEBUG 28842 --- [nio-8180-exec-1] c.c.c.a.c.s.AceConsoleUserDetailsService : Looking up user azafar200
2015-08-18 15:47:19.154 DEBUG 28842 --- [nio-8180-exec-1] c.c.c.a.c.s.AceConsoleUserDetailsService : Found user azafar200
2015-08-18 15:47:19.155  INFO 28842 --- [nio-8180-exec-1] o.s.b.a.audit.listener.AuditListener     : AuditEvent [timestamp=Tue Aug 18 15:47:19 UTC 2015, principal=azafar200, type=AUTHENTICATION_SUCCESS, data={details=org.springframework.security.web.authentication.preauth.PreAuthenticatedGrantedAuthoritiesWebAuthenticationDetails@ffff4c9c: RemoteIpAddress: 10.21.138.140; SessionId: 182B7DDB80CABA34C93DD536871339B4; []}]

0 个答案:

没有答案