如何使用WCF签署SOAP请求
我假设签名意味着您使用安装在客户端的证书对消息签名。
在WCF中这样做相对容易。假设您在security element中使用wsHttpBinding,则必须将模式设置为SecurityMode.Message。您还必须将clientCredentialType of the message element设置为MessageCredentialType.Certificate。
然后,您必须设置端点行为并配置clientCertificate element(它是clientCredentials element的子项)以指示存储客户端证书的位置。
即使您不使用wsHttpBinding,当您想要使用客户端证书来提供消息级安全性时,对于大多数其他绑定,配置也几乎相同。
如果您通过HTTPS进行调用,请注意您必须将安全元素上的mode属性设置为Mode.TransportWithMessageCredential。
以下是有关使用WCF使用需要签名的Amazon SOAP服务的问题。我认为答案给出了一个很好的例子,这可能有助于你的情况。
How to sign an Amazon web service request in .NET with SOAP and without WSE
编辑:有显然对连结此其他StackOverflow的问题有些混乱。我想指出最高票选出的答案。这绝对是一个WCF解决方案。您会注意到从IClientMessageInspector(WCF接口)继承的类SigningMessageInspector。我认为这部分可能会帮助你。
它也不使用WCF来完成。 – casperOne 2010-02-18 21:41:23
@casperOne - 遵循Tim的链接,一个大回答说:“我结束了更新代码以使用WCF ...”。那怎么不使用WCF? – Ecyrb 2010-02-19 00:31:47
@Tim C:当你发布链接的唯一答案是这样的:http://stackoverflow.com/questions/1204191/how-to-sign-an-amazon-web-service-request-in-net- with-soap-and-without-wse/1204671#1204671其中绝对没有WCF解决方案。 – casperOne 2010-02-19 14:24:12
你说得对,我正在谈论签署请求的请求,并附上一张坐在发出请求的机器上的证书。 – 2010-02-18 22:10:31
我正在使用basicHttpBinding,因为多数民众赞成什么实用工具默认生成,我把它切换到wsHttpBinding只需在web.config中替换它。当我提出请求时,我收到错误消息:“请求已中止:无法创建SSL/TLS安全通道。” – 2010-02-18 22:38:18
@Mr Bell:您应该能够使用相同的属性在basicHttpBinding上设置安全模式。 – casperOne 2010-02-18 23:01:22