[ 
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)

Reply via email to