CXF Web服务(Java)中预期摘要和实际摘要之间的差异

时间:2014-06-30 11:49:12

标签: java web-services soap digital-signature

16:56:06,477 DEBUG DOMReference:398 - Expected digest: 3BXXHthnTP9kC1YB6FPUrpnO72wNuPmWerwglakCGiY=
16:56:06,477 DEBUG DOMReference:399 - Actual digest: hesLZ/G8ekBPdFNGrxIJmxSYhhMC/BBHD6x/pHqXJt4=
16:56:06,477 DEBUG DOMXMLSignature:276 - Reference[#Body] is valid: false 

我在CXF中完成了一项Web服务,我只使用javax.xml.crypto完成了一个客户端 包实用程序。在客户端,当我检查签名的有效性时,它表示有效。我在身体部分消化的地方是" 3BXXHthnTP9kC1YB6FPUrpnO72wNuPmWerwglakCGiY ="。

然后生成的SOAP消息正在发送,在Web服务端,它表示实际摘要是其他内容,但不是我在客户端获得的内容。

有人可以对此有所了解吗? 谢谢

1 个答案:

答案 0 :(得分:0)

我正在从文件中读取SOAP消息。得到了一些非UTF8字符 包含在消化中。然而,我在摘要之前进行了规范化,这应该可以解决这类问题。代码已修改为只读UTF-8数据并修复了问题。

File attachmentFile = new File("soap_sample.xml");
    FileInputStream fis = new FileInputStream(attachmentFile);
    InputStreamReader isr = new InputStreamReader(fis, "UTF8");
    BufferedReader in = new BufferedReader(isr);

    StringBuffer buffer = new StringBuffer();

    String inputLine = null;
    while ((inputLine = in.readLine()) != null) {
        buffer.append(inputLine);
    }

    InputStream is = IOUtils.toInputStream(buffer.toString(), "UTF-8");

    SOAPMessage soapMessage = MessageFactory.newInstance().createMessage(new MimeHeaders(), is);