Caller unauthorized on using a ejb3 statetlesssessionbean fr
praenti Oct 1, 2009 6:16 AMHi everybody,
I have a big problem using JAAS in JBoss 5.1.0GA, which I try to solve about 2 days (my employer is not very amused of that...). I use a own JASSLoginModule to authenticate a user on a LDAP directory. The roleSet is fetched from a database. This part works as I can see and give me the result - "AdminUser".
But now when I call a EJB stateless session bean, I always get the Caller unauthorized error (Stacktrace is at bottom of the message).
Can anybody give me a hint whats wrong.
The Constants in the @RolesAllowed has "AdminUser" in the list. The class is also attached at the end of the message
javax.ejb.EJBAccessException: Caller unauthorized at org.jboss.ejb3.security.RoleBasedAuthorizationInterceptorv2.invoke(Ro leBasedAuthorizationInterceptorv2.java:199) at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation. java:102) at org.jboss.ejb3.security.Ejb3AuthenticationInterceptorv2.invoke(Ejb3Au thenticationInterceptorv2.java:186) at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation. java:102) at org.jboss.ejb3.ENCPropagationInterceptor.invoke(ENCPropagationInterce ptor.java:41) at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation. java:102) at org.jboss.ejb3.BlockContainerShutdownInterceptor.invoke(BlockContaine rShutdownInterceptor.java:67) at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation. java:102) at org.jboss.aspects.currentinvocation.CurrentInvocationInterceptor.invo ke(CurrentInvocationInterceptor.java:67) at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation. java:102) at org.jboss.ejb3.session.SessionSpecContainer.invoke(SessionSpecContain er.java:176) at org.jboss.ejb3.session.SessionSpecContainer.invoke(SessionSpecContain er.java:216) at org.jboss.ejb3.proxy.impl.handler.session.SessionProxyInvocationHandl erBase.invoke(SessionProxyInvocationHandlerBase.java:207) at org.jboss.ejb3.proxy.impl.handler.session.SessionProxyInvocationHandl erBase.invoke(SessionProxyInvocationHandlerBase.java:164) at $Proxy1287.getAllUsers(Unknown Source) at vwg.yyy.cancard.ui.action.Usermanagement.Usermanagement.list(Userman agement.java:41) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl. java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces sorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultA ctionInvocation.java:404) at com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(Defa ultActionInvocation.java:267) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionI nvocation.java:229) at com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doInte rcept(DefaultWorkflowInterceptor.java:221) at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept (MethodFilterInterceptor.java:86) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(Default ActionInvocation.java:224) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(Default ActionInvocation.java:223) at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTim erStack.java:455) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionI nvocation.java:221) at com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(V alidationInterceptor.java:150) at org.apache.struts2.interceptor.validation.AnnotationValidationInterce ptor.doIntercept(AnnotationValidationInterceptor.java:48) at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept (MethodFilterInterceptor.java:86) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(Default ActionInvocation.java:224) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(Default ActionInvocation.java:223) at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTim erStack.java:455) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionI nvocation.java:221) at com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.interc ept(ConversionErrorInterceptor.java:123) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(Default ActionInvocation.java:224) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(Default ActionInvocation.java:223) at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTim erStack.java:455) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionI nvocation.java:221) at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept (ParametersInterceptor.java:167) at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept (MethodFilterInterceptor.java:86) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(Default ActionInvocation.java:224) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(Default ActionInvocation.java:223) at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTim erStack.java:455) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionI nvocation.java:221) at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.inter cept(StaticParametersInterceptor.java:105) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(Default ActionInvocation.java:224) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(Default ActionInvocation.java:223) at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTim erStack.java:455) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionI nvocation.java:221) at org.apache.struts2.interceptor.CheckboxInterceptor.intercept(Checkbox Interceptor.java:83) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(Default ActionInvocation.java:224) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(Default ActionInvocation.java:223) at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTim erStack.java:455) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionI nvocation.java:221) at org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUp loadInterceptor.java:207) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(Default ActionInvocation.java:224) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(Default ActionInvocation.java:223) at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTim erStack.java:455) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionI nvocation.java:221) at com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept( ModelDrivenInterceptor.java:74) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(Default ActionInvocation.java:224) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(Default ActionInvocation.java:223) at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTim erStack.java:455) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionI nvocation.java:221) at com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.inte rcept(ScopedModelDrivenInterceptor.java:127) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(Default ActionInvocation.java:224) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(Default ActionInvocation.java:223) at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTim erStack.java:455) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionI nvocation.java:221) at org.apache.struts2.interceptor.ProfilingActivationInterceptor.interce pt(ProfilingActivationInterceptor.java:107) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(Default ActionInvocation.java:224) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(Default ActionInvocation.java:223) at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTim erStack.java:455) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionI nvocation.java:221) at org.apache.struts2.interceptor.debugging.DebuggingInterceptor.interce pt(DebuggingInterceptor.java:206) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(Default ActionInvocation.java:224) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(Default ActionInvocation.java:223) at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTim erStack.java:455) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionI nvocation.java:221) at com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(Cha iningInterceptor.java:115) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(Default ActionInvocation.java:224) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(Default ActionInvocation.java:223) at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTim erStack.java:455) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionI nvocation.java:221) at com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInt erceptor.java:143) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(Default ActionInvocation.java:224) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(Default ActionInvocation.java:223) at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTim erStack.java:455) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionI nvocation.java:221) at com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(Pr epareInterceptor.java:121) at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept (MethodFilterInterceptor.java:86) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(Default ActionInvocation.java:224) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(Default ActionInvocation.java:223) at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTim erStack.java:455) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionI nvocation.java:221) at org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(Ser vletConfigInterceptor.java:170) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(Default ActionInvocation.java:224) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(Default ActionInvocation.java:223) at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTim erStack.java:455) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionI nvocation.java:221) at com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasI nterceptor.java:123) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(Default ActionInvocation.java:224) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(Default ActionInvocation.java:223) at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTim erStack.java:455) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionI nvocation.java:221) at com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.inter cept(ExceptionMappingInterceptor.java:176) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(Default ActionInvocation.java:224) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(Default ActionInvocation.java:223) at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTim erStack.java:455) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionI nvocation.java:221) at vwg.yyy.cancard.ui.interceptor.RolecheckUsermanagerInterceptor.conti nueAction(RolecheckUsermanagerInterceptor.java:86) at vwg.yyy.cancard.ui.interceptor.RolecheckUsermanagerInterceptor.inter cept(RolecheckUsermanagerInterceptor.java:71) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(Default ActionInvocation.java:224) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(Default ActionInvocation.java:223) at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTim erStack.java:455) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionI nvocation.java:221) at vwg.yyy.cancard.ui.interceptor.JAASLoginInterceptor.intercept(JAASLo ginInterceptor.java:78) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(Default ActionInvocation.java:224) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(Default ActionInvocation.java:223) at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTim erStack.java:455) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionI nvocation.java:221) at com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doInte rcept(DefaultWorkflowInterceptor.java:221) at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept (MethodFilterInterceptor.java:86) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(Default ActionInvocation.java:224) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(Default ActionInvocation.java:223) at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTim erStack.java:455) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionI nvocation.java:221) at com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(V alidationInterceptor.java:150) at org.apache.struts2.interceptor.validation.AnnotationValidationInterce ptor.doIntercept(AnnotationValidationInterceptor.java:48) at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept (MethodFilterInterceptor.java:86) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(Default ActionInvocation.java:224) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(Default ActionInvocation.java:223) at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTim erStack.java:455) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionI nvocation.java:221) at com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.interc ept(ConversionErrorInterceptor.java:123) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(Default ActionInvocation.java:224) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(Default ActionInvocation.java:223) at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTim erStack.java:455) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionI nvocation.java:221) at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept (ParametersInterceptor.java:167) at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept (MethodFilterInterceptor.java:86) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(Default ActionInvocation.java:224) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(Default ActionInvocation.java:223) at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTim erStack.java:455) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionI nvocation.java:221) at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.inter cept(StaticParametersInterceptor.java:105) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(Default ActionInvocation.java:224) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(Default ActionInvocation.java:223) at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTim erStack.java:455) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionI nvocation.java:221) at org.apache.struts2.interceptor.CheckboxInterceptor.intercept(Checkbox Interceptor.java:83) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(Default ActionInvocation.java:224) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(Default ActionInvocation.java:223) at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTim erStack.java:455) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionI nvocation.java:221) at org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUp loadInterceptor.java:207) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(Default ActionInvocation.java:224) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(Default ActionInvocation.java:223) at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTim erStack.java:455) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionI nvocation.java:221) at com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept( ModelDrivenInterceptor.java:74) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(Default ActionInvocation.java:224) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(Default ActionInvocation.java:223) at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTim erStack.java:455) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionI nvocation.java:221) at com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(Cha iningInterceptor.java:115) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(Default ActionInvocation.java:224) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(Default ActionInvocation.java:223) at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTim erStack.java:455) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionI nvocation.java:221) at com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInt erceptor.java:143) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(Default ActionInvocation.java:224) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(Default ActionInvocation.java:223) at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTim erStack.java:455) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionI nvocation.java:221) at com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(Pr epareInterceptor.java:121) at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept (MethodFilterInterceptor.java:86) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(Default ActionInvocation.java:224) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(Default ActionInvocation.java:223) at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTim erStack.java:455) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionI nvocation.java:221) at org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(Ser vletConfigInterceptor.java:170) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(Default ActionInvocation.java:224) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(Default ActionInvocation.java:223) at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTim erStack.java:455) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionI nvocation.java:221) at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept (ParametersInterceptor.java:167) at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept (MethodFilterInterceptor.java:86) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(Default ActionInvocation.java:224) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(Default ActionInvocation.java:223) at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTim erStack.java:455) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionI nvocation.java:221) at com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasI nterceptor.java:123) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(Default ActionInvocation.java:224) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(Default ActionInvocation.java:223) at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTim erStack.java:455) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionI nvocation.java:221) at com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.inter cept(ExceptionMappingInterceptor.java:176) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(Default ActionInvocation.java:224) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(Default ActionInvocation.java:223) at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTim erStack.java:455) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionI nvocation.java:221) at vwg.yyy.cancard.ui.interceptor.RedirectMessageInterceptor.doIntercep t(RedirectMessageInterceptor.java:51) at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept (MethodFilterInterceptor.java:86) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(Default ActionInvocation.java:224) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(Default ActionInvocation.java:223) at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTim erStack.java:455) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionI nvocation.java:221) at org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.j ava:50) at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.jav a:504) at org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatc her.java:419) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl icationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF ilterChain.java:206) at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFi lter.java:96) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl icationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF ilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperV alve.java:235) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextV alve.java:191) at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(Securit yAssociationValve.java:190) at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValv e.java:92) at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.proce ss(SecurityContextEstablishmentValve.java:126) at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.invok e(SecurityContextEstablishmentValve.java:70) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.j ava:127) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.j ava:102) at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedC onnectionValve.java:158) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineVal ve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.jav a:330) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java :829) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.proce ss(Http11Protocol.java:598) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:44 7) at java.lang.Thread.run(Thread.java:619)
UserFacadeBean.java:
/**
*
*/
package vwg.yyy.cancard.business.facade;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import javax.annotation.PostConstruct;
import javax.annotation.Resource;
import javax.annotation.security.RolesAllowed;
import javax.annotation.security.RunAs;
import javax.ejb.EJB;
import javax.ejb.Local;
import javax.ejb.Remote;
import javax.ejb.SessionContext;
import javax.ejb.Stateless;
import javax.persistence.EntityExistsException;
import javax.persistence.EntityNotFoundException;
import javax.security.auth.Subject;
import javax.security.jacc.PolicyContext;
import javax.security.jacc.PolicyContextException;
import org.apache.log4j.Logger;
import org.hibernate.exception.ConstraintViolationException;
import org.jboss.ejb3.annotation.SecurityDomain;
import org.jboss.security.auth.spi.ADLoginIdentifier;
import vwg.yyy.cancard.ApplicationConstants;
import vwg.yyy.cancard.MyApplicationException;
import vwg.yyy.cancard.business.user.TooManyHitsException;
import vwg.yyy.cancard.dao.ApplicationRoleDao;
import vwg.yyy.cancard.dao.ApplicationUserDao;
import vwg.yyy.cancard.dao.DAOFactory;
import vwg.yyy.cancard.ldap.LDAPSearcher;
import vwg.yyy.cancard.model.basic.ApplicationRole;
import vwg.yyy.cancard.model.basic.ApplicationUser;
/**
* Implementation of user service interface.
*
* @author Michael Obster (michael.obster@epos-cat.de)
*/
@SecurityDomain("java:/jaas/cancardDomain")
@RolesAllowed({ApplicationConstants.ROLE_ADMIN, ApplicationConstants.ROLE_NORMAL, "internal"})
@RunAs("internal")
@Local({UserFacade.class})
@Remote({UserFacadeRemote.class})
@Stateless
public class UserFacadeBean implements UserFacade {
private static final String SUBJECT_CONTEXT_KEY = "javax.security.auth.Subject.container";
private static Logger log = Logger.getLogger(UserFacadeBean.class);
/**
* Session context for security checks.
*/
@Resource
private SessionContext ctx;
@EJB
private DAOFactory daoFactory;
private ApplicationUserDao userDao;
private ApplicationRoleDao roleDao;
/**
* Inits the daos.
*/
@PostConstruct
public void initDao() {
userDao = daoFactory.getApplicationUserDao();
roleDao = daoFactory.getApplicationRoleDao();
}
public List<ApplicationUser> getAllUsers() {
return userDao.findAllOrdered("lastname, firstname");
}
public ApplicationUser saveUser(ApplicationUser user, boolean updateZebra) {
if (updateZebra) {
// Update current user from zebra
LDAPSearcher searcher = new LDAPSearcher();
searcher.updateUserAD(user);
}
return userDao.merge(user);
}
public boolean deleteUser(String gid) {
try {
userDao.remove(gid);
} catch (EntityNotFoundException e) {
log.debug(e);
throw new MyApplicationException("db.alreadydeleted");
} catch (EntityExistsException e) {
log.debug(e.getCause());
if (e.getCause() instanceof ConstraintViolationException) {
// User still used elsewhere
throw new MyApplicationException("db.stillused");
}
else {
// Should never happen
throw (EntityExistsException) e.fillInStackTrace();
}
}
return true;
}
public ApplicationUser findUserById(String userId) throws EntityNotFoundException {
return userDao.findById(userId);
}
public ApplicationUser findFullUserById(String userId) throws EntityNotFoundException {
ApplicationUser user = userDao.findById(userId);
return userDao.fetchFullUser(user);
}
public List<ApplicationRole> getAllRoles() {
return roleDao.findAllOrdered("reihe");
}
public List<ApplicationUser> findDirectoryUsers(ApplicationUser user)
throws TooManyHitsException {
LDAPSearcher searcher = new LDAPSearcher();
return searcher.findByCriteriaAD(user);
}
public ApplicationUser findDirectoryUser(String userId) {
LDAPSearcher searcher = new LDAPSearcher();
ApplicationUser user = new ApplicationUser();
user.setId(userId);
searcher.updateUserAD(user);
return user;
}
@Override
public List<ApplicationUser> findByCriteria(String firstname,
String lastname, String department, String phone,
String email, String id) {
LDAPSearcher searcher = new LDAPSearcher();
return searcher.findByCriteria(firstname, lastname,
department, phone, email, id);
}
@Override
public List<ApplicationRole> getRolesNotUser(ApplicationUser user) {
user = userDao.fetchFullUser(user);
return roleDao.findNonRolesOfUser(user);
}
@Override
public List<ApplicationRole> getUserRoles(ApplicationUser user) {
user = userDao.fetchFullUser(user);
return new ArrayList<ApplicationRole>(user.getRole());
}
@Override
public boolean addRole(ApplicationRole role, ApplicationUser user) {
user = userDao.fetchFullUser(user);
return userDao.linkRoleToUser(role, user);
}
@Override
public boolean deleteRole(ApplicationRole role, ApplicationUser user) {
user = userDao.fetchFullUser(user);
return userDao.unlinkRoleToUser(role, user);
}
@Override
public ApplicationRole findRoleById(String roleId)
throws EntityNotFoundException {
return roleDao.findById(roleId);
}
public void updateUser() throws MyApplicationException {
// Get user from DB
LDAPSearcher searcher = new LDAPSearcher();
ApplicationUser dbUser=null;
try {
dbUser = userDao.findById(getUserId(ctx));
}
catch(EntityNotFoundException e) {
throw new MyApplicationException("User not found in database.", e);
}
// Get current user data from zebra
// searcher.updateUserAD(dbUser);
// Save user
// userDao.merge(dbUser);
}
/**
* Static helper method: Get userId from EJB context.
*
* @param ctx SessionContext for no-ad-case
* @return userId
*/
public static String getUserId(SessionContext ctx) {
try {
Subject subject = (Subject) PolicyContext.getContext(UserFacadeBean.SUBJECT_CONTEXT_KEY);
Set<ADLoginIdentifier> pc = subject.getPublicCredentials(ADLoginIdentifier.class);
if (pc == null || pc.isEmpty()) {
/*
* Should only happen in JUnit case, return user name as GID
* NOT dangerous because:
* - Spiider is the only login method on production server
* - The following update from Zebra will fail and throw an Exception
*/
log.warn("Logging in without ADLoginIdentifier, should only happen in JUnit test!");
return ctx.getCallerPrincipal().getName();
}
else {
return pc.iterator().next().getUserId();
}
} catch (PolicyContextException e) {
throw new MyApplicationException("Jaas subject could not be retrieved.", e);
}
}
@Override
public boolean userHasRole(ApplicationRole role, ApplicationUser user) {
user = userDao.fetchFullUser(user);
Set<ApplicationRole> roles = user.getRole();
if (roles.contains(role)) {
return true;
}
else {
return false;
}
}
@Override
public ApplicationRole getRolesById(String roleid) {
ApplicationRole role = roleDao.findById(roleid);
return role;
}
}