2015-06-09 4 views
5

Я пытаюсь настроить клиент (веб-приложение) и службу (службу WCF), которая будет связываться с использованием WSHttpBinding. Похоже, что для использования этой привязки клиент отправляет предварительные сообщения для настройки канала.Добавить заголовок в WCF RequestSecurityToken Message

Между клиентом и службой существует служебная шина, которая маршрутизируется на пользовательский заголовок. Сообщение при использовании безопасности BasicHttpBinding маршрутизирует без проблем.

Мой вопрос: есть ли способ добавить один и тот же настраиваемый заголовок в предварительное сообщение RequestSecurityToken?

Заранее спасибо.

+0

ли заголовок должен быть частью сообщения RST, или вы говорите о заголовке HTTP? – mclark1129

+0

Я хотел бы сделать его частью заголовка сообщения мыла RST. – hunda27

ответ

1

Это решение было разрешено.

К сожалению, согласно документации MSDN, служба, использующая транспортную безопасность WCF, не может проходить через маршрутизатор, а также ни сервис, ни клиент не может находиться в Интернете (https://msdn.microsoft.com/en-us/library/ff648863.aspx#TransportSecurity).

Мы хотели нарушить оба принципа.

Итак, чтобы сократить сообщения, от пяти вызовов и ответов до одного, мы переключились на Message Security и отключили InstallSecurityContext и NegotiateServiceCredential. - Это должно было быть сделано как в настройках конфигурации Service, так и в Client.

В дополнение к этому заслуживает внимания тот факт, что для того, чтобы указать услугу на нашу служебную шину, мы изменили клиентскую службуClientViaBehavior на стороне клиента.

Выключите EstablishContext и NegotiateServiceCredential: клиент

WSHttpBinding binding = new WSHttpBinding(); 

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

точки в Service Bus:

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