Ability to Toggle "mustUnderstand" flag in security header.
-----------------------------------------------------------

                 Key: RAMPART-261
                 URL: https://issues.apache.org/jira/browse/RAMPART-261
             Project: Rampart
          Issue Type: New Feature
          Components: rampart-core
    Affects Versions: 1.4
            Reporter: Earl D. Baugh Jr.
            Assignee: Ruchith Udayanga Fernando
            Priority: Minor


In dealing with a major telcom, I discovered that it's not possible to turn off 
the mustUnderstand security header attribute.
This causes issues in that ALL of their web services run thru a "proxy" which 
understands security, but their back end services do NOT.
Because of this, all messages that are sent to them must either not have the 
mustUnderstand attribute, or have it set to "0" or "false", or they simply fail 
with security violations.   I've checked to see if actor/next would solve the 
problem, but the only way to get calls to work is to allow for this to be 
disabled.

I've inquired to them about changing this behavior, and they have no plans nor 
intentions (from what I've been able to ascertain) of changing their 
architecture and moving to something that either strips off the security 
headers or can properly handle this setting.   Additionally their responses do 
not have a SOAP header.  That, thankfully I can currently handle with the axis2 
ability to set KEY_RAMPART_OUT_POLICY.   They apparently have numerous clients 
who can handle this, but I was not able to get any info as to what technology 
they're using.  (the previous version here at my employer had a "very" 
customized / hacked set of axis1 code that added and monkeyed with various 
attributes).  

Since  RAMPART does not get the options from Axis2  to handle the setting of  
ServiceClient options setProperty( WSDL2Constants.ATTRIBUTE_MUST_UNDERSTAND, 
"0" ), and can't be configured with the existing flow to sign but not set this 
value, I've been stuck.
(signing causes a hard coded "true" to be set for this attribute)

I would like to suggest / recommend adding some form of option to allow for 
signing, but not require the mustUnderstand attribute to be set.
I have made a change to my local code and have a solution that works.  

In RampartMessageData.java, after line 358 :   if(this.sender && 
this.policyData != null) {
a check that would call : secHeader.setMustUnderstand(false)  
when the option is set would solve this problem, and allow per call control of 
this behavior.


-- 
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