You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by "Nandana Mihindukulasooriya (JIRA)" <ji...@apache.org> on 2008/12/09 11:38:44 UTC

[jira] Commented: (AXIS2-4114) Problem to retrieve the effective policy from MessageContext when we have policy attachment at binding level

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

Nandana Mihindukulasooriya commented on AXIS2-4114:
---------------------------------------------------

Hi Detelin, 
         Yes, exactly. If message level / operation level security to work the message has to be dispatched to correct operation in the pre dispatch phase. So either it should have SOAP Action or have addressing information. In Axis2, i don't see any work around. So I think we should better document this in Rampart site or the FAQ wiki [1]. 

thanks,
nandana

[1] - http://wiki.apache.org/ws/FrontPage/Rampart/FAQ

> Problem to retrieve the effective policy from MessageContext when we have policy attachment at binding level
> ------------------------------------------------------------------------------------------------------------
>
>                 Key: AXIS2-4114
>                 URL: https://issues.apache.org/jira/browse/AXIS2-4114
>             Project: Axis 2.0 (Axis2)
>          Issue Type: Bug
>          Components: kernel
>            Reporter: Dobri Kitipov
>            Assignee: Nandana Mihindukulasooriya
>         Attachments: MessageContext_effectivePolicy.patch
>
>
> Hi,
> I have a problem when I try to get the effective policy from a MessageContext when I have a policy attached at the binding level of a Web Service. I am using Axis2 1.4.0
> Let me explain a little bit the scenario I have. I am using an AAR that has into its services.xml:
> <parameter name="useOriginalwsdl">true</parameter>
> and a PolicyAttachment at its service level:
> <wsp:PolicyAttachment xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy">
>             <wsp:AppliesTo>
>                 <policy-subject identifier="binding:soap11"/>
>                 <policy-subject identifier="binding:soap12"/>
>             </wsp:AppliesTo>
>             <wsp:Policy wsu:Id="User" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">...
> </wsp:PolicyAttachment>
> As a result the WSDL generated has the policy specified and policy reference at the binding subject level. Here is an excerpt from the wsdl for the SOAP11Binding:
> <wsdl:binding name="MTOMServiceSOAP11Binding" type="tns:MTOMServicePortType">
> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
> <wsp:PolicyReference URI="#User"/>
> At client side I have a dynamic client. So the issue is that when I invoke the service and the WSDL is read and the corresponding AxisService object is crated at the client side I have some modules' handlers that take palce. One of them is a custom one in which I have the following invocation:
> Policy policy = msgCtx.getEffectivePolicy();
> The problem is that this returns "null"! I debugged this and it came out that msgCtx is not null. When the method is invoked it tries to calculate the effective policy as given below.
>          AxisBindingMessage bindingMessage =
>              (AxisBindingMessage)
>  getProperty(Constants.AXIS_BINDING_MESSAGE);
>          if (bindingMessage != null) {
>              return bindingMessage.getEffectivePolicy();
>          } else {
>              if (axisMessage != null) {
>                  return axisMessage.getEffectivePolicy();
>              } else {
>                  return null;
>              }
>          }
> where bindingMessage  is null and axisMessage.getEffectivePolicy(); returns null, too. When I dig through the AxisService -> AxisEndpoint -> AxisBinding -> here the PolicySubject is in fact a PolicyReference to the Policy that is set into the AxisService policyMap. So as a result axisMessage.getEffectivePolicy() returns null and I can not get the Policy I need.
> I saw that I need something like the AxisDescription.getApplicablePolicy in order to locate the real Policy of a given PolicyReference.
> You can see the patch applied that I have tested and seem to me that works fine.
> Thank you in advance,
> Dobri

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


---------------------------------------------------------------------
To unsubscribe, e-mail: axis-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-dev-help@ws.apache.org