fix(sprint-17 backend): JwtPropagationFilter @ApplicationScoped — découverte CDI pour @QuarkusTest
Some checks failed
CI/CD Pipeline / pipeline (push) Failing after 3m11s
Some checks failed
CI/CD Pipeline / pipeline (push) Failing after 3m11s
JwtPropagationFilterTest @QuarkusTest fait @Inject JwtPropagationFilter mais la classe n'avait aucun scope CDI → UnsatisfiedResolutionException au démarrage du test. Le commentaire interdisait @Provider (auto-register JAX-RS global qui écraserait le service account des AdminUserServiceClient/AdminRoleServiceClient). Mais ne disait rien contre @ApplicationScoped : c'est un scope CDI ≠ provider JAX-RS. Fix : ajouter @ApplicationScoped (rend découvrable par CDI mais ne provoque PAS d'enregistrement automatique JAX-RS — l'opt-in reste via @RegisterProvider explicite). Suppression de l'import jakarta.ws.rs.ext.Provider devenu inutile. Commentaire de classe enrichi pour clarifier la nuance scope-CDI vs provider-JAX-RS.
This commit is contained in:
@@ -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.
|
||||
*
|
||||
* <p>La propagation JWT est assurée par {@link OidcTokenPropagationHeadersFactory}
|
||||
* <p>{@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.
|
||||
*
|
||||
* <p>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);
|
||||
|
||||
Reference in New Issue
Block a user