2015-06-09 65 views
5

我正在嘗試設置將使用WSHttpBinding進行通信的客戶端(Web應用程序)和服務(WCF服務)。看起來,爲了使用此綁定,客戶端發送初步消息來設置通道。將標題添加到WCF RequestSecurityToken消息

在客戶端和服務之間存在一個服務總線,它在自定義標題上進行路由。該消息在使用BasicHttpBinding安全性時,路由沒有問題。

我的問題是:有沒有辦法將相同的自定義標頭添加到初步的RequestSecurityToken消息?

預先感謝您。

+0

應該是RST消息的一部分的頭,或者是你談論一個HTTP標頭? – mclark1129

+0

我想使它成爲RST soap消息頭的一部分。 – hunda27

回答

1

此問題已解決。

不幸的是,根據MSDN文檔,使用WCF傳輸安全的服務無法通過路由器,服務和客戶端也不能位於互聯網上(https://msdn.microsoft.com/en-us/library/ff648863.aspx#TransportSecurity)。

我們想違反兩個'原則'。

因此,爲了減少消息,從五個呼叫和響應到一個,我們切換到消息安全並關閉EstablishSecurityContext和NegotiateServiceCredential。 - 這必須在服務和客戶端配置設置上完成。

除此之外,值得注意的提示可能是,爲了將服務指向我們的服務總線,我們更改了客戶端服務的Client端行爲。

關閉EstablishContext和NegotiateServiceCredential:

WSHttpBinding binding = new WSHttpBinding(); 

binding.Security.Mode = SecurityMode.Message; 
binding.Security.Message.EstablishSecurityContext = false; 
binding.Security.Message.NegotiateServiceCredential = false; 

點客戶服務總線:

serviceClient.Endpoint.EndpointBehaviors.Add(new ClientViaBehavior(new Uri("http://url/WCFService/ServiceName.svc")));