Just wanted to let you know that tonight's build will incorporate both those fixes... the JARs you'd need are muse-core and muse-wsa-soap.
Dan Erik Rissanen <[EMAIL PROTECTED]> wrote on 04/12/2007 02:06:54 PM: > I actually used toString(xml, true, false) since it was the indentation > which was the problem, not the <?xml> header. > > Don't forget to fix the ElementSerializer as well. It breaks the > signature by changing the namespace prefix. I am not sure what the > correct fix is there since other Muse code might depend on the current > behavior. > > I'll let you know if I find problems in Axis, but I'll go with the mini > engine for now. Lots of work to do. :-) > > Thanks, > Erik > > > Daniel Jemiolo wrote: > > Thanks for the SoapClient fix - that's a tricky one. I knew were weren't > > adding actual whitespace text nodes to the DOM, so I couldn't fathom why > > there would be more whitespace on the outgoing message. I'll fix it so > > that we use toString(xml, false, false), which will disable indentation. > > > > Please update us if you find a similar problem in the Axis2/Axiom code > > that accounts for the remaining issues. > > > > Dan > > > > > > > > Erik Rissanen <[EMAIL PROTECTED]> wrote on 04/10/2007 05:58:54 AM: > > > > > >> Daniel, > >> > >> I have looked for the source of the indentation. In > >> SimpleSoapClient.java at line 247: > >> > >> byte[] soapBytes = XmlUtils.toString(soapRequest).getBytes(); > >> > >> This does indentation, so it will break the message on the client side > >> before it is sent. However, fixing this didn't take care of the problem, > >> so something else does indentation as well. > >> > >> I made a search for the use of XmlUtils.toString in the muse source and > >> I got 45 hits. Most seemed ok, but I didn't go through all of them. > >> > >> I have not looked at the Axis code, which might also do indentation. > >> > >> I need to work on some other things today, but I will look into this > >> later. If Axis is the source of the remaining problems, using the mini > >> engine might solve it for me. I will try the mini engine later when I > >> have time again. > >> > >> Regards, > >> 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] > >> > >> > > > > > > --------------------------------------------------------------------- > > 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]
