Quantcast

HTTP component + Authentication

classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

HTTP component + Authentication

jguerra
Hi,
I just wanted to check Camel 2.7 HTTP component to route JMS message payload to a HTTP service. The configuration below works fine, but the service requires to be authenticated.

<route>
            <from uri="activemq:my.queue"/>
            <setHeader headerName="CamelHttpMethod">
                <constant>POST</constant>
            </setHeader>
            <to uri="http://server:8080/service"/>
</route>

So, I am using another configuration inside of the camelContext to invoque the service with "basic" authentication, but... the requests fail. I got a HTTP 401.

<properties>
                        <property key="http.authMethodPriority" value="Basic"/>
                        <property key="http.authMethod" value="Basic"/>
                        <property key="http.authUsername" value="dummy"/>
                        <property key="http.authPassword" value="pass"/>
</properties>

<route>
            <from uri="activemq:my.queue"/>
            <setHeader headerName="CamelHttpMethod">
                <constant>POST</constant>
            </setHeader>
            <to uri="http://server:8080/authservice"/>
</route>

I'll be pleased, if anyone can help me out on this!

Pd: I checked this link out without any success!.
http://camel.465427.n5.nabble.com/http-component-with-authentication-td475994.html 
Cheers
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: HTTP component + Authentication

jguerra
Just to post part of the output!

2011-09-08 13:38:26,814 | INFO  | Apache Camel 2.7.0 (CamelContext: camel) started in 0.873 seconds | org.apache.camel.spring.SpringCamelContext | main
2011-09-08 13:38:44,997 | INFO  | basic authentication scheme selected | org.apache.commons.httpclient.auth.AuthChallengeProcessor | Camel (camel) thread #1 - JmsConsumer[ntcs.powerservice.queue]
2011-09-08 13:38:44,998 | INFO  | No credentials available for BASIC 'file'@server:8080 | org.apache.commons.httpclient.HttpMethodDirector | Camel (camel) thread #1 - JmsConsumer[ntcs.powerservice.queue]
2011-09-08 13:38:45,002 | ERROR | Failed delivery for exchangeId: ID:tcs-amq-dev-42862-1315485501425-2:5:1:1:1. Exhausted after delivery attempt: 1 caught: org.apache.camel.component.http.HttpOperationFailedException: HTTP operation failed invoking http://server:8080/authservice with statusCode: 401 | org.apache.camel.processor.DefaultErrorHandler | Camel (camel) thread #1 - JmsConsumer[ntcs.powerservice.queue]
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: HTTP component + Authentication

Claus Ibsen-2
In reply to this post by jguerra
Hi

You would need to set the authentication on the http component or
directly on the http endpoint using parameters.

On the former you would need to define a HttpConfiguration object

<bean id="httpAuth" class="org.apache.camel.componen.http.HttpConfiguration">
  .. here goes spring bean properties to set the authentication settings
</bean>

And then use the httpAuth on the http component

<bean id="http" class="org.apache.camel.component.HttpComponent">
   <property name="httpConfiguration" ref="httpAuth"/>
</bean>



On Thu, Sep 8, 2011 at 2:26 PM, jguerra <[hidden email]> wrote:

> Hi,
> I just wanted to check Camel 2.7 HTTP component to route JMS message payload
> to a HTTP service. The configuration below works fine, but the service
> requires to be authenticated.
>
> <route>
>            <from uri="activemq:my.queue"/>
>            <setHeader headerName="CamelHttpMethod">
>                <constant>POST</constant>
>            </setHeader>
>            <to uri="http://server:8080/service"/>
> </route>
>
> So, I am using another configuration inside of the camelContext to invoque
> the service with "basic" authentication, but... the requests fail. I got a
> HTTP 401.
>
> <properties>
>                        <property key="http.authMethodPriority"
> value="Basic"/>
>                        <property key="http.authMethod" value="Basic"/>
>                        <property key="http.authUsername" value="dummy"/>
>                        <property key="http.authPassword" value="pass"/>
> </properties>
>
> <route>
>            <from uri="activemq:my.queue"/>
>            <setHeader headerName="CamelHttpMethod">
>                <constant>POST</constant>
>            </setHeader>
>            <to uri="http://server:8080/authservice"/>
> </route>
>
> I'll be pleased, if anyone can help me out on this!
>
> Pd: I checked this link out without any success!.
> http://camel.465427.n5.nabble.com/http-component-with-authentication-td475994.html
> Cheers
>
> --
> View this message in context: http://camel.465427.n5.nabble.com/HTTP-component-Authentication-tp4782223p4782223.html
> Sent from the Camel - Users mailing list archive at Nabble.com.
>



--
Claus Ibsen
-----------------
FuseSource
Email: [hidden email]
Web: http://fusesource.com
Twitter: davsclaus, fusenews
Blog: http://davsclaus.blogspot.com/
Author of Camel in Action: http://www.manning.com/ibsen/
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: HTTP component + Authentication

jguerra
Awesome!!
thanks for the clues. It works!

Final configuration is something like this:

 <route>
            <from uri="direct:ntcs.powerservice.queue"/>
            <setHeader headerName="Content-Type">
                <constant>application/xml</constant>
            </setHeader>
            <setHeader headerName="CamelHttpMethod">
                <constant>POST</constant>
            </setHeader>
            <to uri="http://server:8080/authservice"/>
 </route>


 <bean id="httpAuth" class="org.apache.camel.component.http.HttpConfiguration">
        <property name="authMethod" value="Basic"/>
        <property name="authUsername" value="user"/>
        <property name="authPassword" value="password"/>
   </bean>

   <bean id="http" class="org.apache.camel.component.http.HttpComponent">
        <property name="camelContext" ref="camel"/>
        <property name="httpConfiguration" ref="httpAuth"/>
   </bean>



Cheers
Loading...