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