diff --git a/src/main/java/edu/umd/dawn/common/interceptor/RequestInterceptor.java b/src/main/java/edu/umd/dawn/common/interceptor/RequestInterceptor.java
index 9f4c3291e5d6711ad2282e7631710c62714c8301..bfcad4786ae6c41c4a29d9ed190727872664cdbb 100644
--- a/src/main/java/edu/umd/dawn/common/interceptor/RequestInterceptor.java
+++ b/src/main/java/edu/umd/dawn/common/interceptor/RequestInterceptor.java
@@ -1,7 +1,9 @@
 package edu.umd.dawn.common.interceptor;
 
+import edu.umd.dawn.common.jwt.Claims;
 import edu.umd.dawn.common.logging.RequestLog;
 import edu.umd.dawn.common.services.UserAgentService;
+import edu.umd.dawn.common.wrappers.DawnHttpServletRequestWrapper;
 import jakarta.servlet.http.HttpServletRequest;
 import jakarta.servlet.http.HttpServletResponse;
 import java.util.Enumeration;
@@ -25,6 +27,9 @@ public class RequestInterceptor implements HandlerInterceptor {
     
     @Value("${config.serviceName:dawn-service}")
     private String serviceName;
+    
+    @Value("${config.accessSecret:empty}")
+    private String accessSecret;
 
     @Autowired
     private UserAgentService userAgentService;
@@ -97,6 +102,8 @@ public class RequestInterceptor implements HandlerInterceptor {
 
         Map<String, String> headers = getRequestHeaders(request);
 
+        Claims claims = new DawnHttpServletRequestWrapper(request, accessSecret).getClaims();
+
         RequestLog requestLog = RequestLog.builder()
                 .path(path)
                 .method(request.getMethod())
@@ -105,6 +112,7 @@ public class RequestInterceptor implements HandlerInterceptor {
                 .parameters(getParemeters(request))
                 .duration(executeTime)
                 .userAgent(userAgentService.parse(headers))
+                .userId(claims.getUserId())
                 .build();
 
         log.log(Level.forName("REQUEST", 10), requestLog);
diff --git a/src/main/java/edu/umd/dawn/common/logging/RequestLog.java b/src/main/java/edu/umd/dawn/common/logging/RequestLog.java
index e570cf678042a2faa7add8b8c9cd880974e14a6c..60088d0db42fcde4a4017568a2d8f7f70d2a39aa 100644
--- a/src/main/java/edu/umd/dawn/common/logging/RequestLog.java
+++ b/src/main/java/edu/umd/dawn/common/logging/RequestLog.java
@@ -18,6 +18,8 @@ public class RequestLog extends Log {
     @Builder.Default
     private String type = "request";
 
+    private String userId;
+
     private double duration;
     private int statusCode;
     private String method;
diff --git a/src/main/java/edu/umd/dawn/common/wrappers/DawnHttpServletRequestWrapper.java b/src/main/java/edu/umd/dawn/common/wrappers/DawnHttpServletRequestWrapper.java
new file mode 100644
index 0000000000000000000000000000000000000000..f2e21ba6991ec83b3a55f6659c87191836537966
--- /dev/null
+++ b/src/main/java/edu/umd/dawn/common/wrappers/DawnHttpServletRequestWrapper.java
@@ -0,0 +1,59 @@
+package edu.umd.dawn.common.wrappers;
+
+import edu.umd.dawn.common.jwt.Claims;
+import edu.umd.dawn.common.jwt.JWTUtil;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequestWrapper;
+import lombok.extern.log4j.Log4j2;
+
+@Log4j2
+public class DawnHttpServletRequestWrapper extends HttpServletRequestWrapper {
+
+    private String accessSecret;
+
+    public DawnHttpServletRequestWrapper(HttpServletRequest request) {
+        super(request);
+    }
+
+    public DawnHttpServletRequestWrapper(HttpServletRequest request, String accessSecret) {
+        super(request);
+        this.accessSecret = accessSecret;
+    }
+
+    /**
+     * try everything possible to get the claims
+     * @return
+     */
+    public Claims getClaims() {
+        Claims claims = (Claims) getAttribute("claims");
+        if (claims != null) {
+            return claims;
+        }
+
+        if (accessSecret.equals("empty")) {
+            log.warn("This service has not been provided the configuration value for `config.accessSecret` in the application.properties configuration. Since it uses the JWTInterceptor, this is a required value for proper functionality.");
+        }
+
+        String token = (String) getAttribute("token");
+        if (token != null) {
+            try {
+                return JWTUtil.parse(accessSecret, token).getClaims();
+            } catch (Exception e) {
+            }
+        }
+
+        String jwtHeader = (String) getHeader("Authorization");
+        if (jwtHeader.startsWith("Bearer ")) {
+            jwtHeader.replace("Bearer ", "");
+        }
+
+        try {
+            return JWTUtil.parse(accessSecret, jwtHeader).getClaims();
+        } catch (Exception e) {
+        }
+
+        return null;
+
+    }
+    
+}