You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ws.apache.org by "Colm O hEigeartaigh (JIRA)" <ji...@apache.org> on 2013/09/17 14:49:52 UTC

[jira] [Resolved] (WSS-230) WSS4JInInterceptor.getAction throws "No security action was defined" when using Spring default-autowire="byType"

     [ https://issues.apache.org/jira/browse/WSS-230?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Colm O hEigeartaigh resolved WSS-230.
-------------------------------------

    Resolution: Not A Problem
      Assignee: Colm O hEigeartaigh  (was: Ruchith Udayanga Fernando)
    
> WSS4JInInterceptor.getAction throws "No security action was defined" when using Spring default-autowire="byType"
> ----------------------------------------------------------------------------------------------------------------
>
>                 Key: WSS-230
>                 URL: https://issues.apache.org/jira/browse/WSS-230
>             Project: WSS4J
>          Issue Type: Bug
>    Affects Versions: 1.5.8
>         Environment: spring 2.5.6, wss4j 1.5.8
>            Reporter: Cheng Lee
>            Assignee: Colm O hEigeartaigh
>              Labels: spring, wss4j
>         Attachments: webservice_sample_apache_cxf.tar.gz
>
>
> I'm getting "No security action was defined!":
> May 6, 2010 12:11:18 PM org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor getAction
> WARNING: No security action was defined!
> May 6, 2010 12:11:18 PM org.apache.cxf.phase.PhaseInterceptorChain doDefaultLoggingWARNING: Interceptor for {http://service.auth.company.com/}corporateAuthService has thrown exception, unwinding now
> org.apache.cxf.binding.soap.SoapFault: No security action was defined!
> 	at org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor.getAction(WSS4JInInterceptor.java:421)
> 	at org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor.handleMessage(WSS4JInInterceptor.java:189)
> 	at org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor.handleMessage(WSS4JInInterceptor.java:78)
> 	at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:243)
> 	at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:110)
> 	at org.apache.cxf.transport.servlet.ServletDestination.invoke(ServletDestination.java:98)
> 	at org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:423)
> 	at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:178)
> 	at org.apache.cxf.transport.servlet.AbstractCXFServlet.invoke(AbstractCXFServlet.java:142)
> 	at org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:179)
> 	at org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractHTTPServlet.java:103)
> 	at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
> 	at org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:159)
> 	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
> 	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
> 	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
> 	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
> 	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
> 	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
> 	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
> 	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
> 	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:852)
> 	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
> 	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
> 	at java.lang.Thread.run(Thread.java:619)
> When using Spring autowire by type, WSS4jInInterceptor.setProperties() is called twice, thus overwriting my configuration below:
> <beans xmlns="http://www.springframework.org/schema/beans"
>   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jaxws="http://cxf.apache.org/jaxws"
>   xsi:schemaLocation="http://www.springframework.org/schema/beans
>           http://www.springframework.org/schema/beans/spring-beans.xsd
>           http://cxf.apache.org/jaxws
>           http://cxf.apache.org/schemas/jaxws.xsd"
> default-autowire="byType">
>   <import resource="classpath:META-INF/cxf/cxf.xml" />
>   <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />
>   <import resource="classpath:META-INF/cxf/cxf-servlet.xml" />
>   <jaxws:endpoint id="auth" implementor="#authServiceImpl"
>     address="/swAuth">
>     <jaxws:inInterceptors>
>       <bean class="org.apache.cxf.binding.soap.saaj.SAAJInInterceptor" />
>       <bean class="org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor">
>         <constructor-arg>
>           <map>
>             <entry key="action" value="UsernameToken" />
>             <entry key="passwordType" value="PasswordText" />
>             <entry key="passwordCallbackRef">
>               <ref bean="serverPasswordCallback" />
>             </entry>
>           </map>
>         </constructor-arg>
>       </bean>
>     </jaxws:inInterceptors>
>   </jaxws:endpoint>
>   <bean id="serverPasswordCallback" class="com.company.auth.service.ServerPasswordCallback">
>     <property name="username">
>       <value>ws-client</value>
>     </property>
>     <property name="password">
>       <value>123</value>
>     </property>
>   </bean>
>   <bean id="authServiceImpl" class="com.company.auth.service.AuthServiceImpl">
>     <property name="employeeDao" ref="employeeDao" />
>   </bean>
> </beans>
> ----------
> This is evidenced while debugging:
> First time at WSS4JInInterceptor instantiation it calls setProperties() with my values:
> Thread [main] (Suspended (breakpoint at line 112 in WSS4JInInterceptor))	
> 	WSS4JInInterceptor.<init>(Map<String,Object>) line: 112	
> 	NativeConstructorAccessorImpl.newInstance0(Constructor, Object[]) line: not available [native method]	
> 	NativeConstructorAccessorImpl.newInstance(Object[]) line: 39	
> 	DelegatingConstructorAccessorImpl.newInstance(Object[]) line: 27	
> 	Constructor<T>.newInstance(Object...) line: 513	
> 	BeanUtils.instantiateClass(Constructor, Object[]) line: 100	
> 	CglibSubclassingInstantiationStrategy(SimpleInstantiationStrategy).instantiate(RootBeanDefinition, String, BeanFactory, Constructor, Object[]) line: 87	
> 	ConstructorResolver.autowireConstructor(String, RootBeanDefinition, Constructor[], Object[]) line: 248	
> 	DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).autowireConstructor(String, RootBeanDefinition, Constructor[], Object[]) line: 925	
> 	DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).createBeanInstance(String, RootBeanDefinition, Object[]) line: 835	
> 	DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).doCreateBean(String, RootBeanDefinition, Object[]) line: 440	
> 	AbstractAutowireCapableBeanFactory$1.run() line: 409	
> 	AccessController.doPrivileged(PrivilegedAction<T>, AccessControlContext) line: not available [native method]	
> 	DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).createBean(String, RootBeanDefinition, Object[]) line: 380	
> 	BeanDefinitionValueResolver.resolveInnerBean(Object, String, BeanDefinition) line: 219	
> 	BeanDefinitionValueResolver.resolveValueIfNecessary(Object, Object) line: 117	
> 	BeanDefinitionValueResolver.resolveManagedList(Object, List) line: 287	
> 	BeanDefinitionValueResolver.resolveValueIfNecessary(Object, Object) line: 126	
> 	DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).applyPropertyValues(String, BeanDefinition, BeanWrapper, PropertyValues) line: 1245	
> 	DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).populateBean(String, AbstractBeanDefinition, BeanWrapper) line: 1010	
> 	DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).doCreateBean(String, RootBeanDefinition, Object[]) line: 472	
> 	AbstractAutowireCapableBeanFactory$1.run() line: 409	
> 	AccessController.doPrivileged(PrivilegedAction<T>, AccessControlContext) line: not available [native method]	
> 	DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).createBean(String, RootBeanDefinition, Object[]) line: 380	
> 	AbstractBeanFactory$1.getObject() line: 264	
> 	DefaultListableBeanFactory(DefaultSingletonBeanRegistry).getSingleton(String, ObjectFactory) line: 222	
> 	DefaultListableBeanFactory(AbstractBeanFactory).doGetBean(String, Class, Object[], boolean) line: 261	
> 	DefaultListableBeanFactory(AbstractBeanFactory).getBean(String, Class, Object[]) line: 185	
> 	DefaultListableBeanFactory(AbstractBeanFactory).getBean(String) line: 164	
> 	DefaultListableBeanFactory.preInstantiateSingletons() line: 429	
> 	XmlWebApplicationContext(AbstractApplicationContext).finishBeanFactoryInitialization(ConfigurableListableBeanFactory) line: 728	
> 	XmlWebApplicationContext(AbstractApplicationContext).refresh() line: 380	
> 	ContextLoader.createWebApplicationContext(ServletContext, ApplicationContext) line: 255	
> 	ContextLoader.initWebApplicationContext(ServletContext) line: 199	
> 	ContextLoaderListener.contextInitialized(ServletContextEvent) line: 45	
> 	StandardContext.listenerStart() line: 3972	
> 	StandardContext.start() line: 4467	
> 	StandardHost(ContainerBase).start() line: 1045	
> 	StandardHost.start() line: 722	
> 	StandardEngine(ContainerBase).start() line: 1045	
> 	StandardEngine.start() line: 443	
> 	StandardService.start() line: 516	
> 	StandardServer.start() line: 710	
> 	Catalina.start() line: 593	
> 	NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not available [native method]	
> 	NativeMethodAccessorImpl.invoke(Object, Object[]) line: 39	
> 	DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25	
> 	Method.invoke(Object, Object...) line: 597	
> 	Bootstrap.start() line: 289	
> 	Bootstrap.main(String[]) line: 414	
> And then another invokation to setProperties(Map):
> Thread [main] (Suspended (breakpoint at line 130 in AbstractWSS4JInterceptor))	
> 	WSS4JInInterceptor(AbstractWSS4JInterceptor).setProperties(Map<String,Object>) line: 130	
> 	NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not available [native method]	
> 	NativeMethodAccessorImpl.invoke(Object, Object[]) line: 39	
> 	DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25	
> 	Method.invoke(Object, Object...) line: 597	
> 	BeanWrapperImpl.setPropertyValue(BeanWrapperImpl$PropertyTokenHolder, PropertyValue) line: 840	
> 	BeanWrapperImpl.setPropertyValue(PropertyValue) line: 651	
> 	BeanWrapperImpl(AbstractPropertyAccessor).setPropertyValues(PropertyValues, boolean, boolean) line: 78	
> 	BeanWrapperImpl(AbstractPropertyAccessor).setPropertyValues(PropertyValues) line: 59	
> 	DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).applyPropertyValues(String, BeanDefinition, BeanWrapper, PropertyValues) line: 1276	
> 	DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).populateBean(String, AbstractBeanDefinition, BeanWrapper) line: 1010	
> 	DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).doCreateBean(String, RootBeanDefinition, Object[]) line: 472	
> 	AbstractAutowireCapableBeanFactory$1.run() line: 409	
> 	AccessController.doPrivileged(PrivilegedAction<T>, AccessControlContext) line: not available [native method]	
> 	DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).createBean(String, RootBeanDefinition, Object[]) line: 380	
> 	BeanDefinitionValueResolver.resolveInnerBean(Object, String, BeanDefinition) line: 219	
> 	BeanDefinitionValueResolver.resolveValueIfNecessary(Object, Object) line: 117	
> 	BeanDefinitionValueResolver.resolveManagedList(Object, List) line: 287	
> 	BeanDefinitionValueResolver.resolveValueIfNecessary(Object, Object) line: 126	
> 	DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).applyPropertyValues(String, BeanDefinition, BeanWrapper, PropertyValues) line: 1245	
> 	DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).populateBean(String, AbstractBeanDefinition, BeanWrapper) line: 1010	
> 	DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).doCreateBean(String, RootBeanDefinition, Object[]) line: 472	
> 	AbstractAutowireCapableBeanFactory$1.run() line: 409	
> 	AccessController.doPrivileged(PrivilegedAction<T>, AccessControlContext) line: not available [native method]	
> 	DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).createBean(String, RootBeanDefinition, Object[]) line: 380	
> 	AbstractBeanFactory$1.getObject() line: 264	
> 	DefaultListableBeanFactory(DefaultSingletonBeanRegistry).getSingleton(String, ObjectFactory) line: 222	
> 	DefaultListableBeanFactory(AbstractBeanFactory).doGetBean(String, Class, Object[], boolean) line: 261	
> 	DefaultListableBeanFactory(AbstractBeanFactory).getBean(String, Class, Object[]) line: 185	
> 	DefaultListableBeanFactory(AbstractBeanFactory).getBean(String) line: 164	
> 	DefaultListableBeanFactory.preInstantiateSingletons() line: 429	
> 	XmlWebApplicationContext(AbstractApplicationContext).finishBeanFactoryInitialization(ConfigurableListableBeanFactory) line: 728	
> 	XmlWebApplicationContext(AbstractApplicationContext).refresh() line: 380	
> 	ContextLoader.createWebApplicationContext(ServletContext, ApplicationContext) line: 255	
> 	ContextLoader.initWebApplicationContext(ServletContext) line: 199	
> 	ContextLoaderListener.contextInitialized(ServletContextEvent) line: 45	
> 	StandardContext.listenerStart() line: 3972	
> 	StandardContext.start() line: 4467	
> 	StandardHost(ContainerBase).start() line: 1045	
> 	StandardHost.start() line: 722	
> 	StandardEngine(ContainerBase).start() line: 1045	
> 	StandardEngine.start() line: 443	
> 	StandardService.start() line: 516	
> 	StandardServer.start() line: 710	
> 	Catalina.start() line: 593	
> 	NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not available [native method]	
> 	NativeMethodAccessorImpl.invoke(Object, Object[]) line: 39	
> 	DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25	
> 	Method.invoke(Object, Object...) line: 597	
> 	Bootstrap.start() line: 289	
> 	Bootstrap.main(String[]) line: 414	

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@ws.apache.org
For additional commands, e-mail: dev-help@ws.apache.org