diff --git a/src/main/java/edu/umd/dawn/common/jwt/JWTContext.java b/src/main/java/edu/umd/dawn/common/jwt/JWTContext.java
new file mode 100644
index 0000000000000000000000000000000000000000..b8c0f0117a1e78640890674c284d329617bfe658
--- /dev/null
+++ b/src/main/java/edu/umd/dawn/common/jwt/JWTContext.java
@@ -0,0 +1,42 @@
+package edu.umd.dawn.common.jwt;
+
+import org.springframework.stereotype.Component;
+import org.springframework.web.context.request.RequestContextHolder;
+import org.springframework.web.context.request.ServletRequestAttributes;
+
+import edu.umd.dawn.common.exceptions.BaseExceptions;
+import edu.umd.dawn.common.exceptions.DawnException;
+import edu.umd.dawn.common.wrappers.DawnHttpServletRequestWrapper;
+import jakarta.annotation.PostConstruct;
+import jakarta.servlet.http.HttpServletRequest;
+
+import org.springframework.beans.factory.annotation.Value;
+
+/**
+ * Using this context REQUIRES that a jwt is passed
+ */
+@Component
+public class JWTContext {
+    @Value("${config.jwt.warn:true}")
+    private boolean warn;
+
+    @Value("${config.accessSecret:empty}")
+    private String accessSecret;
+
+    /**
+     * try everything possible to get the claims - fail if we can't
+     * @return
+     */
+    public Claims getClaims() {
+        HttpServletRequest request =
+                ((ServletRequestAttributes) RequestContextHolder.currentRequestAttributes()).getRequest();
+
+        DawnHttpServletRequestWrapper wrappedRequest = new DawnHttpServletRequestWrapper(request, accessSecret);
+        Claims claims = wrappedRequest.getClaims();
+        if (claims == null) {
+            throw new DawnException(BaseExceptions.INVALID_JWT);
+        }
+        
+        return claims;
+    }
+}