diff --git a/gms/src/main/java/it/inaf/ia2/gms/authn/JWTFilter.java b/gms/src/main/java/it/inaf/ia2/gms/authn/JWTFilter.java
index ce21e9c20220822eecb590295bd6fefb0ee0b23f..6847193fc2f51ae3fddc689992ce746b0cdd3d97 100644
--- a/gms/src/main/java/it/inaf/ia2/gms/authn/JWTFilter.java
+++ b/gms/src/main/java/it/inaf/ia2/gms/authn/JWTFilter.java
@@ -33,7 +33,7 @@ public class JWTFilter implements Filter {
 
         String authHeader = request.getHeader("Authorization");
         if (authHeader == null) {
-            loggingDAO.logAction("Attempt to access WS without token");
+            loggingDAO.logAction("Attempt to access WS without token", request);
             response.sendError(HttpServletResponse.SC_UNAUTHORIZED, "Missing Authorization token");
             return;
         }
@@ -42,7 +42,7 @@ public class JWTFilter implements Filter {
 
         OAuth2AccessToken accessToken = jwkTokenStore.readAccessToken(authHeader);
         if (accessToken.isExpired()) {
-            loggingDAO.logAction("Attempt to access WS with expired token");
+            loggingDAO.logAction("Attempt to access WS with expired token", request);
             response.sendError(HttpServletResponse.SC_UNAUTHORIZED, "Access token is expired");
             return;
         }
@@ -50,13 +50,13 @@ public class JWTFilter implements Filter {
         Map<String, Object> claims = accessToken.getAdditionalInformation();
 
         if (claims.get("sub") == null) {
-            loggingDAO.logAction("Attempt to access WS with invalid token");
+            loggingDAO.logAction("Attempt to access WS with invalid token", request);
             response.sendError(HttpServletResponse.SC_UNAUTHORIZED, "Invalid access token: missing sub claim");
             return;
         }
 
         ServletRequestWithJWTPrincipal wrappedRequest = new ServletRequestWithJWTPrincipal(request, claims);
-        loggingDAO.logAction("WS access from " + wrappedRequest.getUserPrincipal().getName());
+        loggingDAO.logAction("WS access from " + wrappedRequest.getUserPrincipal().getName(), request);
 
         fc.doFilter(wrappedRequest, res);
     }
diff --git a/gms/src/main/java/it/inaf/ia2/gms/persistence/LoggingDAO.java b/gms/src/main/java/it/inaf/ia2/gms/persistence/LoggingDAO.java
index ae23d57b9127831a17322cc876f22f2f929d24f3..b236ec757a2409c704db0aa9897b2c5d1ccc0e05 100644
--- a/gms/src/main/java/it/inaf/ia2/gms/persistence/LoggingDAO.java
+++ b/gms/src/main/java/it/inaf/ia2/gms/persistence/LoggingDAO.java
@@ -18,7 +18,7 @@ public class LoggingDAO {
 
     private final JdbcTemplate jdbcTemplate;
 
-    @Autowired
+    @Autowired(required = false)
     private HttpServletRequest request;
 
     @Autowired
@@ -53,15 +53,19 @@ public class LoggingDAO {
     }
 
     public void logAction(String action) {
+        logAction(action, request);
+    }
+
+    public void logAction(String action, HttpServletRequest request) {
         try {
             String sql = "INSERT INTO audit_log (\"user\", action, ip_address) VALUES (?, ?, ?)";
 
             jdbcTemplate.update(conn -> {
                 PreparedStatement ps = conn.prepareStatement(sql);
                 int i = 0;
-                ps.setString(++i, getUser());
+                ps.setString(++i, getUser(request));
                 ps.setString(++i, action);
-                ps.setString(++i, getIPAddress());
+                ps.setString(++i, getIPAddress(request));
                 return ps;
             });
         } catch (Throwable t) {
@@ -69,7 +73,7 @@ public class LoggingDAO {
         }
     }
 
-    private String getIPAddress() {
+    private String getIPAddress(HttpServletRequest request) {
         String ipAddress = request.getHeader("X-FORWARDED-FOR");
         if (ipAddress == null) {
             return request.getRemoteAddr();
@@ -78,7 +82,7 @@ public class LoggingDAO {
         }
     }
 
-    private String getUser() {
+    private String getUser(HttpServletRequest request) {
         if (request.getUserPrincipal() != null) {
             return request.getUserPrincipal().getName();
         }