[ 
https://issues.apache.org/jira/browse/AXIS2-4233?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12681628#action_12681628
 ] 

Nandana Mihindukulasooriya commented on AXIS2-4233:
---------------------------------------------------

Hi Alexis, 
         I think the behavior that was there in 1.3 is correct and if the 
service is dispatched we need to take that in to account when calculating the 
effective policy. To avoid security vulnerabilities, we will need to improve 
the PostDispatch verification handler of Rampart to check the policy after 
dispatch (both service and operation) and the policy that was used to verify 
security to see whether there are identical.  
        The work around you proposed works in this scenario but may cause 
problems in other scenarios. When RampartMessageData.KEY_RAMPART_POLICY is set, 
Rampart only takes that policy in to account so policies set in other levels of 
the heirachy will be ignored. 

thanks,
Nandana

> Regression in MessageContext#getEffectivePolicy between 1.3 and 1.4/1.5
> -----------------------------------------------------------------------
>
>                 Key: AXIS2-4233
>                 URL: https://issues.apache.org/jira/browse/AXIS2-4233
>             Project: Axis 2.0 (Axis2)
>          Issue Type: Bug
>          Components: kernel
>    Affects Versions: 1.5, 1.4.1, 1.4
>            Reporter: Alexis Midon
>            Priority: Blocker
>
> Here is the use case:
> A security policy is attached to my service (using a service.xml document and 
> a ServiceBuilder).
> A message comes in, and reaches the RampartReceiver. At this point *only* the 
> targeted service has been resolved by the preceding dispatchers, so no 
> operation nor AxisMessage [4] are attached to the MessageContext yet . 
> Actually the information required to resolve the operation is encrypted. So 
> the MessageContext knows about the service *only*.
> Then the RampartReceiver tries to get the policy to be applied. This is done 
> in RampartMessageData. To do that, MessageContext#getEffectivePolicy is 
> invoked.
> In axis2 1.3, MessageContext#getEffectivePolicy [1] has a logic to retrieve 
> the policy from the service instance. But in axis2 1.4 [2], the logic is 
> different and never tries to get the policy from the service. So Rampart 
> cannot do its job, and my service invocation fails :(
> To get the effective policy, the current implementation of 
> MessageContext#getEffectivePolicy uses an instance of AxisBindingMessage if 
> any. But  AxisBindingMessage also requires the operation to be known [5] So I 
> cannot workaround my problem, afaik.
> It seems that this issue has already been spotted [3] but I haven't found any 
> related Jiras. And the regression is still in 1.5.
> A fix for axis2 1.5 will be really helpful.
> [1] 
> http://svn.apache.org/repos/asf/webservices/axis2/tags/java/v1.3/modules/kernel/src/org/apache/axis2/context/MessageContext.java
> [2] 
> http://svn.apache.org/repos/asf/webservices/axis2/tags/java/v1.4.1/modules/kernel/src/org/apache/axis2/context/MessageContext.java
> [3] http://markmail.org/thread/ghsdxqdwnhec7puo
> [4] line 114, 
> http://svn.apache.org/repos/asf/webservices/axis2/tags/java/v1.4.1/modules/kernel/src/org/apache/axis2/engine/AbstractDispatcher.java
> [5] line 275, 
> http://svn.apache.org/repos/asf/webservices/axis2/tags/java/v1.4.1/modules/kernel/src/org/apache/axis2/description/AxisBindingMessage.java

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to