karaf-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Achim Nierbeck <bcanh...@googlemail.com>
Subject Re: camel-jetty + authentication JAAS
Date Mon, 06 Dec 2010 18:06:12 GMT
Hi, maybe it has something todo the way the JAAS Login of jetty works.
to get the standard Jetty-Jaas configuration to work you have to make
the following
configuration in the jetty.xml

<Call name="addBean">
      <Arg>
        <New class="org.eclipse.jetty.plus.jaas.JAASLoginService">
          <Set name="name">karaf</Set>
          <Set name="loginModuleName">karaf</Set>
          <Set name="roleClassNames">
            <Array type="java.lang.String">
              <Item>org.apache.karaf.jaas.modules.RolePrincipal</Item>
            </Array>
          </Set>
        </New>
      </Arg>
    </Call>
   
The important part is, that you have to configure the roleClass Name, if
this
one isn't provided you end up in strange Exceptions, because the classes
are instantiated using reflection.
When looking for this issue I was able to login also and did get an
exception afterwards.

Greetings, Achim

> Hi,
>
> I try to use JAAS authentication within a camel route using
> SecurityHandler of Jetty
>
> <bean id="loginService"
> class="org.eclipse.jetty.plus.jaas.JAASLoginService">
> <property name="name" value="karaf" />
> <property name="loginModuleName" value="karaf" />
> </bean>
>
> <bean id="constraint" class="org.eclipse.jetty.http.security.Constraint">
> <property name="name" value="BASIC"/>
> <property name="roles" value="admin"/>
> <property name="authenticate" value="true"/>
> </bean>
>
> <bean id="constraintMapping"
> class="org.eclipse.jetty.security.ConstraintMapping">
> <property name="constraint" ref="constraint"/>
> <property name="pathSpec" value="/*"/>
> </bean>
>
> <bean id="securityHandler"
> class="org.eclipse.jetty.security.ConstraintSecurityHandler">
> <property name="authenticator">
> <bean
> class="org.eclipse.jetty.security.authentication.BasicAuthenticator"/>
> </property>
> <property name="constraintMappings">
> <list>
> <ref bean="constraintMapping"/>
> </list>
> </property>
> <property name="loginService" ref="loginService" />
> <property name="strict" value="false" />
> </bean>
>
> <camelContext trace="true" xmlns="http://camel.apache.org/schema/spring">
> <route>
> <from
> uri="jetty:http://localhost:8080/services?handlers=securityHandler"/>
> <bean ref="responseBean"/>
> <to
> uri="log:org.apache.camel.ldap?level=INFO&amp;showAll=true&amp;multiline=true"/>
> </route>
> </camelContext>
>
> The authentication works fine (I can provide the username + passord in
> the prompt) except that after I get a NPE exception and camel-jetty
> endpoint is not able to get any exchange
> 11:34:17,243 | WARN  | -55 - /services/ |
> log                              | .eclipse.jetty.util.log.Slf4jLog  
> 40 | 61 - org.eclipse.jetty.util - 7.1.6.v20100715 | /services/:
> java.lang.NullPointerException
> 11:34:17,243 | DEBUG | -55 - /services/ |
> log                              | .eclipse.jetty.util.log.Slf4jLog  
> 80 | 61 - org.eclipse.jetty.util - 7.1.6.v20100715 | EXCEPTION
> java.lang.NullPointerException
>     at
> org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:489)[68:org.eclipse.jetty.security:7.1.6.v20100715]
>     at
> org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:113)[67:org.eclipse.jetty.server:7.1.6.v20100715]
>     at
> org.eclipse.jetty.server.Server.handle(Server.java:347)[67:org.eclipse.jetty.server:7.1.6.v20100715]
>     at
> org.eclipse.jetty.server.HttpConnection.handleRequest(HttpConnection.java:594)[67:org.eclipse.jetty.server:7.1.6.v20100715]
>     at
> org.eclipse.jetty.server.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:1042)[67:org.eclipse.jetty.server:7.1.6.v20100715]
>     at
> org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:549)[63:org.eclipse.jetty.http:7.1.6.v20100715]
>     at
> org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:211)[63:org.eclipse.jetty.http:7.1.6.v20100715]
>     at
> org.eclipse.jetty.server.HttpConnection.handle(HttpConnection.java:424)[67:org.eclipse.jetty.server:7.1.6.v20100715]
>     at
> org.eclipse.jetty.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:506)[62:org.eclipse.jetty.io:7.1.6.v20100715]
>     at
> org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:436)[61:org.eclipse.jetty.util:7.1.6.v20100715]
>     at java.lang.Thread.run(Thread.java:680)[:1.6.0_22]
>
> Any idea is welcome ?
>
> Regards,
>
> Charles


Mime
View raw message