Добавить заголовок в сообщение 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")));