diff --git a/src/main/java/dev/dinauer/oidcproxy/ProxyResource.java b/src/main/java/dev/dinauer/oidcproxy/ProxyResource.java index 3a09b89..cff7e18 100644 --- a/src/main/java/dev/dinauer/oidcproxy/ProxyResource.java +++ b/src/main/java/dev/dinauer/oidcproxy/ProxyResource.java @@ -16,6 +16,8 @@ import jakarta.ws.rs.core.Context; import jakarta.ws.rs.core.Link; import jakarta.ws.rs.core.MediaType; import jakarta.ws.rs.core.Response; +import org.apache.commons.lang3.StringUtils; +import org.apache.commons.lang3.Strings; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -53,7 +55,7 @@ public class ProxyResource @Route(path = "/*", order = 1) public void proxy(@Context RoutingContext context) { - List requestSegments = List.of(context.request().path().split("/")); + List requestSegments = Arrays.stream(context.request().path().split("/")).filter(item -> !StringUtils.isBlank(item)).toList(); Optional routeOptional = routeService.match(requestSegments); if (routeOptional.isPresent()) @@ -62,7 +64,7 @@ public class ProxyResource LOG.info("Matched route with target '{}'", route.target()); try { - HttpResponse response = forward(context.request().method(), extractSession(context.request().cookies()), route.target(), concat(dropRoute(route.segments(), requestSegments))); + HttpResponse response = forward(context.request().method(), route.strategy(), extractSession(context.request().cookies()), route.target(), concat(dropRoute(route.segments(), requestSegments))); ResponseHandler.success(context, response); } catch (Exception e) @@ -78,10 +80,10 @@ public class ProxyResource } } - public HttpResponse forward(HttpMethod method, String auth, String forwardRoot, String forwardPath) throws IOException, InterruptedException + public HttpResponse forward(HttpMethod method, String strategy, String auth, String forwardRoot, String forwardPath) throws IOException, InterruptedException { HttpRequest.Builder builder = HttpRequest.newBuilder().method(method.name(), HttpRequest.BodyPublishers.noBody()).uri(URI.create(forwardRoot + "/" + forwardPath)); - if (auth != null) + if (auth != null && Strings.CI.equals("OIDC", strategy)) { builder.header("Authorization", String.format("Bearer %s", sessionRepository.get(auth))); } diff --git a/src/main/resources/routes.yaml b/src/main/resources/routes.yaml index b39abca..23aaf5a 100644 --- a/src/main/resources/routes.yaml +++ b/src/main/resources/routes.yaml @@ -1,7 +1,7 @@ routes: - path: /api - target: http://localhost:8089/api/iam-backend + target: http://backend strategy: NONE - path: / - target: http://localhost:8081 + target: http://example.com strategy: NONE \ No newline at end of file