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

            Bug ID: 66068
           Summary: Asynchronous request processing changes IP behind
                    RemoteIpValve
           Product: Tomcat 9
           Version: 9.0.62
          Hardware: All
                OS: All
            Status: NEW
          Severity: major
          Priority: P2
         Component: Catalina
          Assignee: dev@tomcat.apache.org
          Reporter: igor.tymoshc...@gmail.com
  Target Milestone: -----

Created attachment 38287
  --> https://bz.apache.org/bugzilla/attachment.cgi?id=38287&action=edit
example project

Hi guys

Request that is made to the Tomcat 9 server that is behind load balancer and
with RemoteIpValve enabled.

RemoteIpValve is configured in server.xml exactly before access log valve as
follows:
   <Valve className="org.apache.catalina.valves.RemoteIpValve"
       remoteIpHeader="x-forwarded-for"
       protocolHeader="x-forwarded-proto"
   />

In the case request is processed in synchronous way the right ip of caller is
received from request.getRemoteAddr()

In the case request is moved to asynchronous mode by request.startAsync(
request, response ) and is processed on the same thread the right ip of client
is received from asyncContext.getRequest().getRemoteAddr()

In the case request is moved to asynchronous mode by request.startAsync(
request, response ) and is processed on the OTHER thread the ip of client is
NOT received from asyncContext.getRequest().getRemoteAddr(), but ip of proxy
server.

In all cases access log prints right client ip.

Example source code is attached both with compiled .war file.
Example request is made to:
   http://localhost/remoteipvalve-bug-example/
with the following headers:
   X-Forwarded-For: 1.2.3.4
   X-Forwarded-Proto: 443

Example logger result:
17-May-2022 15:47:19.623 WARNING [http-nio-80-exec-53] RootServlet.doGet
Request ip before async start: 1.2.3.4
17-May-2022 15:47:19.623 WARNING [http-nio-80-exec-53] RootServlet.doGet
Request ip after async started: 1.2.3.4)
17-May-2022 15:47:19.625 WARNING [Thread-67] RootServlet$1.run Request ip after
async started: 127.0.0.1)

-- 
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