Hi, I'm trying to setup a route which would send some of my data to the remote EJB eg:
<from uri="file:data/inbox?noop=true"/> <policy ref="admin"> <to uri="bean:TestReceiverService?method=myMethod"/> </policy> <log message="sent!!" loggingLevel="INFO"/> I'm using spring context for configuration, but I can't stop getting the org.apache.camel.RuntimeCamelException: javax.ejb.EJBAccessException: Authentication failure exception when invoking the beans method. If I use the not-JAAS protected bean everything works like a charm. One would suggest using the ejb component instead of bean, but I would argue as if I configure my Registry to resolve names from the JBoss JNDI I can't get normal spring beans located in my routes. So, as I understand, I'm forced to using spring beans and wire them to EJB's. I've done that in the next way: <jee:remote-slsb environment-ref="jndiProps" id="TestReceiverService" jndi-name="ear-name/TestReceiverService/remote" business-interface="services.TestReceiverServiceRemote"/> I have the spring security configured using <spring-security:authentication-manager alias="authenticationManager"> <spring-security:authentication-provider user-service-ref="userDetailsService"/> </spring-security:authentication-manager> <spring-security:user-service id="userDetailsService"> <spring-security:user name="myUser" password="myPass" authorities="ROLE_JBOSS_CLIENT_LOGIN"/> </spring-security:user-service> <authorizationPolicy id="admin" access="ROLE_JBOSS_CLIENT_LOGIN" authenticationManager="authenticationManager" accessDecisionManager="accessDecisionManager" xmlns="http://camel.apache.org/schema/spring-security"/> and JAAS configured using <bean id="jaasAuthenticationProvider" class="org.springframework.security.authentication.jaas.JaasAuthenticationProvider" > <property name="loginConfig" value="jaas.conf"/> <property name="loginContextName" value="clientAuth"/> <property name="callbackHandlers"> <list> <bean class="org.springframework.security.authentication.jaas.JaasNameCallbackHandler"/> <bean class="org.springframework.security.authentication.jaas.JaasPasswordCallbackHandler"/> </list> </property> </bean> But this does not work for authentication, even if I set the Authenticated user both with the Exchange and Spring like: Collection<GrantedAuthority> authorities = new LinkedList<GrantedAuthority>(); authorities.add(new GrantedAuthorityImpl("ROLE_JBOSS_CLIENT_LOGIN")); UsernamePasswordAuthenticationToken authToken = new UsernamePasswordAuthenticationToken("myUser", "myPass", authorities ); // wrap it in a Subject Subject subject = new Subject(); subject.getPrincipals().add(authToken); // place the Subject in the In message exchange.getIn().setHeader(Exchange.AUTHENTICATION, subject); SecurityContextHolder.getContext().setAuthentication(authToken); The only thing that(obviously) helps is manually doing the LoginContext ctx = new LoginContext("clientAuth", new UsernamePasswordHandler("myUser","myPass")); ctx.login(); in the rote. *So my question is whether there is a way to tell camel to authenticate a given user automatically when the request to the JAAS protected resource is issued, without adding the manual ClientLogin code. Or am I looking in the wrong direction?* The workaround I have now(adding a processor which would do the ctx.login()) works but I'm really concerned about correctness of this approach. -- View this message in context: http://camel.465427.n5.nabble.com/Can-t-get-JAAS-working-for-EJB-3-0-on-JBoss-while-routing-tp4801889p4801889.html Sent from the Camel - Users mailing list archive at Nabble.com.