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&authUsername=USER&authPassword=PASSWORD";)`
instead.

Thanks and kind regards,
Pascal

Reply via email to