[
https://issues.apache.org/jira/browse/CAMEL-26340?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Work on CAMEL-26340 started by Andrea Cosentino.
------------------------------------------------
> camel-lra: validate coordinator URL returned when starting a new saga against
> allowed coordinators
> --------------------------------------------------------------------------------------------------
>
> Key: CAMEL-26340
> URL: https://issues.apache.org/jira/browse/CAMEL-26340
> Project: Camel
> Issue Type: Bug
> Components: camel-lra
> Reporter: Andrea Cosentino
> Assignee: Andrea Cosentino
> Priority: Major
> Fix For: 4.18.6, 4.22.3, 4.24.0
>
>
> h3. Current behaviour
> In {{LRASagaService.newSaga(Exchange)}} (camel-lra), when starting a new LRA,
> the URL returned by the coordinator is used directly to create
> {{LRASagaCoordinator}}:
> {code:java}
> @Override
> public CompletableFuture<CamelSagaCoordinator> newSaga(Exchange exchange) {
> return client.newLRA(exchange)
> .thenApply(url -> new LRASagaCoordinator(LRASagaService.this,
> url));
> }
> {code}
> In contrast, {{getSaga(String id)}} validates that the coordinator URL is
> hosted by the configured coordinator or listed in {{allowedCoordinatorUrls}}
> before instantiating the coordinator:
> {code:java}
> URI lra = URI.create(id);
> if (!isHostedByAllowedCoordinator(lra)) {
> throw new IllegalArgumentException(...);
> }
> {code}
> Because {{newSaga}} does not perform this check, an LRA URL returned when
> starting a saga is joined, completed, or compensated without verifying that
> its host, port, and context path match the configured coordinator or allowed
> coordinator URLs.
> h3. Expected behaviour
> {{LRASagaService.newSaga(Exchange)}} should validate that the URL returned by
> the coordinator is hosted by the configured coordinator or an allowed
> coordinator URL via {{isHostedByAllowedCoordinator}} before constructing the
> {{LRASagaCoordinator}}.
> h3. Change
> In {{LRASagaService.newSaga(Exchange)}}, verify the URL returned by
> {{client.newLRA(exchange)}} using {{isHostedByAllowedCoordinator}} and fail
> with {{IllegalArgumentException}} if the URL is not hosted by an allowed
> coordinator.
> h3. Tests
> Add tests in {{camel-lra}} verifying that {{newSaga}} rejects a coordinator
> start response returning a URL with an unconfigured host, port, or path
> outside the coordinator context path, and accepts an allowed coordinator URL.
--
This message was sent by Atlassian Jira
(v10.3.26#10030026)