You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@camel.apache.org by Pascal Schumacher <pa...@gmx.net> on 2023/11/22 18:17:35 UTC
camel-http: $USER:$PASSWORD@$SERVER notation for basic auth no longer supported?
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
Re: camel-http: $USER:$PASSWORD@$SERVER notation for basic auth no longer supported?
Posted by Claus Ibsen <cl...@gmail.com>.
On Wed, Nov 22, 2023 at 7:17 PM Pascal Schumacher <pa...@gmx.net>
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&authUsername=USER&authPassword=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: https://www.manning.com/ibsen2