chore: update

This commit is contained in:
TakahashiNg
2026-04-08 15:10:44 +00:00
parent 81922d372e
commit 5b0de924a5
@@ -1,13 +1,18 @@
package com.drinkool.filters;
import com.drinkool.InternalValue;
import jakarta.ws.rs.container.ContainerRequestContext;
import jakarta.ws.rs.Priorities;
import jakarta.ws.rs.container.*;
import jakarta.ws.rs.core.*;
import java.util.*;
import org.jboss.resteasy.reactive.server.ServerRequestFilter;
import org.jboss.resteasy.reactive.server.ServerResponseFilter;
import org.jose4j.jws.AlgorithmIdentifiers;
import org.jose4j.jws.JsonWebSignature;
import org.jose4j.jwt.JwtClaims;
import org.jose4j.jwt.consumer.JwtConsumer;
import org.jose4j.jwt.consumer.JwtConsumerBuilder;
import org.jose4j.keys.HmacKey;
public class InternalHeaderGatewayFilter {
@@ -21,12 +26,14 @@ public class InternalHeaderGatewayFilter {
}
@ServerRequestFilter(preMatching = true)
public void handleGatewayHeaders(ContainerRequestContext requestContext) {
public void handleRequestHeaders(ContainerRequestContext requestContext) {
requestContext
.getHeaders()
.keySet()
.removeIf(key ->
key.toLowerCase().startsWith(InternalValue.headerId.toLowerCase())
.removeIf(
key ->
key.equalsIgnoreCase(InternalValue.headerId) ||
key.toLowerCase().startsWith(InternalValue.headerId.toLowerCase())
);
Map<String, Cookie> cookies = requestContext.getCookies();
@@ -38,7 +45,8 @@ public class InternalHeaderGatewayFilter {
String token = authCookie.getValue();
JwtConsumer jwtConsumer = new JwtConsumerBuilder()
.setVerificationKey(new org.jose4j.keys.HmacKey(SECRET_KEY.getBytes()))
.setRequireExpirationTime()
.setVerificationKey(new HmacKey(SECRET_KEY.getBytes()))
.build();
JwtClaims claims = jwtConsumer.processToClaims(token);
@@ -60,4 +68,61 @@ public class InternalHeaderGatewayFilter {
);
}
}
@ServerResponseFilter(priority = Priorities.USER + 100)
public void handleResponseHeaders(ContainerResponseContext responseContext) {
JwtClaims claims = new JwtClaims();
boolean hasInternalData = false;
Map<String, List<Object>> headers = responseContext.getHeaders();
Set<String> headerNames = new HashSet<>(
responseContext.getHeaders().keySet()
);
for (String key : headerNames) {
if (key.toLowerCase().startsWith(InternalValue.headerId.toLowerCase())) {
Object value = headers.get(key).get(0);
String claimKey = key.substring(InternalValue.headerId.length());
claims.setClaim(claimKey, value.toString());
hasInternalData = true;
}
}
if (hasInternalData) {
try {
claims.setExpirationTimeMinutesInTheFuture(60);
claims.setGeneratedJwtId();
claims.setIssuedAtToNow();
JsonWebSignature jws = new JsonWebSignature();
jws.setPayload(claims.toJson());
jws.setKey(new HmacKey(SECRET_KEY.getBytes()));
jws.setAlgorithmHeaderValue(AlgorithmIdentifiers.HMAC_SHA256);
String jwt = jws.getCompactSerialization();
NewCookie jwtCookie = new NewCookie.Builder(InternalValue.cookieName)
.value(jwt)
.path("/")
.httpOnly(true)
.secure(true)
.sameSite(NewCookie.SameSite.STRICT)
.maxAge(3600)
.build();
responseContext.getHeaders().add("Set-Cookie", jwtCookie);
responseContext
.getHeaders()
.keySet()
.removeIf(key ->
key.toLowerCase().startsWith(InternalValue.cookieName)
);
} catch (Exception e) {
e.printStackTrace();
}
}
}
}