From 5b5c7fb19dea5ac33327087f7163257fce4e49c9 Mon Sep 17 00:00:00 2001 From: Tucker Siegel <tgsiegel@terpmail.umd.edu> Date: Wed, 19 Apr 2023 15:23:18 -0400 Subject: [PATCH] add context --- .../edu/umd/dawn/common/jwt/JWTContext.java | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 src/main/java/edu/umd/dawn/common/jwt/JWTContext.java 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 0000000..b8c0f01 --- /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; + } +} -- GitLab