2010-02-18 113 views

回答

5

我假設簽名意味着您使用安裝在客戶端的證書對消息簽名。

在WCF中這樣做相對容易。假設您在security element中使用wsHttpBinding,則必須將模式設置爲SecurityMode.Message。您還必須將clientCredentialType of the message element設置爲MessageCredentialType.Certificate

然後,您必須設置端點行爲並配置clientCertificate element(它是clientCredentials element的子項)以指示存儲客戶端證書的位置。

即使您不使用wsHttpBinding,當您想要使用客戶端證書來提供消息級安全性時,對於大多數其他綁定,配置也幾乎相同。

如果您通過HTTPS進行調用,請注意您必須將安全元素上的mode屬性設置爲Mode.TransportWithMessageCredential。

+0

你說得對,我正在談論簽署請求的請求,並附上一張坐在發出請求的機器上的證書。 – 2010-02-18 22:10:31

+0

我正在使用basicHttpBinding,因爲多數民衆贊成什麼實用工具默認生成,我把它切換到wsHttpBinding只需在web.config中替換它。當我提出請求時,我收到錯誤消息:「請求已中止:無法創建SSL/TLS安全通道。」 – 2010-02-18 22:38:18

+0

@Mr Bell:您應該能夠使用相同的屬性在basicHttpBinding上設置安全模式。 – casperOne 2010-02-18 23:01:22

1

以下是有關使用WCF使用需要簽名的Amazon SOAP服務的問題。我認爲答案給出了一個很好的例子,這可能有助於你的情況。

How to sign an Amazon web service request in .NET with SOAP and without WSE

編輯:有顯然對連結此其他StackOverflow的問題有些混亂。我想指出最高票選出的答案。這絕對是一個WCF解決方案。您會注意到從IClientMessageInspector(WCF接口)繼承的類SigningMessageInspector。我認爲這部分可能會幫助你。

+0

它也不使用WCF來完成。 – casperOne 2010-02-18 21:41:23

+0

@casperOne - 遵循Tim的鏈接,一個大回答說:「我結束了更新代碼以使用WCF ...」。那怎麼不使用WCF? – Ecyrb 2010-02-19 00:31:47

+0

@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