I've fixed AXIOM-408 and that solves the signature issue. Fresh
1.6.2-SNAPSHOT builds including that change are available here:

https://builds.apache.org/job/axis2-1.6/lastBuild/org.apache.axis2$distribution/
https://builds.apache.org/job/rampart-1.6/lastBuild/org.apache.rampart$rampart-dist/

Andreas

On Sat, Jan 7, 2012 at 12:20, Andreas Veithen <[email protected]> wrote:
> 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