Very strange.. It LOOKS like the the message properties aren't being properly put into the message itself, but I'm really not sure how that's possible. Is there a way you could create a simple testcase? I don't think you even need a server for this as this is occuring prior to even connecting. A simple client + wsdl w/ policy will likely be enough.
Dan On Friday, August 03, 2012 12:07:36 PM Aaron Stromas wrote: > Hello, > > I have received a WSDL that contains a policy element > > <wsp:Policy wsu:Id="UsernameToken" xmlns:wsu=" > http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility > -1.0.xsd" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy"> > <wsp:ExactlyOne> > <wsp:All> > <sp:SupportingTokens xmlns:sp=" > http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702"> > <wsp:Policy> > <sp:UsernameToken sp:IncludeToken=" > http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702/IncludeToken/Alw > aysToRecipient" /> > </wsp:Policy> > </sp:SupportingTokens> > </wsp:All> > </wsp:ExactlyOne> > </wsp:Policy> > > so I decided that this is a WS-SecurityPolicy use case my client should > authenticate itself this way > > Map ctx = ((BindingProvider)port).getRequestContext(); > ctx.put("ws-security.username", "aname"); > ctx.put("ws-security.callback-handler", > PasswordCallback.class.getName()); > > Unfortunately, I'm getting the following stack trace > > WARNING: Interceptor for { > http://www.xmlns.enterprise.com/HRM/WorkforceAdmin/service/GetAllEmployees > InfoImpl/1.0/}Get<http://www.xmlns.walmartstores.com/HRM/WorkforceAdmin/se > rvice/GetGlobalAssociateInfoImpl/1.0/%7DGetGlobalAssoc> > AllEmployees<http://www.xmlns.walmartstores.com/HRM/WorkforceAdmin/servic > e/GetGlobalAssociateInfoImpl/1.0/%7DGetGlobalAssoc> > }<http://mlns.walmartstores.com/HRM/WorkforceAdmin/wsdl/GetGlobalAssociat > eInfoIntf/1.0/%7DgetPersonalProfile> > GetAllEmployeesInfoImpl#{http://x<http://www.xmlns.walmartstores.com/HRM/ > WorkforceAdmin/service/GetGlobalAssociateInfoImpl/1.0/%7DGetGlobalAssoc> > mlns.enterprise<http://www.xmlns.walmartstores.com/HRM/WorkforceAdmin/ser > vice/GetGlobalAssociateInfoImpl/1.0/%7DGetGlobalAssoc> > .com/HRM/WorkforceAdmin/wsdl/GetAllEmployees<http://www.xmlns.walmartstor > es.com/HRM/WorkforceAdmin/service/GetGlobalAssociateInfoImpl/1.0/%7DGetGlo > balAssoc>InfoIntf/1.0/}getPersonalProfile has thrown exception, unwinding > now > org.apache.cxf.ws.policy.PolicyException: No username available > at > org.apache.cxf.ws.security.wss4j.UsernameTokenInterceptor.policyNotAsserte > d(UsernameTokenInterceptor.java:398) at > org.apache.cxf.ws.security.wss4j.UsernameTokenInterceptor.addUsernameToken > (UsernameTokenInterceptor.java:341) at > org.apache.cxf.ws.security.wss4j.UsernameTokenInterceptor.addUsernameToken > (UsernameTokenInterceptor.java:267) at > org.apache.cxf.ws.security.wss4j.UsernameTokenInterceptor.handleMessage(Us > ernameTokenInterceptor.java:112) at > org.apache.cxf.ws.security.wss4j.UsernameTokenInterceptor.handleMessage(Us > ernameTokenInterceptor.java:76) at > org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorCha > in.java:263) at > org.apache.cxf.endpoint.ClientImpl.doInvoke(ClientImpl.java:533) at > org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:463) at > org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:366) at > org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:319) at > org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:88) > at > org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:134) > at $Proxy29.getPersonalProfile(Unknown Source) > at > com.rsa.pso.common.ws.hcm.client.HcmClient.main(HcmClient.java:95) > Exception in thread "main" javax.xml.ws.soap.SOAPFaultException: No > username available > at > org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:156) > at $Proxy29.getPersonalProfile(Unknown Source) > at > com.rsa.pso.common.ws.hcm.client.HcmClient.main(HcmClient.java:95) > Caused by: org.apache.cxf.ws.policy.PolicyException: No username available > at > org.apache.cxf.ws.security.wss4j.UsernameTokenInterceptor.policyNotAsserte > d(UsernameTokenInterceptor.java:398) at > org.apache.cxf.ws.security.wss4j.UsernameTokenInterceptor.addUsernameToken > (UsernameTokenInterceptor.java:341) at > org.apache.cxf.ws.security.wss4j.UsernameTokenInterceptor.addUsernameToken > (UsernameTokenInterceptor.java:267) at > org.apache.cxf.ws.security.wss4j.UsernameTokenInterceptor.handleMessage(Us > ernameTokenInterceptor.java:112) at > org.apache.cxf.ws.security.wss4j.UsernameTokenInterceptor.handleMessage(Us > ernameTokenInterceptor.java:76) at > org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorCha > in.java:263) at > org.apache.cxf.endpoint.ClientImpl.doInvoke(ClientImpl.java:533) at > org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:463) at > org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:366) at > org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:319) at > org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:88) > at > org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:134) > > What am doing wrong, please? TIA, -- Daniel Kulp [email protected] - http://dankulp.com/blog Talend Community Coder - http://coders.talend.com
