|
| 1 | +// servlet filter, apply filter only for endpoint with annotation |
| 2 | +import com.ubs.jetty.api.rest.security.KeyCloakJWTBody; |
| 3 | +import com.ubs.jetty.api.rest.usage.JWTTokenTracking; |
| 4 | +import com.ubs.jetty.authentication.AuthenticationUtil; |
| 5 | +import com.ubs.metrics.postgres.usertracking.UserTracking; |
| 6 | +import com.ubs.metrics.postgres.usertracking.UserTrackingDAO; |
| 7 | +import com.google.common.cache.Cache; |
| 8 | +import com.google.common.cache.CacheBuilder; |
| 9 | +import javax.annotation.Priority; |
| 10 | +import javax.inject.Inject; |
| 11 | +import javax.servlet.http.HttpServletRequest; |
| 12 | +import javax.ws.rs.Priorities; |
| 13 | +import javax.ws.rs.container.ContainerRequestContext; |
| 14 | +import javax.ws.rs.container.ContainerRequestFilter; |
| 15 | +import javax.ws.rs.core.Context; |
| 16 | +import javax.ws.rs.ext.Provider; |
| 17 | +import lombok.Setter; |
| 18 | + |
| 19 | +@Provider |
| 20 | +@JWTTokenTracking // filter will work only for methods with this annotation |
| 21 | +@Priority(Priorities.USER) |
| 22 | +public class JWTTokenRequestTracker implements ContainerRequestFilter { |
| 23 | + |
| 24 | + @Context @Setter private HttpServletRequest request; |
| 25 | + |
| 26 | + static Cache<String, UserTracking> jwtUserCache = CacheBuilder.newBuilder().maximumSize(2000).expireAfterWrite(360, TimeUnit.SECONDS).build(); |
| 27 | + |
| 28 | + @Override |
| 29 | + public void filter(ContainerRequestContext requestContext) throws IOException { |
| 30 | + KeyCloakJWTBody keyCloakJWTBody = AuthenticationUtil.getKeyCloakJWTBodyFromRequest(request); |
| 31 | + ... |
| 32 | + } |
| 33 | + |
| 34 | +} |
0 commit comments