Добавить заголовок в сообщение WCF RequestSecurityToken

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

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

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

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

1 ответ

Решение

Это было решено.

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

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

Таким образом, чтобы сократить количество сообщений, от пяти вызовов и ответов до одного, мы переключились на защиту сообщений и отключили EstablishSecurityContext и NegotiateServiceCredential. - Это должно быть сделано как в настройках службы, так и в настройках клиента.

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

Отключите УстановитеКонтекст и 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")));
Другие вопросы по тегам