[
https://issues.apache.org/jira/browse/WSCOMMONS-197?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12491617
]
Asankha C. Perera commented on WSCOMMONS-197:
---------------------------------------------
Glen,
Yes.. the code line:
WSSecurityUtil.findWsseSecurityHeaderBlock(doc, elem, true);adds a header and
the 'true' parameter is supposed to create one if it doesn't exist if I
understand. Sorry that this example is too close to Rampart.. but I guess you
could recreate this issue without using the above line of code and using
something equivalent.. i.e. to basically add a header using DOOM.
asankha
Glen Daniels (JIRA) wrote:
[
[1]https://issues.apache.org/jira/browse/WSCOMMONS-197?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12491615
]
Glen Daniels commented on WSCOMMONS-197:
----------------------------------------
I'm sorry, I must be missing something here... where does that example add a
header? (I'm assuming by "header" you mean the informal term for "header
block" - i.e. an element underneath <soap:Header>)
SOAP headers added using DOOM are lost during serialization
-----------------------------------------------------------
Key: WSCOMMONS-197
URL: [2]https://issues.apache.org/jira/browse/WSCOMMONS-197
Project: WS-Commons
Issue Type: Bug
Components: AXIOM
Reporter: Asankha C. Perera
Assigned To: Glen Daniels
Priority: Critical
Rampart is unable to add security headers to a SOAP message that does not have
an existing SOAP header.
The actual root cause of this issue is that headers added using DOOM to a SOAP
envelope that does not already have a header, are lost during serialization.
The following code sample provided by Ruchith explains and is able to recreate
this issue. The header is lost unless the "
//fac.createSOAPHeader(env);" line is uncommeted
-----------------------------------------------------------------------------------------------------
import org.apache.axiom.om.OMAbstractFactory;
import org.apache.axiom.om.OMText;
import org.apache.axiom.om.impl.dom.factory.OMDOMFactory;
import org.apache.axiom.soap.SOAPEnvelope;
import org.apache.axiom.soap.SOAPFactory;
import org.apache.axiom.soap.SOAPHeader;
import org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder;
import org.apache.axiom.soap.impl.dom.soap11.SOAP11Factory;
import org.apache.ws.security.util.WSSecurityUtil;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import javax.xml.namespace.QName;
import junit.framework.TestCase;
/**
*
* @author Ruchith Fernando ([EMAIL PROTECTED])
*/
public class SerializerTest extends TestCase {
public SerializerTest() {
}
public SerializerTest(String arg0) {
super(arg0);
}
public void test1() throws Exception {
SOAPFactory fac = OMAbstractFactory.getSOAP11Factory();
SOAPEnvelope env = fac.createSOAPEnvelope();
fac.createSOAPBody(env);
//fac.createSOAPHeader(env);
fac = new SOAP11Factory();
StAXSOAPModelBuilder builder = new
StAXSOAPModelBuilder(env.getXMLStreamReader(), fac, null);
SOAPEnvelope domEnv = builder.getSOAPEnvelope();
Element elem = (Element)domEnv;
Document doc = elem.getOwnerDocument();
WSSecurityUtil.findWsseSecurityHeaderBlock(doc, elem, true);
String s = domEnv.toString();
System.out.println(s);
}
}
----------------------------------------------------------------------------------------
[1]
https://issues.apache.org/jira/browse/WSCOMMONS-197?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12491615
[2] https://issues.apache.org/jira/browse/WSCOMMONS-197
[3] mailto:[EMAIL PROTECTED]
> SOAP headers added using DOOM are lost during serialization
> -----------------------------------------------------------
>
> Key: WSCOMMONS-197
> URL: https://issues.apache.org/jira/browse/WSCOMMONS-197
> Project: WS-Commons
> Issue Type: Bug
> Components: AXIOM
> Reporter: Asankha C. Perera
> Assigned To: Glen Daniels
> Priority: Critical
>
> Rampart is unable to add security headers to a SOAP message that does not
> have an existing SOAP header.
> The actual root cause of this issue is that headers added using DOOM to a
> SOAP envelope that does not already have a header, are lost during
> serialization.
> The following code sample provided by Ruchith explains and is able to
> recreate this issue. The header is lost unless the "
> //fac.createSOAPHeader(env);" line is uncommeted
> -----------------------------------------------------------------------------------------------------
> import org.apache.axiom.om.OMAbstractFactory;
> import org.apache.axiom.om.OMText;
> import org.apache.axiom.om.impl.dom.factory.OMDOMFactory;
> import org.apache.axiom.soap.SOAPEnvelope;
> import org.apache.axiom.soap.SOAPFactory;
> import org.apache.axiom.soap.SOAPHeader;
> import org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder;
> import org.apache.axiom.soap.impl.dom.soap11.SOAP11Factory;
> import org.apache.ws.security.util.WSSecurityUtil;
> import org.w3c.dom.Document;
> import org.w3c.dom.Element;
>
> import javax.xml.namespace.QName;
>
> import junit.framework.TestCase;
>
> /**
> *
> * @author Ruchith Fernando ([EMAIL PROTECTED])
> */
> public class SerializerTest extends TestCase {
>
> public SerializerTest() {
> }
>
> public SerializerTest(String arg0) {
> super(arg0);
> }
>
> public void test1() throws Exception {
> SOAPFactory fac = OMAbstractFactory.getSOAP11Factory();
> SOAPEnvelope env = fac.createSOAPEnvelope();
> fac.createSOAPBody(env);
> //fac.createSOAPHeader(env);
>
> fac = new SOAP11Factory();
> StAXSOAPModelBuilder builder = new
> StAXSOAPModelBuilder(env.getXMLStreamReader(), fac, null);
> SOAPEnvelope domEnv = builder.getSOAPEnvelope();
>
> Element elem = (Element)domEnv;
> Document doc = elem.getOwnerDocument();
>
> WSSecurityUtil.findWsseSecurityHeaderBlock(doc, elem, true);
>
> String s = domEnv.toString();
>
> System.out.println(s);
> }
>
> }
--
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: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]