2008-09-23 108 views
1

我正在構建服務之間的一些路由功能。原始服務和執行路由的服務具有相同的配置;兩者都使用NetTcpBinding的下面的結合配置:WCF路由消息安全

NetTcpBinding的

安全模式= 「消息」

消息clientCredentialType = 「username」 的

服務行爲使用ASPNET會員供應商和我們在機器上安裝的客戶端證書。

當我關掉它轉發就好了,但是當它接通我得到下面的異常信息安全:

「的消息無法處理這很可能是因爲行動‘http://foo/Whatever’是不正確或者因爲消息包含無效或過期的安全上下文令牌或因爲綁定之間存在不匹配*。如果服務由於不活動而中止通道,則安全上下文令牌將無效爲了防止服務過早地中止空閒會話增加服務端點綁定的接收超時。「 (Emphasis mine)

我的想法是,證書在消息上運行兩次(一次在原始調用,然後在中繼上),這就是破壞消息安全令牌的原因。

問題:

  1. 是我的目標在想什麼?

  2. 有沒有一種方法可以繼續使用消息安全進行路由,而不需要令牌服務的複雜性?

+0

有兩個問題 - 1.您需要路由器服務的安全嗎?從某種意義上說,消息安全的思想是它允許路由等工作在消息上而不必解密。 2.您在路由器服務中遇到的錯誤?兩種服務是否共享相同的服務證書? – 2009-01-13 14:48:16

回答

1

您提到在無安全性和消息安全性之間切換。您是否確保在接收端更改WCF服務端點以及端點?如果沒有,並且兩者不匹配,則會收到錯誤。這就是那個錯誤似乎對我說的話。

對於問題2,您在運行什麼類型的環境?一個封閉的系統,您可以使用加密和簽名,或公共環境,您可能需要使用特殊的密鑰?