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

Reply via email to