I will get the muse and axis source code and find out what is going on. I will report back once I have figured it out.
Erik Daniel Jemiolo wrote: > From a Muse perspective, the only time we add indentation is in > XmlUtils.toString(), which is used if you turn on SOAP tracing (log-level > = FINE in muse.xml). This just makes it easier to read the log file. You > can stop the indentation all together by using this version of > XmlUtils.toString(): > > http://ws.apache.org/muse/docs/2.2.0/javadoc/org/apache/muse/util/xml/XmlUtils.html#toString(org.w3c.dom.Node,%20boolean,%20boolean) > > The point is that, from a Muse perspective, we don't add any additional > whitespace nodes/indentation when processing the message - it just happens > when we trace. If you look in the Axis2 service code, we just take the > SOAP body as it comes from Axis2 (in Axiom form), convert it to DOM, and > hand off the DOM tree to your method: > > http://svn.apache.org/viewvc/webservices/muse/trunk/modules/muse-platform-axis2/src/org/apache/muse/core/platform/axis2/AxisIsolationLayer.java?revision=522017&view=markup > > The Axiom -> DOM conversion is pretty straightforward - I could understand > if we had *missed* something in the copying, but *adding* new things would > be hard. > > Does this problem happen if you use the Mini SOAP engine (-j2ee mini)? If > not, the problem may be with Axiom/Axis2. I've noticed that, like Axis > 1.x, there are still cases where Axis2 adds in prefix/namespace > declarations, and so the addition of blank/whitespace text nodes does not > seem impossible. > > > > Erik Rissanen <[EMAIL PROTECTED]> wrote on 04/09/2007 02:51:06 AM: > > >> Daniel Jemiolo wrote: >> >>> Can you give an example of the changing of XML prefixes? This was >>> > actually > >>> a major problem for us with the various SOAP engines we targeted >>> > (because > >>> WSRF is very dependent on prefixes staying the same), so we make sure >>> > not > >>> to modify prefixes in the request handling. Let me know what's >>> > happening. > >>> Also, are you signing things as part of the operation implementations? >>> > > >>> Normally this is done with something like WSS4J, which you can enable >>> > as > >>> an Axis2 handler (so the envelope will be completely finished when you >>> > > >>> sign or validate it). >>> >>> Dan >>> >>> >>> >>> Erik Rissanen <[EMAIL PROTECTED]> wrote on 04/08/2007 01:52:42 PM: >>> >>> >>> >>>> Hello, >>>> >>>> I am using Apache Muse 2.2.0 for implementing a web service. I need >>>> > to > >>>> pass digitally signed XML documents to the service. The problem I >>>> > have > >>>> is that Muse re-indents the XML and changes namespace prefixes. This >>>> breaks the signatures. >>>> >>>> Is this a bug, feature or do I need to reconfigure muse somehow? I >>>> > tried > >>>> to search the web, this list and the bug tracking system, but I >>>> > couldn't > >>>> find anything. >>>> >>>> Regards, >>>> Erik >>>> >>>> >>>> >> The signature is for an XML document which is signed standalone. I am >> not signing the WS invocation itself, rather I am transmitting a >> document which has been previously signed. So WSS4J is not what I am >> looking for here. >> >> The schema for the messages looks like this: >> >> <xsd:schema elementFormDefault="qualified" >> targetNamespace="http://sics.se/my-stuff"> >> >> <xsd:element name="AddPolicy"> >> <xsd:complexType> >> <xsd:sequence> >> <xsd:element ref="saml:Assertion" /> >> </xsd:sequence> >> </xsd:complexType> >> </xsd:element> >> >> <xsd:element name="AddPolicyResponse" type="xsd:anyURI"/> >> </xsd:schema> >> >> I use wsdl2java to generate a client proxy which has the following >> > method: > >> URI addPolicy(Element assertion) throws SoapFault; >> >> I read my signed document from disc and parse it into a DOM. I pass the >> document element of this DOM to the above method. The document looks >> like this (fragments only since it is quite long): >> >> <?xml version="1.0" encoding="UTF-8"?> >> <saml:Assertion xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion" >> ID="ID_191adef5-f5a9-40b6-a0c1-c23ca7de3c6c" >> IssueInstant="2007-04-08T13:56:13Z" Version="2.0"> >> <saml:Issuer >> Format="http://www.w3.org/2001/XMLSchema#string">...</saml:Issuer> >> <ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#"> >> ... >> <ds:Reference URI="#ID_191adef5-f5a9-40b6-a0c1-c23ca7de3c6c"> >> ... >> </ds:Signature> >> <saml:Statement >> xmlns:xacml-saml="urn:oasis:xacml:3.0:saml:assertion:schema:os" >> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >> xsi:type="xacml-saml:XACMLPolicyStatementType"> >> <xacml:Policy xmlns="urn:oasis:names:tc:xacml:3.0:schema:os" >> xmlns:xacml="urn:oasis:names:tc:xacml:3.0:schema:os" PolicyId="..." >> RuleCombiningAlgId="..." Version="1.0"> >> <xacml:Target> >> <xacml:DisjunctiveMatch> >> ... >> >> >> On the server side wsdl2java generates the following: >> >> public URI addPolicy(Element Assertion) throws Exception { >> .... >> } >> >> When I receive the document here it doesn't look right. notice the >> prefix "pfx3" and the excessive amount of indentation: >> >> <pfx3:Assertion ID="ID_191adef5-f5a9-40b6-a0c1-c23ca7de3c6c" >> IssueInstant="2007-04-08T13:56:13Z" Version="2.0"> >> >> >> >> <saml:Issuer >> >> > Format="http://www.w3.org/2001/XMLSchema#string">...</saml:Issuer><ds:Signature> > >> .... >> >> <ds:SignedInfo> >> </ds:KeyInfo></ds:Signature><saml:Statement >> xmlns:xacml-saml="urn:oasis:xacml:3.0:saml:assertion:schema:os" >> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >> type="xacml-saml:XACMLPolicyStatementType"> >> >> <xacml:Policy PolicyId="..." RuleCombiningAlgId="..." >> Version="1.0"> >> >> >> <xacml:Target> >> >> >> >> <xacml:DisjunctiveMatch> >> >> >> xsi:type has also been changed to just type in the saml:Statement >> > element. > >> I got the above document by encoding the received Assertion element to a >> file in the capability implementation. I used the apache xml-security >> canonicalizer for the encoding: >> >> Canonicalizer canon = Canonicalizer.getInstance >> (Canonicalizer.ALGO_ID_C14N_WITH_COMMENTS); >> FileOutputStream fouts = new >> > FileOutputStream("/tmp/tete2.xml"); > >> fouts.write(canon.canonicalizeSubtree(Assertion)); >> fouts.close(); >> >> I don't think it is the canonicalizer which messes up the file. I also >> tried to use the Muse XmlUtils class for this encoding, in which case >> the document looks different from above. (The indentation is prettier.) >> >> I am using the axis2 engine and I deploy the war in tomcat 5 on Fedora >> Core 6 Linux. >> >> Thanks for your assistance, >> Erik >> >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: [EMAIL PROTECTED] >> For additional commands, e-mail: [EMAIL PROTECTED] >> >> > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
