Andrea Cosentino created CAMEL-24734:
----------------------------------------

             Summary: camel-spiffe - validateJwtSvid silently validates against 
only the first configured audience
                 Key: CAMEL-24734
                 URL: https://issues.apache.org/jira/browse/CAMEL-24734
             Project: Camel
          Issue Type: Bug
            Reporter: Andrea Cosentino
            Assignee: Andrea Cosentino


h2. Problem

{{SpiffeProducer.validateJwtSvid}} takes the first audience and discards the 
rest:

{code:java}
JwtSvid svid = client.validateJwtSvid(token, audiences[0]);
{code}

So an endpoint configured 
{{audience=spiffe://example.org/a,spiffe://example.org/b}} validates *only* 
against {{a}}. Nothing warns; {{b}} is silently ignored.

This is documented in passing, but silent truncation is the wrong behaviour for 
a security check - the operator's stated intent was that either audience is 
acceptable, and only half of it is enforced. It also became more consequential 
with CAMEL-24730: now that {{CamelSpiffeAudience}} can no longer override the 
configured value on the validation path, the configuration is the *only* input, 
so a misconfiguration there has nowhere else to surface.

Contrast {{fetchJwtSvid}} on the line above, which does honour every audience:

{code:java}
audiences.length > 1
        ? client.fetchJwtSvid(audiences[0], Arrays.copyOfRange(audiences, 1, 
audiences.length))
        : client.fetchJwtSvid(audiences[0]);
{code}

h2. Proposal

Pick one, and make it explicit rather than silent:

# Validate against each configured audience and accept if any matches - matches 
the natural reading of a list, and mirrors how {{fetchJwtSvid}} treats the same 
option.
# Reject a multi-value {{audience}} at endpoint creation when the operation is 
{{validateJwtSvid}}, so the misconfiguration fails fast instead of 
half-applying.

Option 1 is the better fit for the existing option semantics. Whichever is 
chosen, the javadoc and {{spiffe-component.adoc}} must state it, and a test 
must lock it.

h2. Scope

{{main}} only. {{camel-spiffe}} is new in the unreleased 4.23.0.




--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to