Hi Nandana, Following is my 'OutflowSecurity' entry in client side axis2.xml.
<parameter name="OutflowSecurity"> <action> <items>UsernameToken</items> <user>bob</user> <passwordCallbackClass>labware.web.ws.control.PWCBHandler</passwordCallbackClass> <passwordType>PasswordText</passwordType> </action> </parameter> Is this OK for policy based WS-Security enabled service call? Please find attached axis2.xml. Chinmoy On Thu, Jul 16, 2009 at 7:06 PM, Chinmoy Chakraborty <cch...@gmail.com>wrote: > Hi Nandana, > > Now it works. The problem was the param 'InFlow' and some others are case > sensitive. I edited them and it worked. > > Thanks. > > Chinmoy > > On Thu, Jul 16, 2009 at 5:19 PM, Chinmoy Chakraborty > <cch...@gmail.com>wrote: > >> Hi Nandana, >> >> Thanks a lot for the reply. Now I am getting following error: >> >> org.apache.axis2.deployment.DeploymentException: The "Dispatch" phase is >> not found on the global "InFlow" phase of the axis2.xml file. Make sure the >> phase is within the axis2.xml file. >> at >> org.apache.axis2.deployment.DeploymentEngine.loadRepository(DeploymentEngine.java:158) >> at >> org.apache.axis2.deployment.FileSystemConfigurator.getAxisConfiguration(FileSystemConfigurator.java:133) >> at >> org.apache.axis2.context.ConfigurationContextFactory.createConfigurationContext(ConfigurationContextFactory.java:68) >> at >> org.apache.axis2.context.ConfigurationContextFactory.createConfigurationContextFromFileSystem(ConfigurationContextFactory.java:184).... >> >> My client code is: >> >> try { >> ctx = >> ConfigurationContextFactory.createConfigurationContextFromFileSystem("D:/Codes/weblims3/exploded/WEB-INF", >> "D:/Codes/weblims3/axis2.xml"); >> } catch (AxisFault axisFault) { >> axisFault.printStackTrace(); >> } >> The error is happening in the previous line. What does it meant by >> "Repository Path"? Please find attached axis2.xml. >> >> Chinmoy >> >> >> >> >> >> >> >> On Thu, Jul 16, 2009 at 9:27 AM, Nandana Mihindukulasooriya < >> nandana....@gmail.com> wrote: >> >>> Hi Chinmoy, >>> As it seems, you don't have the "OutflowSecurity" parameter >>> defined in the client side. So basically you need to have a client side >>> axis2 with that parameter and then create a ConfigurationContext out of it. >>> Rampart basic sample 01 shows how to do this [1],[2]. But you won't be able >>> to pass username/password through options when you use parameter based >>> configuration. Is there a possibility for you to use policy based >>> configuration. If so, please look at following tutorial [2]. >>> >>> regards, >>> Nandana >>> >>> [1] - >>> https://svn.apache.org/repos/asf/webservices/rampart/trunk/java/modules/rampart-samples/basic/sample01/client.axis2.xml >>> [2] - >>> https://svn.apache.org/repos/asf/webservices/rampart/trunk/java/modules/rampart-samples/basic/sample01/src/org/apache/rampart/samples/sample01/Client.java >>> [3] - https://www.wso2.org/library/3190 >>> >>> >>> On Wed, Jul 15, 2009 at 5:45 PM, Chinmoy Chakraborty >>> <cch...@gmail.com>wrote: >>> >>>> Hi, >>>> >>>> I am getting following error while trying to invoke a WS-Security >>>> enabled client request: >>>> >>>> org.apache.axis2.AxisFault: WSDoAllReceiver: Incoming message does not >>>> contain required Security header >>>> at >>>> org.apache.rampart.handler.WSDoAllReceiver.processBasic(WSDoAllReceiver.java:221) >>>> at >>>> org.apache.rampart.handler.WSDoAllReceiver.processMessage(WSDoAllReceiver.java:86) >>>> at >>>> org.apache.rampart.handler.WSDoAllHandler.invoke(WSDoAllHandler.java:72) >>>> at org.apache.axis2.engine.Phase.invoke(Phase.java:317) >>>> at org.apache.axis2.engine.AxisEngine.invoke(AxisEngine.java:264) >>>> at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:163) >>>> >>>> I am missing something I know but not sure what. Following is my client >>>> code: >>>> >>>> ServiceClient client = new ServiceClient(); >>>> Options options = new Options(); >>>> options.setAction("invoke"); >>>> options.setUserName("system"); >>>> options.setPassword("manager"); >>>> options.setTo(new EndpointReference(wsServerUrl + >>>> "services/ABS")); >>>> client.setOptions(options); >>>> client.engageModule("rampart"); >>>> OMElement response = client.sendReceive(getPayload(args)); >>>> >>>> Following is my services.xml: >>>> >>>> <service name="ABS" targetNamespace="http://www.abc.com/webservice"> >>>> <description>Service description for ABS</description> >>>> <schema >>>> schemaNamespace="http://www.abc.com/webservice"/<http://www.abc.com/webservice%22/> >>>> > >>>> <parameter name="ServiceClass">ABS</parameter> >>>> <parameter name = "disasbleREST">true</parameter> >>>> <operation name="invoke"> >>>> <messageReceiver >>>> class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/> >>>> </operation> >>>> <module ref="soapmonitor"/> >>>> <module ref="rampart" /> >>>> <parameter name = "InflowSecurity"><action> >>>> <items>UsernameToken</items> >>>> >>>> <passwordCallbackClass>web.ws.control.PWCBHandler</passwordCallbackClass> >>>> </action> >>>> </parameter> >>>> <parameter name="OutflowSecurity"> >>>> <action> >>>> <items>UsernameToken</items> >>>> >>>> <passwordCallbackClass>web.ws.control.PWCBHandler</passwordCallbackClass> >>>> </action> >>>> </parameter> >>>> </service> >>>> >>>> Any idea? >>>> >>>> Chinmoy >>>> >>> >>> >>> >>> -- >>> Nandana Mihindukulasooriya >>> WSO2 inc. >>> >>> http://nandana83.blogspot.com/ >>> http://www.wso2.org >>> >> >> >
<axisconfig name="AxisJava2.0"> <module ref="rampart" /> <parameter name="OutflowSecurity"> <action> <items>UsernameToken</items> <user>bob</user> <passwordCallbackClass>labware.web.ws.control.PWCBHandler</passwordCallbackClass> <passwordType>PasswordText</passwordType> </action> </parameter> <parameter name="hotdeployment" locked="false">true</parameter> <parameter name="hotupdate" locked="false">true</parameter> <messageReceiver mep="INOUT" class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/> <transportSender name="http" class="org.apache.axis2.transport.http.CommonsHTTPTransportSender"> <parameter name="PROTOCOL" locked="false">HTTP/1.0</parameter> </transportSender> <transportSender name="https" class="org.apache.axis2.transport.http.CommonsHTTPTransportSender"> <parameter name="PROTOCOL" locked="false">HTTP/1.0</parameter> <!-- <parameter name="Transfer-Encoding">chunked</parameter> --> </transportSender> <phaseOrder type="InFlow"> <!-- System pre defined phases --> <phase name="Transport"> <handler name="RequestURIBasedDispatcher" class="org.apache.axis2.dispatchers.RequestURIBasedDispatcher"> <order phase="Dispatch"/> </handler> <handler name="SOAPActionBasedDispatcher" class="org.apache.axis2.dispatchers.SOAPActionBasedDispatcher"> <order phase="Dispatch"/> </handler> </phase> <phase name="Security"/> <phase name="PreDispatch"/> <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase"> <handler name="AddressingBasedDispatcher" class="org.apache.axis2.dispatchers.AddressingBasedDispatcher"> <order phase="Dispatch"/> </handler> <handler name="SOAPMessageBodyBasedDispatcher" class="org.apache.axis2.dispatchers.SOAPMessageBodyBasedDispatcher"> <order phase="Dispatch"/> </handler> </phase> <!-- System pre defined phases --> <!-- After Postdispatch phase module author or or service author can add any phase he want --> <phase name="OperationInPhase"/> <phase name="soapmonitorPhase"/> </phaseOrder> <phaseOrder type="OutFlow"> <!-- user can add his own phases to this area --> <phase name="soapmonitorPhase"/> <phase name="OperationOutPhase"/> <!--system predefined phase--> <!--these phase will run irrespective of the service--> <phase name="PolicyDetermination"/> <phase name="MessageOut"/> <phase name="Security"/> </phaseOrder> <phaseOrder type="InFaultFlow"> <phase name="PreDispatch"/> <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase"> <handler name="RequestURIBasedDispatcher" class="org.apache.axis2.dispatchers.RequestURIBasedDispatcher"> <order phase="Dispatch"/> </handler> <handler name="SOAPActionBasedDispatcher" class="org.apache.axis2.dispatchers.SOAPActionBasedDispatcher"> <order phase="Dispatch"/> </handler> <handler name="AddressingBasedDispatcher" class="org.apache.axis2.dispatchers.AddressingBasedDispatcher"> <order phase="Dispatch"/> </handler> <handler name="SOAPMessageBodyBasedDispatcher" class="org.apache.axis2.dispatchers.SOAPMessageBodyBasedDispatcher"> <order phase="Dispatch"/> </handler> </phase> <!-- user can add his own phases to this area --> <phase name="OperationInFaultPhase"/> <phase name="soapmonitorPhase"/> <phase name="Security"/> </phaseOrder> <phaseOrder type="OutFaultFlow"> <!-- user can add his own phases to this area --> <phase name="soapmonitorPhase"/> <phase name="OperationOutFaultPhase"/> <phase name="PolicyDetermination"/> <phase name="MessageOut"/> <phase name="Security"/> </phaseOrder> </axisconfig>