From 9a63aaf08e7b3b4d6458b29831b1c3a1a0a04390 Mon Sep 17 00:00:00 2001 From: sgibb Date: Mon, 11 Dec 2023 10:58:51 -0500 Subject: [PATCH] Adds config support for TokenRelayFilterFunctions.tokenRelay() Fixes gh-3176 --- .../mvc/filter/TokenRelayFilterFunctions.java | 14 ++++++++++++++ .../src/main/resources/META-INF/spring.factories | 1 + ...tion-propertiesbeandefinitionregistrartests.yml | 1 + 3 files changed, 16 insertions(+) diff --git a/spring-cloud-gateway-server-mvc/src/main/java/org/springframework/cloud/gateway/server/mvc/filter/TokenRelayFilterFunctions.java b/spring-cloud-gateway-server-mvc/src/main/java/org/springframework/cloud/gateway/server/mvc/filter/TokenRelayFilterFunctions.java index aa6e87691e..b1b6f18852 100644 --- a/spring-cloud-gateway-server-mvc/src/main/java/org/springframework/cloud/gateway/server/mvc/filter/TokenRelayFilterFunctions.java +++ b/spring-cloud-gateway-server-mvc/src/main/java/org/springframework/cloud/gateway/server/mvc/filter/TokenRelayFilterFunctions.java @@ -16,8 +16,12 @@ package org.springframework.cloud.gateway.server.mvc.filter; +import java.lang.reflect.Method; import java.security.Principal; +import java.util.Arrays; +import java.util.Collection; +import org.springframework.cloud.gateway.server.mvc.common.Shortcut; import org.springframework.security.oauth2.client.OAuth2AuthorizeRequest; import org.springframework.security.oauth2.client.OAuth2AuthorizedClient; import org.springframework.security.oauth2.client.OAuth2AuthorizedClientManager; @@ -34,6 +38,7 @@ public abstract class TokenRelayFilterFunctions { private TokenRelayFilterFunctions() { } + @Shortcut public static HandlerFilterFunction tokenRelay() { return (request, next) -> { Principal principle = request.servletRequest().getUserPrincipal(); @@ -53,4 +58,13 @@ public static HandlerFilterFunction tokenRelay() }; } + class FilterSupplier implements org.springframework.cloud.gateway.server.mvc.filter.FilterSupplier { + + @Override + public Collection get() { + return Arrays.asList(TokenRelayFilterFunctions.class.getMethods()); + } + + } + } diff --git a/spring-cloud-gateway-server-mvc/src/main/resources/META-INF/spring.factories b/spring-cloud-gateway-server-mvc/src/main/resources/META-INF/spring.factories index fd424eaca2..b060444c13 100644 --- a/spring-cloud-gateway-server-mvc/src/main/resources/META-INF/spring.factories +++ b/spring-cloud-gateway-server-mvc/src/main/resources/META-INF/spring.factories @@ -1,6 +1,7 @@ org.springframework.cloud.gateway.server.mvc.filter.FilterSupplier=\ org.springframework.cloud.gateway.server.mvc.filter.Bucket4jFilterFunctions.FilterSupplier,\ org.springframework.cloud.gateway.server.mvc.filter.CircuitBreakerFilterFunctions.FilterSupplier,\ + org.springframework.cloud.gateway.server.mvc.filter.TokenRelayFilterFunctions.FilterSupplier,\ org.springframework.cloud.gateway.server.mvc.filter.FilterFunctions.FilterSupplier org.springframework.cloud.gateway.server.mvc.handler.HandlerSupplier=\ diff --git a/spring-cloud-gateway-server-mvc/src/test/resources/application-propertiesbeandefinitionregistrartests.yml b/spring-cloud-gateway-server-mvc/src/test/resources/application-propertiesbeandefinitionregistrartests.yml index f58d269108..e7cdc876cf 100644 --- a/spring-cloud-gateway-server-mvc/src/test/resources/application-propertiesbeandefinitionregistrartests.yml +++ b/spring-cloud-gateway-server-mvc/src/test/resources/application-propertiesbeandefinitionregistrartests.yml @@ -32,6 +32,7 @@ spring.cloud.gateway.mvc: - Path=/anything/listRoute2 filters: - HttpbinUriResolver= + - TokenRelay - AddRequestHeader=X-Test,listRoute2 - id: listRoute3 uri: lb://httpbin