https://bz.apache.org/bugzilla/show_bug.cgi?id=63550

            Bug ID: 63550
           Summary: LDAP non standard port leads to JNDIRealm erratic
                    behaviour
           Product: Tomcat 9
           Version: 9.0.x
          Hardware: All
                OS: All
            Status: NEW
          Severity: normal
          Priority: P2
         Component: Catalina
          Assignee: dev@tomcat.apache.org
          Reporter: eugene.ad...@gmail.com
  Target Milestone: -----

When configuring a JNDIRealm with a non default port, and without alternate URL
:

   <Realm className="org.apache.catalina.realm.JNDIRealm" debug="10"
    useStartTls="true"
    connectionURL="ldap://X.X.X.X:1389";
    userPattern="cn={0},ou=users,dc=mycorp,dc=com"
    roleBase="ou=groups,dc=mycorp,dc=com"
    roleSubtree="true"
    roleNested="true"
    roleName="cn"
    roleSearch="(uniqueMember={0})" />

We can see Tomcat still trying to open connections to the default port (389),
moreover on localhost although the realm is configured with a non localhost IP.

Here is the network capture showing this behaviour, the two last packets are
themselves the problem :

01:23:26.672885 IP X.X.X.X.11486 > X.X.X.X.1389: Flags [S], seq 1196755961, win
43690, options [mss 65495,sackOK,TS val 2631880516 ecr 0,nop,wscale 7], length
0
01:23:26.672966 IP X.X.X.X.1389 > X.X.X.X.11486: Flags [S.], seq 4093902768,
ack 1196755962, win 43690, options [mss 65495,sackOK,TS val 2631880516 ecr
2631880516,nop,wscale 7], length 0
01:23:26.673035 IP X.X.X.X.11486 > X.X.X.X.1389: Flags [.], ack 1, win 342,
options [nop,nop,TS val 2631880516 ecr 2631880516], length 0
01:23:26.680284 IP X.X.X.X.11486 > X.X.X.X.1389: Flags [P.], seq 1:61, ack 1,
win 342, options [nop,nop,TS val 2631880524 ecr 2631880516], length 60
01:23:26.680319 IP X.X.X.X.1389 > X.X.X.X.11486: Flags [.], ack 61, win 342,
options [nop,nop,TS val 2631880524 ecr 2631880524], length 0
01:23:26.680614 IP X.X.X.X.1389 > X.X.X.X.11486: Flags [P.], seq 1:15, ack 61,
win 342, options [nop,nop,TS val 2631880524 ecr 2631880524], length 14
01:23:26.680814 IP X.X.X.X.11486 > X.X.X.X.1389: Flags [.], ack 15, win 342,
options [nop,nop,TS val 2631880524 ecr 2631880524], length 0
01:23:26.957182 IP X.X.X.X.11486 > X.X.X.X.1389: Flags [P.], seq 61:233, ack
15, win 342, options [nop,nop,TS val 2631880800 ecr 2631880524], length 172
01:23:26.959576 IP X.X.X.X.1389 > X.X.X.X.11486: Flags [P.], seq 15:1010, ack
233, win 350, options [nop,nop,TS val 2631880803 ecr 2631880800], length 995
01:23:26.959748 IP X.X.X.X.11486 > X.X.X.X.1389: Flags [.], ack 1010, win 357,
options [nop,nop,TS val 2631880803 ecr 2631880803], length 0
01:23:27.073508 IP X.X.X.X.11486 > X.X.X.X.1389: Flags [P.], seq 233:500, ack
1010, win 357, options [nop,nop,TS val 2631880917 ecr 2631880803], length 267
01:23:27.113251 IP X.X.X.X.1389 > X.X.X.X.11486: Flags [.], ack 500, win 359,
options [nop,nop,TS val 2631880957 ecr 2631880917], length 0
01:23:27.113291 IP X.X.X.X.11486 > X.X.X.X.1389: Flags [P.], seq 500:506, ack
1010, win 357, options [nop,nop,TS val 2631880957 ecr 2631880957], length 6
01:23:27.113305 IP X.X.X.X.1389 > X.X.X.X.11486: Flags [.], ack 506, win 359,
options [nop,nop,TS val 2631880957 ecr 2631880957], length 0
01:23:27.128492 IP X.X.X.X.11486 > X.X.X.X.1389: Flags [P.], seq 506:591, ack
1010, win 357, options [nop,nop,TS val 2631880972 ecr 2631880957], length 85
01:23:27.128512 IP X.X.X.X.1389 > X.X.X.X.11486: Flags [.], ack 591, win 359,
options [nop,nop,TS val 2631880972 ecr 2631880972], length 0
01:23:27.128927 IP X.X.X.X.1389 > X.X.X.X.11486: Flags [P.], seq 1010:1101, ack
591, win 359, options [nop,nop,TS val 2631880972 ecr 2631880972], length 91
01:23:27.129081 IP X.X.X.X.11486 > X.X.X.X.1389: Flags [.], ack 1101, win 357,
options [nop,nop,TS val 2631880972 ecr 2631880972], length 0
01:23:27.141642 IP 127.0.0.1.58499 > 127.0.0.1.389: Flags [S], seq 2317515753,
win 43690, options [mss 65495,sackOK,TS val 2631880985 ecr 0,nop,wscale 7],
length 0
01:23:27.141675 IP 127.0.0.1.389 > 127.0.0.1.58499: Flags [R.], seq 0, ack
2317515754, win 0, length 0

Tomcat logs the corresponding connection reset like this

Jul 06, 2019 8:27:17 PM org.apache.catalina.realm.JNDIRealm authenticate
SEVERE: Exception performing authentication
javax.naming.CommunicationException: localhost:389 [Root exception is
java.net.ConnectException: Connection refused (Connection refused)]
  at com.sun.jndi.ldap.Connection.<init>(Connection.java:216)
  at com.sun.jndi.ldap.LdapClient.<init>(LdapClient.java:137)
  at com.sun.jndi.ldap.LdapClient.getInstance(LdapClient.java:1614)
  at com.sun.jndi.ldap.LdapCtx.connect(LdapCtx.java:2746)
  at com.sun.jndi.ldap.LdapCtx.<init>(LdapCtx.java:319)
  at com.sun.jndi.ldap.LdapCtxFactory.getInitialContext(LdapCtxFactory.java:70)
  at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:684)
  at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:313)
  at javax.naming.InitialContext.init(InitialContext.java:244)
  at javax.naming.ldap.InitialLdapContext.<init>(InitialLdapContext.java:154)
  at
org.apache.catalina.realm.JNDIRealm.createTlsDirContext(JNDIRealm.java:2585)
  at org.apache.catalina.realm.JNDIRealm.createDirContext(JNDIRealm.java:2487)
  at org.apache.catalina.realm.JNDIRealm.open(JNDIRealm.java:2471)
  at org.apache.catalina.realm.JNDIRealm.authenticate(JNDIRealm.java:1322)
  at
org.apache.catalina.authenticator.BasicAuthenticator.authenticate(BasicAuthenticator.java:127)
  at
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:566)
  at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169)
  at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
  at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:1025)
  at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:1025)
  at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
  at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:445)
  at
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1137)
  at
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:637)
  at
org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:317)
  at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
  at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
  at
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
  at java.lang.Thread.run(Thread.java:745)
Caused by: java.net.ConnectException: Connection refused (Connection refused)
  at java.net.PlainSocketImpl.socketConnect(Native Method)
  at
java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
  at
java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
  at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
  at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
  at java.net.Socket.connect(Socket.java:589)
  at sun.reflect.GeneratedMethodAccessor25.invoke(Unknown Source)
  at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  at java.lang.reflect.Method.invoke(Method.java:498)
  at com.sun.jndi.ldap.Connection.createSocket(Connection.java:350)
  at com.sun.jndi.ldap.Connection.<init>(Connection.java:203)
  ... 28 more

None of my config files mention port 389, it's coming from nowhere.

I tested both Tomcat 7 and 9 and got the the same result.

-- 
You are receiving this mail because:
You are the assignee for the bug.
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to