WCF客户端验证BinarySecurityToken作为响应

时间:2012-09-21 09:46:19

标签: wcf-security wcf-client digital-signature x509

我正在为使用SSL传输,相互身份验证和数字签名的第三方SOAP服务(在我认为的Java后端)编写WCF客户端。

我已通过SSL建立连接,并使用相关的客户端证书正确签署请求。请求成功完成,第三方已确认我发送的消息的有效性。

然而,问题出现在我们收到服务的回复时。 回复带有签名的时间戳和正文。 有一个BinarySecurityToken和一个SecurityTokenReference,其参考字段为http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3

目前,我从客户端收到以下异常:

  

遇到异常:System.ServiceModel.Security.MessageSecurityException:找不到'System.IdentityModel.Tokens.X509SecurityToken'令牌类型的令牌验证器。根据当前的安全设置,不能接受该类型的标记。

我目前正在使用如下配置的customBinding:

<customBinding>
  <binding name="Custom">
    <security
        defaultAlgorithmSuite="Basic256Rsa15"
        allowSerializedSigningTokenOnReply="true"
        authenticationMode="CertificateOverTransport"
        securityHeaderLayout="Strict"
        messageSecurityVersion="WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10">
      <secureConversationBootstrap />
    </security>
    <textMessageEncoding messageVersion="Soap11" />
    <httpsTransport requireClientCertificate="true" />
  </binding>
</customBinding>

我找不到任何有关如何使用此BinarySecurityToken验证响应签名的信息,甚至找不到如何配置客户端以接受“该类型的令牌”

提前感谢您的任何帮助或建议,

PhilHalf

1 个答案:

答案 0 :(得分:1)

事实证明,通过将messageSecurityVersion更改为:

  

WSSecurity10WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10

已解决问题,我现在可以处理返回的安全令牌