Netbeans java Web服务客户端使用带有algorithmSuite Basic256Sha256的消息安全性来使用WCF服务

时间:2013-12-18 08:47:35

标签: wcf netbeans message sha256 sha2

我有一个带有消息安全性的WCF Web服务,并使用Netbeans创建的java Web应用程序使用Metro(WSIT + jaxws)来使用它。一切正常使用标准algorithmSuite Basic256,但当我使用Basic256Sha256这是服务的要求时,我得到一个运行时错误,说“SOAPFaultException:验证消息的安全性时发生错误。”。当我查看服务日志时,它说“算法'http://www.w3.org/2000/09/xmldsig#hmac-sha1'不被算法套件Basic256Sha256操作'SymmetricSignature'接受。”问题是我如何更改客户端以使用SHA2(Sha256)。我使用证书作为客户端凭据类型。

WCF绑定:

        <!-- MESSAGE SECURITY -->
        <binding name="myMessageBinding">
          <transactionFlow />
          <security defaultAlgorithmSuite="Basic256Sha256" 
                    authenticationMode="SecureConversation"
                    messageSecurityVersion="WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10">
            <secureConversationBootstrap defaultAlgorithmSuite="Basic256Sha256"
                                         authenticationMode="MutualCertificate" requireDerivedKeys="false"
                                         messageSecurityVersion="WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10"
                                         requireSignatureConfirmation="true" />
          </security>
          <textMessageEncoding />
          <httpTransport />
        </binding>

1 个答案:

答案 0 :(得分:1)

SecurityAlgorithmSuite.IsSymmetricSignatureAlgorithmSupported返回不受支持的symetric签名错误算法,因为 Basic256Sha256 使用

  

http://www.w3.org/2001/04/xmldsig-more#hmac-sha256

作为用于签名生成和验证的算法和

  

http://www.w3.org/2001/04/xmlenc#sha256

作为要应用于签名对象的摘要算法,以创建或验证xml签名的哈希值。

  

http://www.w3.org/2000/09/xmldsig#hmac-sha1

作为

的对称签名有效
  • 默认
  • Basic256
  • Basic256Rsa15

使用

  

http://www.w3.org/2000/09/xmldsig#sha1

作为摘要算法。

您的Java客户端似乎没有使用相同的算法来签署SOAP消息,请检查从Java客户端收到的消息中的SignedInfo SignatureMethod元素

  

算法= “http://www.w3.org/2000/09/xmldsig#hmac-sha1”

确保客户端不使用相同的算法进行签名。