From 2aa084822661dd349cc66784c875a2fbd68ca8ae Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Thu, 5 Mar 2020 15:45:44 +0100 Subject: [PATCH] evaluate X-Forwarded-For header upon replica registration so as to obtain the true replica client IP address --- .../com/sap/sse/replication/impl/ReplicationServlet.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ReplicationServlet.java b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ReplicationServlet.java index e054d325c83..03557bf2aee 100755 --- a/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ReplicationServlet.java +++ b/java/com.sap.sse.replication/src/com/sap/sse/replication/impl/ReplicationServlet.java @@ -340,9 +340,12 @@ public class ReplicationServlet extends AbstractHttpServlet { } private ReplicaDescriptor getReplicaDescriptor(HttpServletRequest req) throws UnknownHostException { - InetAddress ipAddress = InetAddress.getByName(req.getRemoteAddr()); - UUID uuid = UUID.fromString(req.getParameter(SERVER_UUID)); - String additional = req.getParameter(ADDITIONAL_INFORMATION); + final String forwardedFor = req.getHeader("X-Forwarded-For"); // could have come through a load balancer / reverse proxy + final InetAddress ipAddress = forwardedFor != null && !forwardedFor.trim().isEmpty() + ? InetAddress.getByName(forwardedFor) + : InetAddress.getByName(req.getRemoteAddr()); + final UUID uuid = UUID.fromString(req.getParameter(SERVER_UUID)); + final String additional = req.getParameter(ADDITIONAL_INFORMATION); final String[] replicableIdsAsStrings = req.getParameter(REPLICABLES_IDS_AS_STRINGS_COMMA_SEPARATED).split(","); return new ReplicaDescriptorImpl(ipAddress, uuid, additional, replicableIdsAsStrings); }