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>

Reply via email to