2010-09-21 156 views
1

我正在構建一個WCF服務,該服務在netTcpBinding上使用自定義用戶名/密碼驗證以及消息級安全性。我一直在研究MaxReceivedMessageSize設置,並且我有一個相當技術性質的查詢。我注意到當你指定一個自定義的用戶名驗證器時,它會在WCF的管道內部深入調用(在握手期間,我想)。WCF netTcpBinding MaxReceivedMessageSize和Custom UsernamePasswordValidation

如果我有一個相對較大的1MB的MaxReceivedMessageSize,WCF是否會將整條消息從線路上讀取出來,然後執行身份驗證,或者它會首先執行身份驗證並以某種方式丟棄消息的其餘部分?

我查詢的原因是DoS攻擊。我希望由於認證,服務將不受大型消息DoS攻擊的影響。

回答

0

我相信完整的信息被加載。該消息首先由沒有任何有關消息安全性的傳輸信道處理。所以通道使用選定的編碼器讀取整個消息並創建消息實例。這個實例被傳遞給進一步的處理,包括消息安全檢查。唯一的例外是使用流傳輸模式。在這種情況下,只有郵件頭纔會在接收通道中讀取並放入緩衝區。

爲了證明這一點,您還可以打開消息日誌記錄,它可以在傳輸級別和服務級別上記錄消息。傳輸級別是從傳輸中接收的消息,服務級別是在服務中接收到的消息(畢竟安全處理)。所以這個消息已經在傳輸級別讀取了。

+0

該死的:)!謝謝你的澄清。如果我啓用了傳輸級別安全性,那麼你會認爲會發生什麼? – 2010-09-22 10:11:45