I try to consume an axis 2 web service with rampart security I'm stuck with thsi qustion for fthree days but know I get thsi exception: Exception in thread "main" org.apache.axis2.AxisFault: 1 at org.apache.axis2.util.Utils.getInboundFaultFromMessageContext(Utils.java:531)OutInAxisOperation.java:375)OutInAxisOperation.java:421)OutInAxisOperation.java:229)OperationClient.java:165)ServiceClient.java:555)ServiceClient.java:531)zltestcl.java:55) --------------------------------------------------------------------------------------------- Here is my PWCBhanler,.java packagetan;importorg.apache.ws.security.WSPasswordCallback;importjavax.security.auth.callback.Callback;importjavax.security.auth.callback.CallbackHandler;importjavax.security.auth.callback.UnsupportedCallbackException;importjava.io.IOException;public UnsupportedCallbackException {classPWCBHandler implementsCallbackHandler {publicvoidhandle(Callback[] callbacks) throwsIOException,for(inti = 0; i < callbacks.length; i++) {//When the server side need to authenticate the userWSPasswordCallback pwcb = (WSPasswordCallback)callbacks[i]; pwcb.setPassword( } }if(pwcb.getIdentifier().equals("bob") ) {"bobPW");} } here is my service.xml <service name="ztest" > <module ref="rampart"/> <Description> Please Type your service description here </Description> <messageReceivers> <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only" class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver" /> <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out" class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/> </messageReceivers> <parameter name="ServiceClass" locked="false">tan.ztest</parameter> <wsp:Policy wsu:Id="UTOverTransport" 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:SignedSupportingTokens xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy"> <wsp:Policy> <sp:UsernameToken sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient" /> </wsp:Policy> </sp:SignedSupportingTokens> <ramp:RampartConfig xmlns:ramp="http://ws.apache.org/rampart/policy"> <ramp:passwordCallbackClass>tan.PWCBHandler</ramp:passwordCallbackClass> </ramp:RampartConfig> </wsp:All> </wsp:ExactlyOne> </wsp:Policy> </service> --------------------------------------------------------------------------------------------------------------------------------- Here is my policy.xml <wsp:Policy wsu:Id="UTOverTransport" 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:SignedSupportingTokens xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy"> <wsp:Policy> <sp:UsernameToken sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient" /> </wsp:Policy> </sp:SignedSupportingTokens> <ramp:RampartConfig xmlns:ramp="http://ws.apache.org/rampart/policy"> <ramp:user>bob</ramp:user> <ramp:passwordCallbackClass>tan.PWCBHandler</ramp:passwordCallbackClass> </ramp:RampartConfig> </wsp:All> </wsp:ExactlyOne> </wsp:Policy> (the only difference is th added <ramp:user > paramete4r from services.xml ------------------------------------------------------------------------------------------------------------------------ and here is my client.java package tan; import org.apache.axiom.om.OMAbstractFactory; import org.apache.axiom.om.OMElement; import org.apache.axiom.om.OMFactory; import org.apache.axiom.om.OMNamespace; import org.apache.axiom.om.impl.builder.StAXOMBuilder; import org.apache.axis2.addressing.EndpointReference; import org.apache.axis2.client.Options; import org.apache.axis2.client.ServiceClient; import org.apache.axis2.context.ConfigurationContext; import org.apache.axis2.context.ConfigurationContextFactory; import org.apache.neethi.Policy; import org.apache.neethi.PolicyEngine; import org.apache.rampart.RampartMessageData; import javax.xml.namespace.QName; public class zltestcl { public static void main(String[] args) throws Exception { if(args.length != 3) { System.out.println("Usage: $java Client endpoint_address client_repo_path policy_xml_path"); } ConfigurationContext ctx = ConfigurationContextFactory.createConfigurationContextFromFileSystem(args[1], null); ServiceClient client = new ServiceClient(ctx, null); Options options = new Options(); options.setAction("urn:testws"); options.setTo(new EndpointReference(args[0])); options.setProperty(RampartMessageData.KEY_RAMPART_POLICY, loadPolicy(args[2])); client.setOptions(options); client.engageModule("rampart"); OMElement response = client.sendReceive(getPayload("Hello world")); System.out.println(response); } private static Policy loadPolicy(String xmlPath) throws Exception { StAXOMBuilder builder = new StAXOMBuilder(xmlPath); return PolicyEngine.getPolicy(builder.getDocumentElement()); } private static OMElement getPayload(String value) { OMFactory factory = OMAbstractFactory.getOMFactory(); OMNamespace ns = factory.createOMNamespace("http://tan%22,%22ns1/"); OMElement elem = factory.createOMElement("testws", ns); OMElement childElem = factory.createOMElement("param0", null); childElem.setText(value); elem.addChild(childElem); return elem; } }
---------------------------------------------------- !!! note in my prvicy.xml I changd the <ramp user_ and instead of bob I wrote mary and I got the exception: No password supplied by the callback handler for user: mari so it seems thart my client code is reading the policy.xml at org.apache.axis2.description.OutInAxisOperationClient.handleResponse( at org.apache.axis2.description.OutInAxisOperationClient.send( at org.apache.axis2.description.OutInAxisOperationClient.executeImpl( at org.apache.axis2.client.OperationClient.execute( at org.apache.axis2.client.ServiceClient.sendReceive( at org.apache.axis2.client.ServiceClient.sendReceive( at tan.zltestcl.main(