I will check it right now. I am also trying to make it by registering 2 different out interceptors. The first one would be creating BST element. The second one would be signing body and BST. I already managed to make it in that way in SoapUI (which also uses CXF).
Unfortunately, CXF looks like ignoring the second interceptor. Do you think this solution may work? 2012/6/29 Colm O hEigeartaigh <[email protected]>: > Hi Pawel, > > It is not possible to do this using the non-policy WS-Security > interceptors. However, you should be able to get it working by adapting one > of the X509 test policies, e.g.: > > http://svn.apache.org/viewvc/cxf/trunk/systests/ws-security-examples/src/test/resources/org/apache/cxf/systest/wssec/examples/x509/DoubleItX509.wsdl?view=markup > > Colm. > > On Fri, Jun 29, 2012 at 12:06 PM, Paweł Gutowski > <[email protected]>wrote: > >> I need to sign Body and BinarySecurityToken elements. >> I get this exception when creating signature for the message: >> >> >> Caused by: org.apache.ws.security.WSSecurityException: Error during >> Signature: >> ... 35 more >> Caused by: org.apache.ws.security.WSSecurityException: Signature >> creation failed (Cannot setup signature data structure) >> ... 38 more >> Caused by: org.apache.ws.security.WSSecurityException: General >> security error (WSEncryptBody/WSSignEnvelope: Element to encrypt/sign >> not found: >> http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd >> , >> BinarySecurityToken) >> at >> org.apache.ws.security.message.WSSecSignatureBase.addReferencesToSign(WSSecSignatureBase.java:160) >> >> >> This is my Spring config part: >> >> <bean class="org.apache.cxf.ws.security.wss4j.WSS4JOutInterceptor"> >> <constructor-arg> >> <map> >> <entry key="action" value="Signature" /> >> <entry key="user" value="mySuer" /> >> <entry key="passwordCallbackRef"> >> <bean id="myPasswordCallback" >> class="com.myCompany.MyPasswordCallback" /> >> </entry> >> <entry key="signaturePropFile" value="client_sign.properties" /> >> <entry key="signatureKeyIdentifier" value="DirectReference" /> >> <entry key="signatureParts" >> value="{}{ >> http://schemas.xmlsoap.org/soap/envelope/}Body;{}{http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd}BinarySecurityToken >> " >> /> >> <entry key="isBSPCompliant" value="false" /> >> </map> >> </constructor-arg> >> </bean> >> >> >> I also tried to change signatureParts value to: >> <entry key="signatureParts" >> value="Token;{}{http://schemas.xmlsoap.org/soap/envelope/}Body" /> >> >> then I get the same exception: >> Caused by: org.apache.ws.security.WSSecurityException: General >> security error (WSEncryptBody/WSSignEnvelope: Element to encrypt/sign >> not found: http://schemas.xmlsoap.org/soap/envelope/, Token) >> at >> org.apache.ws.security.message.WSSecSignatureBase.addReferencesToSign(WSSecSignatureBase.java:160) >> ... 41 more >> >> >> There is no problem with producing signature for Body and BST elements >> on Weblogic server. >> This is what I expect to produce: >> >> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/ >> " >> xmlns:soap="http://soap.my.company.com/"> >> <soapenv:Header> >> <wsse:Security soap:mustUnderstand="1" >> xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" >> xmlns:wsse=" >> http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd >> "> >> <wsse:BinarySecurityToken >> ValueType=" >> http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3 >> " >> EncodingType=" >> http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary >> " >> xmlns:wsu=" >> http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd >> " >> wsu:Id="SecurityToken-270e5823-573d-4252-9607-db5f6286969b">MIIDg... >> </wsse:BinarySecurityToken> >> <Signature Id="cd56d279-7479-41ec-94e1-b0d72f961cf0" >> xmlns="http://www.w3.org/2000/09/xmldsig#"> >> <SignedInfo> >> <ds:CanonicalizationMethod >> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" >> xmlns:ds="http://www.w3.org/2000/09/xmldsig#" /> >> <SignatureMethod >> Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" /> >> <Reference >> URI="#SecurityToken-270e5823-573d-4252-9607-db5f6286969b"> >> <Transforms> >> <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" >> /> >> </Transforms> >> <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" >> /> >> <DigestValue>oGYH...g=</DigestValue> >> </Reference> >> <Reference URI="#Id-117b61be-9ca0-4745-b0fa-946e2492f0a3"> >> <Transforms> >> <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" >> /> >> </Transforms> >> <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" >> /> >> <DigestValue>Qo8S...=</DigestValue> >> </Reference> >> </SignedInfo> >> <SignatureValue>KV2eV.....= >> </SignatureValue> >> <KeyInfo> >> <wsse:SecurityTokenReference> >> <wsse:Reference >> URI="#SecurityToken-270e5823-573d-4252-9607-db5f6286969b" >> ValueType=" >> http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3 >> " >> /> >> </wsse:SecurityTokenReference> >> </KeyInfo> >> </Signature> >> </wsse:Security> >> </soapenv:Header> >> <soapenv:Body wsu:Id="Id-117b61be-9ca0-4745-b0fa-946e2492f0a3"> >> ..... >> </soapenv:Body> >> </soapenv:Envelope> >> > > > > -- > Colm O hEigeartaigh > > Talend Community Coder > http://coders.talend.com
