Brian, You are right. I have tested the attached wss4j.jar file too and I had success. My client now can produce a message that the .net client understand. The signature should be right, because the .NET WebService now don't respond with the Exception (Signature invalid).
I have build 2 Messsages, one with the new and one with the "old" wss4j.jar and attached. The old one, which don't works: <?xml version="1.0" encoding="UTF-8"?> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <soapenv:Header> <wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" soapenv:mustUnderstand="1"> <wsse:UsernameToken xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="usernameTokenId-12455463"> <wsse:Username>usuario3</wsse:Username> <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">senha3</wsse:Password> <wsu:Created>2005-07-05T14:10:26Z</wsu:Created> <wsse:Nonce>yOBObBQ+sbevlt2XM0Xukg==</wsse:Nonce> </wsse:UsernameToken> <ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#"> <ds:SignedInfo> <ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"> <ec:InclusiveNamespaces xmlns:ec="http://www.w3.org/2001/10/xml-exc-c14n#" PrefixList="soapenv wsa xsd xsi"></ec:InclusiveNamespaces> </ds:CanonicalizationMethod> <ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#hmac-sha1"></ds:SignatureMethod> <ds:Reference URI="#id-7866553"> <ds:Transforms> <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"> <ec:InclusiveNamespaces xmlns:ec="http://www.w3.org/2001/10/xml-exc-c14n#" PrefixList="wsa xsd xsi"></ec:InclusiveNamespaces> </ds:Transform> </ds:Transforms> <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></ds:DigestMethod> <ds:DigestValue>PmQSgFYbhiZciP5F6CRT5MZOPPk=</ds:DigestValue> </ds:Reference> <ds:Reference URI="#id-3874052"> <ds:Transforms> <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"> <ec:InclusiveNamespaces xmlns:ec="http://www.w3.org/2001/10/xml-exc-c14n#" PrefixList="soapenv wsa wsse xsd xsi"></ec:InclusiveNamespaces> </ds:Transform> </ds:Transforms> <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></ds:DigestMethod> <ds:DigestValue>jcRns/iJ1hxPJZEqUt1DIG0iDdo=</ds:DigestValue> </ds:Reference> <ds:Reference URI="#id-15606519"> <ds:Transforms> <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"> <ec:InclusiveNamespaces xmlns:ec="http://www.w3.org/2001/10/xml-exc-c14n#" PrefixList="xsd xsi"></ec:InclusiveNamespaces> </ds:Transform> </ds:Transforms> <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></ds:DigestMethod> <ds:DigestValue>TB1t5JzPv1WQ4uMX05qKqIl2s9o=</ds:DigestValue> </ds:Reference> <ds:Reference URI="#id-3779465"> <ds:Transforms> <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"> <ec:InclusiveNamespaces xmlns:ec="http://www.w3.org/2001/10/xml-exc-c14n#" PrefixList="xsd xsi"></ec:InclusiveNamespaces> </ds:Transform> </ds:Transforms> <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></ds:DigestMethod> <ds:DigestValue>erDZuYXo9WJn29GSh6Kood6guzw=</ds:DigestValue> </ds:Reference> <ds:Reference URI="#id-2929821"> <ds:Transforms> <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"> <ec:InclusiveNamespaces xmlns:ec="http://www.w3.org/2001/10/xml-exc-c14n#" PrefixList="xsd xsi"></ec:InclusiveNamespaces> </ds:Transform> </ds:Transforms> <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></ds:DigestMethod> <ds:DigestValue>QbIGZGq03FxN6tA2aE9d11/hvh0=</ds:DigestValue> </ds:Reference> <ds:Reference URI="#id-17160330"> <ds:Transforms> <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"> <ec:InclusiveNamespaces xmlns:ec="http://www.w3.org/2001/10/xml-exc-c14n#" PrefixList="xsd xsi"></ec:InclusiveNamespaces> </ds:Transform> </ds:Transforms> <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></ds:DigestMethod> <ds:DigestValue>Y4vVT5KZ9FKbXLumKcaqvHaWhHM=</ds:DigestValue> </ds:Reference> </ds:SignedInfo> <ds:SignatureValue>aLSM1mbqLMfNLKPVoi7dRqeVMT4=</ds:SignatureValue> <ds:KeyInfo Id="KeyId-26956311"> <wsse:SecurityTokenReference xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="STRId-9734221"> <wsse:Reference URI="#usernameTokenId-12455463" ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#UsernameToken"></wsse:Reference> </wsse:SecurityTokenReference> </ds:KeyInfo> </ds:Signature> <wsu:Timestamp xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="id-3874052"> <wsu:Created>2005-07-05T14:10:26Z</wsu:Created> <wsu:Expires>2005-07-05T14:15:26Z</wsu:Expires> </wsu:Timestamp> </wsse:Security> <wsa:MessageID xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="id-3779465" soapenv:mustUnderstand="0">uuid:8912a6f0-ed5e-11d9-8c80-a1e4097e4740</wsa:MessageID> <wsa:To xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="id-17160330" soapenv:mustUnderstand="0">http://localhost:8080/WebServiceGMC/webservicegmc.asmx</wsa:To> <wsa:Action xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="id-15606519" soapenv:mustUnderstand="0">http://localhost/WebServiceGMC/webservicegmc.asmx?op=getClientes</wsa:Action> <wsa:From xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="id-2929821" soapenv:mustUnderstand="0"> <wsa:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</wsa:Address> </wsa:From> </soapenv:Header> <soapenv:Body xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="id-7866553"> <anunciar xmlns="http://weg.net/service"> <ns1:usuario xmlns:ns1="http://weg.net/service/">1234</ns1:usuario> </anunciar> </soapenv:Body> </soapenv:Envelope> ------------------------------------------------------ and the new one working: <?xml version="1.0" encoding="UTF-8"?> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <soapenv:Header> <wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" soapenv:mustUnderstand="1"> <wsse:UsernameToken xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="usernameTokenId-32956236"> <wsse:Username>usuario3</wsse:Username> <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">senha3</wsse:Password> <wsu:Created>2005-07-08T18:21:20Z</wsu:Created> <wsse:Nonce>RKPwh5ELWCBqUa0FhZtP9A==</wsse:Nonce> </wsse:UsernameToken> <ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#"> <ds:SignedInfo> <ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"></ds:CanonicalizationMethod> <ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#hmac-sha1"></ds:SignatureMethod> <ds:Reference URI="#id-9734221"> <ds:Transforms> <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"></ds:Transform> </ds:Transforms> <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></ds:DigestMethod> <ds:DigestValue>FaQ7O3MS6a3e82I/jsfOhoDL+2M=</ds:DigestValue> </ds:Reference> <ds:Reference URI="#id-867695"> <ds:Transforms> <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"></ds:Transform> </ds:Transforms> <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></ds:DigestMethod> <ds:DigestValue>HinR+8MaMcU59CYiC25On0mv67U=</ds:DigestValue> </ds:Reference> <ds:Reference URI="#id-20727434"> <ds:Transforms> <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"></ds:Transform> </ds:Transforms> <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></ds:DigestMethod> <ds:DigestValue>YmbgnQ/0F+mxw9s3NrOibFvRj8w=</ds:DigestValue> </ds:Reference> <ds:Reference URI="#id-3874052"> <ds:Transforms> <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"></ds:Transform> </ds:Transforms> <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></ds:DigestMethod> <ds:DigestValue>iGemJhTiJd71u03JJWG22tLwfQ4=</ds:DigestValue> </ds:Reference> <ds:Reference URI="#id-15606519"> <ds:Transforms> <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"></ds:Transform> </ds:Transforms> <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></ds:DigestMethod> <ds:DigestValue>3m17MdDRPyAuUKi93W08Xdh2XQg=</ds:DigestValue> </ds:Reference> <ds:Reference URI="#id-3779465"> <ds:Transforms> <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"></ds:Transform> </ds:Transforms> <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></ds:DigestMethod> <ds:DigestValue>4Tb0yMaDPpAwiQXVpXdfJYWmvR0=</ds:DigestValue> </ds:Reference> <ds:Reference URI="#id-2929821"> <ds:Transforms> <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"></ds:Transform> </ds:Transforms> <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></ds:DigestMethod> <ds:DigestValue>t0XvlW4iqR3Qo2SirI+6sqkG4gk=</ds:DigestValue> </ds:Reference> </ds:SignedInfo> <ds:SignatureValue>Q1NqxNLzcBL4wIjc6UToVyJ6+Kc=</ds:SignatureValue> <ds:KeyInfo Id="KeyId-19583390"> <wsse:SecurityTokenReference xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="STRId-2780950"> <wsse:Reference URI="#usernameTokenId-32956236" ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#UsernameToken"></wsse:Reference> </wsse:SecurityTokenReference> </ds:KeyInfo> </ds:Signature> <wsu:Timestamp xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="id-20727434"> <wsu:Created>2005-07-08T18:21:20Z</wsu:Created> <wsu:Expires>2005-07-08T18:26:20Z</wsu:Expires> </wsu:Timestamp> </wsse:Security> <wsa:MessageID xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="id-3874052" soapenv:mustUnderstand="0">uuid:14e28260-efdd-11d9-a841-a743b9d3b3f7</wsa:MessageID> <wsa:To xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="id-2929821" soapenv:mustUnderstand="0">http://localhost:8080/WebServiceGMC/webservicegmc.asmx</wsa:To> <wsa:Action xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="id-867695" soapenv:mustUnderstand="0">http://localhost/WebServiceGMC/webservicegmc.asmx?op=getClientes</wsa:Action> <wsa:From xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="id-3779465" soapenv:mustUnderstand="0"> <wsa:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</wsa:Address> </wsa:From> <wsa:ReplyTo xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="id-15606519" soapenv:mustUnderstand="0"> <wsa:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</wsa:Address> </wsa:ReplyTo> </soapenv:Header> <soapenv:Body xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="id-9734221"> <anunciar xmlns="http://weg.net/service"> <ns1:usuario xmlns:ns1="http://weg.net/service/">1234</ns1:usuario> </anunciar> </soapenv:Body> </soapenv:Envelope> ----------------------------------------------------------------------- Now we have an example to work on it. I have already compared each other. The main difference I had found was the "CanonicalizationMethod" - Tag and the "Transform" Tag of the "Transforms" tags. Perhaps there are the problems?!?!? Steve -----Mensagem original----- De: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] Enviada em: sexta-feira, 8 de julho de 2005 07:59 Para: Dittmann, Werner; Steve Behrendt Cc: Gürkan Vural; Granqvist, Hans; [email protected] Assunto: Re: AW: AW: order of sign and encr in .NET Werner, Gürkan and David, Since Steve's post to the list concerning his problems using wss4j with UsernameToken Signature I've look at it again. My personal conclusion is that it once worked, but that in the meantime it's become broken. At the present time I can't say when exactly. I've tried various version of wss4j, axis and bouncycastle and the only way I can get it working is by using an older version of wss4j that I build. I've attached it, so you can try it out and hopefully have a request come through. Regards Brian > Gürkan, > > is this a real log of the request? If I save the file and try > to open it with an XML editor it fails because of non-well > formed document. Looking at it with emacs I see some linebreaks > at unusual points, e.g. in the middle of an element name. > > I'm not sure if this is due to e-mail transport or similar. > But because you sent it as an attachement I would suspect that is > not the case. > > Can you verify this? > > Regards, > Werner > >> -----Ursprüngliche Nachricht----- >> Von: Gürkan Vural [mailto:[EMAIL PROTECTED] >> Gesendet: Freitag, 8. Juli 2005 11:06 >> An: Dittmann, Werner >> Cc: Granqvist, Hans; [email protected] >> Betreff: Re: AW: order of sign and encr in .NET >> >> >> sorry wss4j can verify all elements but not final signature value. it >> processes all elements in the correct order. I am trying to verify >> username token signature with >> http://www.w3.org/2000/09/xmldsig#hmac-sha1 algorithm. I can >> verify what >> i send to biztalk but not from biztalk. In the attachment there is a >> sample soap message. Can anyone try to verify this? >> >> -- >> gurkan >> >> Dittmann, Werner wrote: >> >> >Gürkan, >> > >> >to me it seems a problem of BizTalk and/or the .Net WSE >> >implementation. According to the OASIS WSS specification, >> >chapter 5: >> > >> ><quote> >> >As elements are added to a <wsse:Security> header block, >> >they SHOULD be prepended to the existing elements. As such, >> >the <wsse:Security> header block represents the signing and >> >encryption steps the message producer took to create the message. >> >This prepending rule ensures that the receiving application can >> >process sub-elements in the order they appear in the >> ><wsse:Security> header block, because there will be no forward >> >dependency among the sub-elements. Note that this specification >> >does not impose any specific order of processing the >> >sub-elements. The receiving application can use whatever order >> >is required. >> ></quote> >> > >> >This means, if the receiver sees an encryption sub-element >> >before a Signature sub-element if processes encryption first. >> >The ordering of elements is the _only_ information about the >> >processing sequence. How could the receiver otherweise >> >determine that it should first check Signature, then decrypt? >> > >> >Maybe you may crosscheck with the MS folks to clarfiy that? >> >Are there known problems with BizTalk / .Net WSE? In general >> >we tested interop with .Net WSE. >> > >> >Regards, >> >Werner >> > >> > >> > >> >>-----Ursprüngliche Nachricht----- >> >>Von: Gürkan Vural [mailto:[EMAIL PROTECTED] >> >>Gesendet: Freitag, 8. Juli 2005 07:59 >> >>An: Granqvist, Hans >> >>Cc: [email protected] >> >>Betreff: Re: order of sign and encr in .NET >> >> >> >> >> >>Granqvist, Hans wrote: >> >> >> >> >> >> >> >>>>... biztalk outputs >> >>>>DataReference above Signature element and this causes >> >>>>decryption before signature and sign validation fails because >> >>>>decryption changes the value of body element. >> >>>> >> >>>> >> >>>> >> >>>> >> >>>Is it you or biztalk that implies processing order from >> >>>the element order? >> >>> >> >>>Hans >> >>> >> >>> >> >>> >> >>> >> >>Whatever order I send data to Biztalk it processes correctly. >> >>Because my >> >>java client (wss4j) puts the headers of last operation above >> >>the others. >> >>However Biztalk always sends DataReference above Signature >> element and >> >>my java client (wss4j) first processes the encrypted body >> so signature >> >>validation fails. >> >> >> >>-- >> >>gurkan >> >> >> >>==========================================================- >> >>Bu e-posta sadece yukarida isimleri belirtilen kisiler >> >>arasinda özel haberlesme amacini tasimaktadir. Size >> >>yanlislikla ulasmissa lütfen gönderen kisiyi bilgilendiriniz >> >>ve mesaji sisteminizden siliniz. Turkiye Cumhuriyet Merkez >> >>Bankasi A.S. bu mesajin icerigi ile ilgili olarak hicbir >> >>hukuksal sorumlulugu kabul etmez. >> >> >> >>This e-mail communication is intended for the private use of >> >>the people named above. If you received this message in >> >>error, please immediately notify the sender and delete it >> >>from your system. The Central Bank of The Republic of Turkey >> >>does not accept legal responsibility for the contents of >> this message. >> >> >> >> >> >> >> >> >> >> ==========================================================- >> Bu e-posta sadece yukarida isimleri belirtilen kisiler >> arasinda özel haberlesme amacini tasimaktadir. Size >> yanlislikla ulasmissa lütfen gönderen kisiyi bilgilendiriniz >> ve mesaji sisteminizden siliniz. Turkiye Cumhuriyet Merkez >> Bankasi A.S. bu mesajin icerigi ile ilgili olarak hicbir >> hukuksal sorumlulugu kabul etmez. >> >> This e-mail communication is intended for the private use of >> the people named above. If you received this message in >> error, please immediately notify the sender and delete it >> from your system. The Central Bank of The Republic of Turkey >> does not accept legal responsibility for the contents of this message. >> >
