2008-12-22 217 views
2

我有一個WCF服務託管在Windows應用程序中。該服務使用netMsmqBinding。客戶端和主機位於不同的域中。我的問題是如何配置安全設置?配置WCF安全設置

被傳遞的數據是敏感的,所以我想確保客戶端和服務的主機之間的通信。唯一的問題是,我不知道該怎麼做...(我不想使用證書) 任何幫助,將不勝感激!


詹姆斯Schek:它完美,當我沒有安全(不管是MSMQ)運行它。在我的情況下,MSMQ託管在服務器上,如果它停機 - 那麼客戶端的消息將保留在它的傳出隊列中,並且當MSMQ啓動並再次運行時,所有消息都會發送 - 這是MSMQ的功能,並且是預期的行爲(這就是爲什麼通過MSMQ發送的所有消息必須是單向的,因爲我們不知道服務器或客戶端何時在線 - 我們只是想要傳遞消息)。

一個在我們組織的管理員問我,如果有其他的方式(而不是證書) - 這就是爲什麼我要求(他想知道在這種情況下確保所有可能的方式)。

我處於工作組模式,而不是域模式!所以我無法使用域名......並且根本沒有廣告。

回答

1

MSMQ一般不適合在互聯網上(如果那是你打算做什麼)。否則,如果你想要消息級別的安全性,我認爲你不能避免證書。

+0

但MSMQ是我唯一的選擇,因爲客戶端和服務器並不總是在同一時間在線。我的意思是有斷開連接的呼叫,根據MSDN建議在這種情況下使用MSMQ。那麼證書是消息級安全性的唯一選擇? 那麼交通等級安全呢? – 2008-12-22 12:03:08

1

你可能想從MSDN看這篇文章,看看你有什麼選擇。您還可以實現自定義綁定,其中傳輸和加密消息是根據您的選擇實施的。 Btw here是鏈接。

0

我有我的懷疑,WCF將按照你的預期在這種情況下工作。 MSMQ在哪裏舉辦?在「服務器」還是「客戶端」上?還是有獨立的MSMQ主機?斷開連接時,我相信唯一可以工作的系統是託管MSMQ的系統。另一個系統將無法初始化WCF。

如果你的系統是在不同的領域,但在同一個廣告的森林,那麼你可以使用域認證的運輸保障。如果他們完全在森林中,那麼您必須自己加密有效負載或依靠消息級別的安全性 - 即。證書。

如果標頭不是敏感的(即您調用的函數的名稱,誰在調用它等),則可以手動加密有效負載。即將數據序列化爲binary或xml,對序列化對象進行加密,然後調用WCF方法,並以生成的字節數組爲參數。

你還沒有解釋爲什麼你想避免證書。顯然還有另外一個你沒有告訴我們的限制。爲什麼不使用證書?

0

,你可以很容易地通過,如果你需要消息級安全性的結合,指定相應的屬性使用傳輸安全,認證是您最佳的選擇。

0

我建議由O'Reilly獲得朱瓦爾·洛的「編程WCF服務」的副本。他有一整章致力於使用WCF和MSMQ。