2012-09-21 28 views
2

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

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

但是,问题出现在我们收到服务响应时。 响应返回带有签名的时间戳和正文。

遇到例外情况:System.ServiceModel.Security.MessageSecurityException 有一个的BinarySecurityToken与类型http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3

的参考场目前一个SecurityTokenReference,我从客户收到以下异常:找不到“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

事实证明,通过改变messageSecurityVersion到:

WSSecurity10WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10

已经解决了这个问题,我现在可以在返回过程中的安全性令牌

+0

我有同样的问题,但事实并非如此为我工作:( – Gico