diff --git a/src/main/java/dev/lions/unionflow/server/client/JwtPropagationFilter.java b/src/main/java/dev/lions/unionflow/server/client/JwtPropagationFilter.java index d9c44a4..58f35b7 100644 --- a/src/main/java/dev/lions/unionflow/server/client/JwtPropagationFilter.java +++ b/src/main/java/dev/lions/unionflow/server/client/JwtPropagationFilter.java @@ -2,11 +2,11 @@ package dev.lions.unionflow.server.client; import io.quarkus.oidc.runtime.OidcJwtCallerPrincipal; import io.quarkus.security.identity.SecurityIdentity; +import jakarta.enterprise.context.ApplicationScoped; import jakarta.inject.Inject; import jakarta.ws.rs.client.ClientRequestContext; import jakarta.ws.rs.client.ClientRequestFilter; import jakarta.ws.rs.core.HttpHeaders; -import jakarta.ws.rs.ext.Provider; import org.eclipse.microprofile.jwt.JsonWebToken; import org.jboss.logging.Logger; @@ -20,9 +20,15 @@ import java.io.IOException; * qui utilisent AdminServiceTokenHeadersFactory (service account). Le filtre global * écraserait le token de service account avec le JWT utilisateur → 401 sur LUM. * - *
La propagation JWT est assurée par {@link OidcTokenPropagationHeadersFactory} + *
{@code @ApplicationScoped} est requis pour la découverte CDI (tests {@code @QuarkusTest} + * qui {@code @Inject} le filter). Cela ne provoque PAS d'enregistrement automatique JAX-RS + * — l'opt-in se fait via {@code @RegisterProvider(JwtPropagationFilter.class)} sur les + * REST clients qui le souhaitent. + * + *
La propagation JWT par défaut est assurée par {@link OidcTokenPropagationHeadersFactory} * sur les clients qui en ont besoin ({@code @RegisterClientHeaders}). */ +@ApplicationScoped public class JwtPropagationFilter implements ClientRequestFilter { private static final Logger LOG = Logger.getLogger(JwtPropagationFilter.class);