Re: camel-http: $USER:$PASSWORD@$SERVER notation for basic auth no longer supported?

2023-11-22 Thread Claus Ibsen
On Wed, Nov 22, 2023 at 7:17 PM Pascal Schumacher 
wrote:

> Hi,
>
> while migrating a Project from Camel 3 to Camel 4 I noticed that the
> $USER:$PASSWORD@$SERVER notation for basic authentication no longer works.
>
> `to("https://USER:PASSWORD@localhost
> :8080/example?authenticationPreemptive=true")`
> works in Camel 3.21.2
>
> but fails in Camel 4.0.3 with:
>
> org.apache.hc.client5.http.ClientProtocolException: No credentials for
> preemptive authentication
> at
>
> org.apache.hc.client5.http.impl.classic.InternalHttpClient.doExecute(InternalHttpClient.java:173)
> at
>
> org.apache.hc.client5.http.impl.classic.CloseableHttpClient.execute(CloseableHttpClient.java:245)
> at
>
> org.apache.camel.component.http.HttpProducer.executeMethod(HttpProducer.java:487)
> at
> org.apache.camel.component.http.HttpProducer.process(HttpProducer.java:269)
> at
>
> org.apache.camel.support.AsyncProcessorConverterHelper$ProcessorToAsyncProcessorBridge.process(AsyncProcessorConverterHelper.java:65)
> at
> org.apache.camel.processor.SendProcessor.process(SendProcessor.java:172)
> at
>
> org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$SimpleTask.run(RedeliveryErrorHandler.java:475)
> at
>
> org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.executeReactiveWork(DefaultReactiveExecutor.java:196)
> at
>
> org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.schedule(DefaultReactiveExecutor.java:164)
> at
>
> org.apache.camel.impl.engine.DefaultReactiveExecutor.scheduleMain(DefaultReactiveExecutor.java:59)
> at
> org.apache.camel.processor.Pipeline.process(Pipeline.java:163)
> at
>
> org.apache.camel.impl.engine.CamelInternalProcessor.process(CamelInternalProcessor.java:383)
> at
>
> org.apache.camel.impl.engine.DefaultAsyncProcessorAwaitManager.process(DefaultAsyncProcessorAwaitManager.java:81)
> at
>
> org.apache.camel.support.AsyncProcessorSupport.process(AsyncProcessorSupport.java:32)
> at
>
> org.apache.camel.component.jms.EndpointMessageListener.onMessage(EndpointMessageListener.java:132)
> at
>
> org.springframework.jms.listener.AbstractMessageListenerContainer.doInvokeListener(AbstractMessageListenerContainer.java:736)
> at
>
> org.springframework.jms.listener.AbstractMessageListenerContainer.invokeListener(AbstractMessageListenerContainer.java:696)
> at
>
> org.springframework.jms.listener.AbstractMessageListenerContainer.doExecuteListener(AbstractMessageListenerContainer.java:674)
> at
>
> org.springframework.jms.listener.AbstractPollingMessageListenerContainer.doReceiveAndExecute(AbstractPollingMessageListenerContainer.java:330)
> at
>
> org.springframework.jms.listener.AbstractPollingMessageListenerContainer.receiveAndExecute(AbstractPollingMessageListenerContainer.java:245)
> at
>
> org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.invokeListener(DefaultMessageListenerContainer.java:1239)
> at
>
> org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.executeOngoingLoop(DefaultMessageListenerContainer.java:1229)
> at
>
> org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:1122)
> at
> java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
> at
> java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown
> Source)
> at java.base/java.lang.Thread.run(Unknown Source)
> Caused by: org.apache.hc.core5.http.HttpException: No credentials for
> preemptive authentication
> at
>
> org.apache.camel.component.http.PreemptiveAuthExecChainHandler.execute(PreemptiveAuthExecChainHandler.java:52)
> at
>
> org.apache.hc.client5.http.impl.classic.ExecChainElement.execute(ExecChainElement.java:51)
> at
>
> org.apache.hc.client5.http.impl.classic.InternalHttpClient.doExecute(InternalHttpClient.java:170)
> ... 25 common frames omitted
>
> I did not find anything related to this in
> https://camel.apache.org/manual/camel-4-migration-guide.html
>
> Did I miss something? Is this an intentional behavior change or a bug?
>
> It works if I use
> `to("
> https://localhost:8080/example?authenticationPreemptive=true=USER=PASSWORD
> ")`
> instead.
>
>
Okay then use that. Its also the preferred way with using options instead
of the uri authority that is very complex and something we will not support
in the future moving away from java.net.Uri object.


> Thanks and kind regards,
> Pascal
>


-- 
Claus Ibsen
-
@davsclaus
Camel in Action 2: 

camel-http: $USER:$PASSWORD@$SERVER notation for basic auth no longer supported?

2023-11-22 Thread Pascal Schumacher

Hi,

while migrating a Project from Camel 3 to Camel 4 I noticed that the
$USER:$PASSWORD@$SERVER notation for basic authentication no longer works.

`to("https://USER:PASSWORD@localhost:8080/example?authenticationPreemptive=true;)`
works in Camel 3.21.2

but fails in Camel 4.0.3 with:

org.apache.hc.client5.http.ClientProtocolException: No credentials for
preemptive authentication
   at
org.apache.hc.client5.http.impl.classic.InternalHttpClient.doExecute(InternalHttpClient.java:173)
   at
org.apache.hc.client5.http.impl.classic.CloseableHttpClient.execute(CloseableHttpClient.java:245)
   at
org.apache.camel.component.http.HttpProducer.executeMethod(HttpProducer.java:487)
   at
org.apache.camel.component.http.HttpProducer.process(HttpProducer.java:269)
   at
org.apache.camel.support.AsyncProcessorConverterHelper$ProcessorToAsyncProcessorBridge.process(AsyncProcessorConverterHelper.java:65)
   at
org.apache.camel.processor.SendProcessor.process(SendProcessor.java:172)
   at
org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$SimpleTask.run(RedeliveryErrorHandler.java:475)
   at
org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.executeReactiveWork(DefaultReactiveExecutor.java:196)
   at
org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.schedule(DefaultReactiveExecutor.java:164)
   at
org.apache.camel.impl.engine.DefaultReactiveExecutor.scheduleMain(DefaultReactiveExecutor.java:59)
   at
org.apache.camel.processor.Pipeline.process(Pipeline.java:163)
   at
org.apache.camel.impl.engine.CamelInternalProcessor.process(CamelInternalProcessor.java:383)
   at
org.apache.camel.impl.engine.DefaultAsyncProcessorAwaitManager.process(DefaultAsyncProcessorAwaitManager.java:81)
   at
org.apache.camel.support.AsyncProcessorSupport.process(AsyncProcessorSupport.java:32)
   at
org.apache.camel.component.jms.EndpointMessageListener.onMessage(EndpointMessageListener.java:132)
   at
org.springframework.jms.listener.AbstractMessageListenerContainer.doInvokeListener(AbstractMessageListenerContainer.java:736)
   at
org.springframework.jms.listener.AbstractMessageListenerContainer.invokeListener(AbstractMessageListenerContainer.java:696)
   at
org.springframework.jms.listener.AbstractMessageListenerContainer.doExecuteListener(AbstractMessageListenerContainer.java:674)
   at
org.springframework.jms.listener.AbstractPollingMessageListenerContainer.doReceiveAndExecute(AbstractPollingMessageListenerContainer.java:330)
   at
org.springframework.jms.listener.AbstractPollingMessageListenerContainer.receiveAndExecute(AbstractPollingMessageListenerContainer.java:245)
   at
org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.invokeListener(DefaultMessageListenerContainer.java:1239)
   at
org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.executeOngoingLoop(DefaultMessageListenerContainer.java:1229)
   at
org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:1122)
   at
java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
   at
java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
   at java.base/java.lang.Thread.run(Unknown Source)
Caused by: org.apache.hc.core5.http.HttpException: No credentials for
preemptive authentication
   at
org.apache.camel.component.http.PreemptiveAuthExecChainHandler.execute(PreemptiveAuthExecChainHandler.java:52)
   at
org.apache.hc.client5.http.impl.classic.ExecChainElement.execute(ExecChainElement.java:51)
   at
org.apache.hc.client5.http.impl.classic.InternalHttpClient.doExecute(InternalHttpClient.java:170)
   ... 25 common frames omitted

I did not find anything related to this in
https://camel.apache.org/manual/camel-4-migration-guide.html

Did I miss something? Is this an intentional behavior change or a bug?

It works if I use
`to("https://localhost:8080/example?authenticationPreemptive=true=USER=PASSWORD;)`
instead.

Thanks and kind regards,
Pascal