0

我有一个具有消息安全性的 WCF Web 服务,并通过使用 Metro (WSIT+jaxws) 的项目使用 Netbeans 创建的 Java Web 应用程序使用它。使用标准 algorithmSuite Basic256 一切正常,但是当我使用服务要求的 Basic256Sha256 时,我收到运行时错误,提示“SOAPFaultException:验证消息安全性时发生错误。”。当我查看服务日志时,它显示“算法套件 Basic256Sha256 不接受算法‘ http://www.w3.org/2000/09/xmldsig#hmac-sha1 ’操作‘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>
4

1 回答 1

1

SecurityAlgorithmSuite.IsSymmetricSignatureAlgorithmSupported为对称签名错误返回不受支持的算法,因为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

作为对称签名有效

  • 默认
  • 基本256
  • 基本256Rsa15

使用

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

作为摘要算法。

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

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

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

于 2013-12-18T10:45:15.137 回答