Thanks for the code, Jaime.

I think that I have identified the root cause of the issue:
https://issues.apache.org/jira/browse/AXIOM-408

Andreas

On Fri, Jan 6, 2012 at 00:43, Jaime Hablutzel Egoavil
<[email protected]> wrote:
> OK, the client code that generates two different signatures but transports
> the equivalent thing over the network is:
>
> DOOM enabled
>
> public class BinaryClient {
>
>     public static void main(String[] args) throws Exception {
>
>         ConfigurationContext ctx =
> ConfigurationContextFactory.createConfigurationContextFromFileSystem("D:\\software\\axis2-1.6.1\\repository",
> "D:\\software\\axis2-1.6.1\\samples\\mtom\\src\\client.axis2-2.xml");
>         RPCServiceClient client = new RPCServiceClient(ctx, null);
>         Options opts = new Options();
>         opts.setAction("ns:echo");
>         EndpointReference to = new EndpointReference();
>         to.setAddress("http://localhost:8080/anywhere";);
>         opts.setTo(to);
>
> opts.setProperty(org.apache.axis2.Constants.Configuration.ENABLE_MTOM,
> org.apache.axis2.Constants.VALUE_TRUE);
>         //Set the rampart parameters
>         opts.setProperty(WSSHandlerConstants.OUTFLOW_SECURITY,
> getOutflowConfiguration());
>         opts.setProperty(WSSHandlerConstants.INFLOW_SECURITY,
> getInflowConfiguration());
>        opts.setProperty(WSSHandlerConstants.USE_DOOM,
> org.apache.axis2.Constants.VALUE_TRUE);
>         client.setOptions(opts);
>
>         //Engage rampart
>         client.engageModule("rampart");
>
>         DataHandler dh = new DataHandler(new
> FileDataSource("D:\\software\\axis2-1.6.1\\samples\\mtom\\build.xml"));
>
>         client.invokeRobust(new QName("http://client.mtom.sample";, "echo"),
> new Object[]{dh});
>     }
>
>     public static Parameter getOutflowConfiguration() {
>         OutflowConfiguration ofc = new OutflowConfiguration();
>         ofc.setActionItems("Signature");
>         ofc.setUser("client");
>         ofc.setPasswordCallbackClass("sample.mtom.client.PWCBHandler");
>         ofc.setSignaturePropFile("client.properties");
>
> ofc.setSignatureKeyIdentifier(WSSHandlerConstants.BST_DIRECT_REFERENCE);
>         ofc.setEncryptionKeyIdentifier(WSSHandlerConstants.ISSUER_SERIAL);
>         ofc.setEncryptionUser("service");
>         return ofc.getProperty();
>     }
>
>     public static Parameter getInflowConfiguration() {
>         InflowConfiguration ifc = new InflowConfiguration();
>         ifc.setActionItems("Signature");
>         ifc.setSignaturePropFile("client.properties");
>         return ifc.getProperty();
>     }
>
> }
>
>
>
> Without DOOM
>
> public class BinaryClient {
>
>     public static void main(String[] args) throws Exception {
>
>         ConfigurationContext ctx =
> ConfigurationContextFactory.createConfigurationContextFromFileSystem("D:\\software\\axis2-1.6.1\\repository",
> "D:\\software\\axis2-1.6.1\\samples\\mtom\\src\\client.axis2-2.xml");
>         RPCServiceClient client = new RPCServiceClient(ctx, null);
>         Options opts = new Options();
>         opts.setAction("ns:echo");
>         EndpointReference to = new EndpointReference();
>         to.setAddress("http://localhost:8080/anywhere";);
>         opts.setTo(to);
>
> opts.setProperty(org.apache.axis2.Constants.Configuration.ENABLE_MTOM,
> org.apache.axis2.Constants.VALUE_TRUE);
>         //Set the rampart parameters
>         opts.setProperty(WSSHandlerConstants.OUTFLOW_SECURITY,
> getOutflowConfiguration());
>         opts.setProperty(WSSHandlerConstants.INFLOW_SECURITY,
> getInflowConfiguration());
> //        opts.setProperty(WSSHandlerConstants.USE_DOOM,
> org.apache.axis2.Constants.VALUE_TRUE);
>         client.setOptions(opts);
>
>         //Engage rampart
>         client.engageModule("rampart");
>
>         DataHandler dh = new DataHandler(new
> FileDataSource("D:\\software\\axis2-1.6.1\\samples\\mtom\\build.xml"));
>
>         client.invokeRobust(new QName("http://client.mtom.sample";, "echo"),
> new Object[]{dh});
>     }
>
>     public static Parameter getOutflowConfiguration() {
>         OutflowConfiguration ofc = new OutflowConfiguration();
>         ofc.setActionItems("Signature");
>         ofc.setUser("client");
>         ofc.setPasswordCallbackClass("sample.mtom.client.PWCBHandler");
>         ofc.setSignaturePropFile("client.properties");
>
> ofc.setSignatureKeyIdentifier(WSSHandlerConstants.BST_DIRECT_REFERENCE);
>         ofc.setEncryptionKeyIdentifier(WSSHandlerConstants.ISSUER_SERIAL);
>         ofc.setEncryptionUser("service");
>         return ofc.getProperty();
>     }
>
>     public static Parameter getInflowConfiguration() {
>         InflowConfiguration ifc = new InflowConfiguration();
>         ifc.setActionItems("Signature");
>         ifc.setSignaturePropFile("client.properties");
>         return ifc.getProperty();
>     }
>
> }
>
>
> And given that the server after canonicalization will only expect one type
> of signature it fails.
>
>
>
>
> On Thu, Dec 29, 2011 at 1:26 PM, Andreas Veithen <[email protected]>
> wrote:
>>
>> Can you sent use the code that produces the message causing the
>> problems, including everything you do to configure Rampart? That
>> should allow us to reproduce the problem.
>>
>> Andreas
>>
>> On Thu, Dec 29, 2011 at 17:16, Jaime Hablutzel Egoavil
>> <[email protected]> wrote:
>> > Axis 1.6.1, rampart 1.6.1, axiom 1.2.12
>> > By the way I discovered that this problem only arises when using
>> >
>> > client.invokeRobust(new QName("http://client.mtom.sample";, "echo"), new
>> > Object[]{dh});
>> >
>> > And not with
>> >
>> >  client.sendReceive(elem)
>> >
>> > And I'm looking that the first one creates
>> >
>> > <soapenv:Body
>> >
>> > xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd";
>> > wsu:Id="id-2"><echo xmlns="http://client.mtom.sample";><arg0
>> > xmlns=""><xop:Include xmlns:xop="http://www.w3.org/2004/08/xop/include";
>> > href="cid:[email protected]"
>> > /></arg0></echo></soapenv:Body>
>> >
>> > And the second one:
>> >
>> > <soapenv:Body
>> >
>> > xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd";
>> > wsu:Id="id-2"><ns1:echo
>> > xmlns:ns1="http://client.mtom.sample";><arg0><xop:Include
>> > xmlns:xop="http://www.w3.org/2004/08/xop/include";
>> > href="cid:[email protected]"
>> > /></arg0></ns1:echo></soapenv:Body>
>> >
>> >
>> > Anyway using the second it is working but with the first the stripped
>> > xmlns="" makes the signature value different so the server after
>> > canonicalization produces a different value and validation fails
>> >
>> > On Thu, Dec 29, 2011 at 4:31 AM, Andreas Veithen
>> > <[email protected]>
>> > wrote:
>> >>
>> >> What are the Axis2, Rampart and Axiom versions that you are using?
>> >>
>> >> Andreas
>> >>
>> >> On Tue, Dec 27, 2011 at 23:18, Jaime Hablutzel Egoavil
>> >> <[email protected]> wrote:
>> >> > Hi I want to post an apparent bug when DOOM option is activated in
>> >> > the
>> >> > client, so the SOAP message include xop:Include even when using
>> >> > WS-Signature
>> >> > and doesn't send the message in base64, this way getting advantage of
>> >> > MTOM.
>> >> >
>> >> > When using DOOM the canonicalized data to create the digest is:
>> >> >
>> >> > <soapenv:Body
>> >> > xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/";
>> >> >
>> >> >
>> >> > xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd";
>> >> > wsu:Id="id-2"><echo
>> >> >
>> >> >
>> >> > xmlns="http://client.mtom.sample";><arg0>b3JnLmFwYWNoZS53cy5zZWN1cml0eS5jcnlwdG8ucHJvdmlkZXI9b3JnLmFwYWNoZS53cy5zZWN1cml0eS5jb21wb25lbnRzLmNyeXB0by5NZXJsaW4Kb3JnLmFwYWNoZS53cy5zZWN1cml0eS5jcnlwdG8ubWVybGluLmtleXN0b3JlLnR5cGU9amtzCm9yZy5hcGFjaGUud3Muc2VjdXJpdHkuY3J5cHRvLm1lcmxpbi5rZXlzdG9yZS5wYXNzd29yZD1hcGFjaGUKb3JnLmFwYWNoZS53cy5zZWN1cml0eS5jcnlwdG8ubWVybGluLmZpbGU9Y2xpZW50Lmprcw==</arg0></echo></soapenv:Body>
>> >> >
>> >> > But when DOOM is disabled the data is:
>> >> >
>> >> > <soapenv:Body
>> >> > xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/";
>> >> >
>> >> >
>> >> > xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd";
>> >> > wsu:Id="id-2"><echo xmlns="http://client.mtom.sample";><arg0
>> >> >
>> >> >
>> >> > xmlns="">b3JnLmFwYWNoZS53cy5zZWN1cml0eS5jcnlwdG8ucHJvdmlkZXI9b3JnLmFwYWNoZS53cy5zZWN1cml0eS5jb21wb25lbnRzLmNyeXB0by5NZXJsaW4Kb3JnLmFwYWNoZS53cy5zZWN1cml0eS5jcnlwdG8ubWVybGluLmtleXN0b3JlLnR5cGU9amtzCm9yZy5hcGFjaGUud3Muc2VjdXJpdHkuY3J5cHRvLm1lcmxpbi5rZXlzdG9yZS5wYXNzd29yZD1hcGFjaGUKb3JnLmFwYWNoZS53cy5zZWN1cml0eS5jcnlwdG8ubWVybGluLmZpbGU9Y2xpZW50Lmprcw==</arg0></echo></soapenv:Body>
>> >> >
>> >> > Look at the difference in red color. This causes the digest value to
>> >> > be
>> >> > different so the server gets confused and is unable to validate the
>> >> > signature when using DOOM in the client. A workaround seems to be to
>> >> > use
>> >> > only namespaced elements so the xmlns="" doesn't get generated never.
>> >> >
>> >> > I would like to know if someone has reached this problem when using
>> >> > MTOM
>> >> > +
>> >> > WS-Signature in axis 2.
>> >> >
>> >> > Other thing, DOOM option is not really well documented anywhere in
>> >> > axis2
>> >> > website and I just found that it was available to make real MTOM with
>> >> > WS-Signature debugging the source code for three days u.u.
>> >> >
>> >> > Good bye
>> >> >
>> >> >
>> >> >
>> >> > --
>> >> > Jaime Hablutzel - 9-9956-3299
>> >> >
>> >> > (tildes omitidas intencionalmente)
>> >>
>> >> ---------------------------------------------------------------------
>> >> To unsubscribe, e-mail: [email protected]
>> >> For additional commands, e-mail: [email protected]
>> >>
>> >
>> >
>> >
>> > --
>> > Jaime Hablutzel - 9-9956-3299
>> >
>> > (tildes omitidas intencionalmente)
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: [email protected]
>> For additional commands, e-mail: [email protected]
>>
>
>
>
> --
> Jaime Hablutzel - 9-9956-3299
>
> (tildes omitidas intencionalmente)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to