From f3be860ae8ddd20eb40e2f08303718f3290450e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20Skj=C3=B8lberg?= Date: Thu, 5 Feb 2026 14:24:08 +0100 Subject: [PATCH] Make SecurityGrpcExceptionHandler ordered MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Thomas Skjølberg --- .../security/SecurityGrpcExceptionHandler.java | 14 +++++++++++++- .../security/GrpcSecurityAutoConfiguration.java | 2 +- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/spring-grpc-core/src/main/java/org/springframework/grpc/server/security/SecurityGrpcExceptionHandler.java b/spring-grpc-core/src/main/java/org/springframework/grpc/server/security/SecurityGrpcExceptionHandler.java index b701f592..6a5b588c 100644 --- a/spring-grpc-core/src/main/java/org/springframework/grpc/server/security/SecurityGrpcExceptionHandler.java +++ b/spring-grpc-core/src/main/java/org/springframework/grpc/server/security/SecurityGrpcExceptionHandler.java @@ -20,6 +20,7 @@ import org.apache.commons.logging.LogFactory; import org.jspecify.annotations.Nullable; +import org.springframework.core.Ordered; import org.springframework.grpc.server.exception.GrpcExceptionHandler; import org.springframework.security.access.AccessDeniedException; import org.springframework.security.core.AuthenticationException; @@ -27,10 +28,16 @@ import io.grpc.Status; import io.grpc.StatusException; -public class SecurityGrpcExceptionHandler implements GrpcExceptionHandler { +public class SecurityGrpcExceptionHandler implements GrpcExceptionHandler, Ordered { private static final Log logger = LogFactory.getLog(SecurityGrpcExceptionHandler.class); + private final int order; + + public SecurityGrpcExceptionHandler(int order) { + this.order = order; + } + @Override public @Nullable StatusException handleException(Throwable exception) { if (exception instanceof AuthenticationException) { @@ -48,4 +55,9 @@ public class SecurityGrpcExceptionHandler implements GrpcExceptionHandler { return null; } + @Override + public int getOrder() { + return this.order; + } + } diff --git a/spring-grpc-server-spring-boot-autoconfigure/src/main/java/org/springframework/boot/grpc/server/autoconfigure/security/GrpcSecurityAutoConfiguration.java b/spring-grpc-server-spring-boot-autoconfigure/src/main/java/org/springframework/boot/grpc/server/autoconfigure/security/GrpcSecurityAutoConfiguration.java index a298e485..b910863b 100644 --- a/spring-grpc-server-spring-boot-autoconfigure/src/main/java/org/springframework/boot/grpc/server/autoconfigure/security/GrpcSecurityAutoConfiguration.java +++ b/spring-grpc-server-spring-boot-autoconfigure/src/main/java/org/springframework/boot/grpc/server/autoconfigure/security/GrpcSecurityAutoConfiguration.java @@ -72,7 +72,7 @@ static class ExceptionHandlerConfiguration { @Bean GrpcExceptionHandler accessExceptionHandler() { - return new SecurityGrpcExceptionHandler(); + return new SecurityGrpcExceptionHandler(0); } }