diff --git a/li.strolch.websocket/src/main/java/li/strolch/websocket/WebSocketClient.java b/li.strolch.websocket/src/main/java/li/strolch/websocket/WebSocketClient.java index f1088db24..c2cdf9134 100644 --- a/li.strolch.websocket/src/main/java/li/strolch/websocket/WebSocketClient.java +++ b/li.strolch.websocket/src/main/java/li/strolch/websocket/WebSocketClient.java @@ -144,7 +144,7 @@ public class WebSocketClient implements MessageHandler.Whole { try { StrolchSessionHandler sessionHandler = RestfulStrolchComponent.getInstance().getSessionHandler(); - this.certificate = sessionHandler.validate(authToken); + this.certificate = sessionHandler.validate(authToken, WebSocketRemoteIp.get()); if (!this.certificate.getUsername().equals(username)) { logger.error("Invalid authentication for " + username); close(CloseReason.CloseCodes.UNEXPECTED_CONDITION, "Invalid authentication"); diff --git a/li.strolch.websocket/src/main/java/li/strolch/websocket/WebSocketFilter.java b/li.strolch.websocket/src/main/java/li/strolch/websocket/WebSocketFilter.java index 95d3f8a91..fb9161a19 100644 --- a/li.strolch.websocket/src/main/java/li/strolch/websocket/WebSocketFilter.java +++ b/li.strolch.websocket/src/main/java/li/strolch/websocket/WebSocketFilter.java @@ -20,8 +20,9 @@ public class WebSocketFilter implements Filter { throws IOException, ServletException { HttpServletRequest httpRequest = (HttpServletRequest) request; - logger.info("Remote IP: " + getRemoteIp(httpRequest) + ": " + httpRequest.getMethod() + " " + httpRequest - .getRequestURI()); + String remoteIp = getRemoteIp(httpRequest); + logger.info("Remote IP: " + remoteIp + ": " + httpRequest.getMethod() + " " + httpRequest.getRequestURI()); + WebSocketRemoteIp.set(remoteIp); chain.doFilter(request, response); } diff --git a/li.strolch.websocket/src/main/java/li/strolch/websocket/WebSocketRemoteIp.java b/li.strolch.websocket/src/main/java/li/strolch/websocket/WebSocketRemoteIp.java new file mode 100644 index 000000000..7efddd580 --- /dev/null +++ b/li.strolch.websocket/src/main/java/li/strolch/websocket/WebSocketRemoteIp.java @@ -0,0 +1,14 @@ +package li.strolch.websocket; + +public class WebSocketRemoteIp { + + private static final ThreadLocal threadLocal = ThreadLocal.withInitial(() -> "notset"); + + public static String get() { + return threadLocal.get(); + } + + public static void set(String remoteIp) { + threadLocal.set(remoteIp); + } +}