我正在嘗試設置將使用WSHttpBinding進行通信的客戶端(Web應用程序)和服務(WCF服務)。看起來,爲了使用此綁定,客戶端發送初步消息來設置通道。將標題添加到WCF RequestSecurityToken消息
在客戶端和服務之間存在一個服務總線,它在自定義標題上進行路由。該消息在使用BasicHttpBinding安全性時,路由沒有問題。
我的問題是:有沒有辦法將相同的自定義標頭添加到初步的RequestSecurityToken消息?
預先感謝您。
我正在嘗試設置將使用WSHttpBinding進行通信的客戶端(Web應用程序)和服務(WCF服務)。看起來,爲了使用此綁定,客戶端發送初步消息來設置通道。將標題添加到WCF RequestSecurityToken消息
在客戶端和服務之間存在一個服務總線,它在自定義標題上進行路由。該消息在使用BasicHttpBinding安全性時,路由沒有問題。
我的問題是:有沒有辦法將相同的自定義標頭添加到初步的RequestSecurityToken消息?
預先感謝您。
此問題已解決。
不幸的是,根據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")));
應該是RST消息的一部分的頭,或者是你談論一個HTTP標頭? – mclark1129
我想使它成爲RST soap消息頭的一部分。 – hunda27