.NET SOAP связь с отдельными сертификатами для подписи и шифрования - PullRequest
0 голосов
/ 25 мая 2018

Я пытаюсь настроить связь клиента с сервисом SOAP, написанным на Java, но пока не получилось.Хотя довольно просто подключиться к этому сервису с помощью SoapUI (мне просто нужно поместить эти два сертификата в подходящие места, и он просто работает), это довольно далеко от простоты (и интуитивно понятного) в C #.

Сервис использует дваразные сертификаты - один для подписи сообщения (двоичный токен) и один для шифрования TLS.Я реализовал свои собственные классы для этой вещи, используя этот учебник:

https://docs.microsoft.com/pl-pl/dotnet/framework/wcf/extending/how-to-use-separate-x-509-certificates-for-signing-and-encryption

Благодаря этому я могу подключиться и отправить запрос, но это не конец проблем.Следующей ошибкой было «Входящее сообщение было подписано токеном, который отличался от того, что использовался для шифрования тела. Этого не ожидалось».

Согласно моим исследованиям, я должен просто стереть весь заголовок Security и настроить мой клиентразрешить необеспеченный ответ.Поэтому я должен реализовать свой собственный MessageEncoder, что я на самом деле делал, используя это:

https://docs.microsoft.com/pl-pl/dotnet/framework/wcf/samples/custom-message-encoder-custom-text-encoder

Я добавил только одну дополнительную функцию, которая должна удалять заголовок безопасности, точно так же, как @nuronce сделал в этой теме:

https://social.msdn.microsoft.com/Forums/vstudio/en-US/16de05ed-3776-40e5-b576-139603e4b374/the-incoming-message-was-signed-with-a-token-which-was-different-from-what-used-to-encrypt-the-body?forum=wcf

Но это еще не конец проблем ... Прямо сейчас говорится: «Версия сообщения исходящего сообщения (Soap11 (http://schemas.xmlsoap.org/soap/envelope/) AddressingNone»).(http://schemas.microsoft.com/ws/2005/05/addressing/none)) не соответствует кодировщику (Soap12 (http://www.w3.org/2003/05/soap-envelope) Addressing10 (http://www.w3.org/2005/08/addressing)).). Убедитесь, что привязка настроена на ту же версию, что и сообщение. "

Это странно, потому что в каждом месте со свойством MessageVersion в моих пользовательских классах кодировщика для него установлено значение MessageVersion.Soap11 в качестве значения по умолчанию, которое не следует изменять, потому что я ничего не меняю в своем CustomTextMessageEncodingBindingSection.

Для каждогоРешение WCF дает мне еще одну проблему, и я теряю терпение из-за этого, потому что эти решения не так легко найти и приспособить к моимнеобходимо.Я также вполне уверен, что даже если я преодолею свою текущую проблему - я найду другую, возможно, сложнее или даже невозможно решить.

Существуют ли другие библиотеки .NET, которые позволят мне использовать две разныесертификаты по умолчанию и сохранить мой код от роста, трудно понять, сверток?И если нет, как я могу иметь дело с WCF?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...