使用hmac-sha256

时间:2016-03-24 16:04:31

标签: soap spring-ws sign secret-key

我正面临着XWS Security的两难境地。 我有一条肥皂消息,我想用HMAC算法签名。 我的policy.xml看起来 `     

<xwss:Sign includeTimestamp="true" >
    <xwss:X509Token certificateAlias="client"  keyReferenceType="Identifier"
    encodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary" />

    <xwss:CanonicalizationMethod algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" disableInclusivePrefix="true"/>

    <xwss:SignatureMethod algorithm="http://www.w3.org/2001/04/xmldsig-more#hmac-sha256"/>

    <xwss:SignatureTarget type="xpath" value=".//SOAP-ENV:Body">
        <xwss:DigestMethod algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
        <xwss:Transform algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" disableInclusivePrefix="true"/>
    </xwss:SignatureTarget>
</xwss:Sign>
`

我还创建了一个包含私钥和证书的JKS文件。

但是当我开始签署我的消息时,我收到了这个错误:  Caused by: javax.xml.crypto.dsig.XMLSignatureException: java.security.InvalidKeyException: key must be SecretKey at org.jcp.xml.dsig.internal.dom.DOMXMLSignature.sign(DOMXMLSignature.java:400) ~[na:1.7.0_79] at com.sun.xml.wss.impl.dsig.SignatureProcessor.sign(SignatureProcessor.java:708) ~[xws-security-3.0.jar:3.0-FCS] ... 99 common frames omitted

我在互联网上发现的几乎所有文件都说SecretKey仅用于加密/解密邮件。

为了说明这一点:当我使用RSA算法时,一切都进展顺利。

有人可以向我解释:为什么HMAC正在寻找一个SecretKey?

非常感谢

0 个答案:

没有答案