Ключевое слово в защите информации
КЛЮЧЕВОЕ СЛОВО
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline bony599  
#1 Оставлено : 8 июля 2019 г. 18:09:27(UTC)
bony599

Статус: Активный участник

Группы: Участники
Зарегистрирован: 15.05.2015(UTC)
Сообщений: 40
Российская Федерация
Откуда: Москва

Сказал(а) «Спасибо»: 2 раз
При обработке ответа СМЭВ2 (ГИС ЖКХ) возникает исключение: "Security processor was unable to find a security header in the message. This might be because the message is an unsecured fault or because there is a binding mismatch between the communicating parties. This can occur if the service is configured for security and the client is not using security."
Отличие данного ответа данного сервиса от ответов других заключается в том, что в заголовке присутствует mustUnderstand во втором блоке Security:
<wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" soap:actor="http://smev.gosuslugi.ru/actors/recipient">
и
<wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" soap:actor="http://smev.gosuslugi.ru/actors/smev" soap:mustUnderstand="1">.

Как устранить появление этого исключения?

Отредактировано пользователем 16 июля 2019 г. 13:44:45(UTC)  | Причина: Не указана

Offline two_oceans  
#2 Оставлено : 9 июля 2019 г. 10:37:40(UTC)
two_oceans

Статус: Эксперт

Группы: Участники
Зарегистрирован: 05.03.2015(UTC)
Сообщений: 1,602
Российская Федерация
Откуда: Иркутская область

Сказал(а) «Спасибо»: 110 раз
Поблагодарили: 395 раз в 366 постах
По описанию непонятно до конца отклонился запрос узлом СМЭВ или сервисом или вопрос-ответ прошли нормально, но Вы просто не можете проверить ответ.

По теме: в СМЭВ 2 наличие двух wsse:Security совершенно нормальная ситуация, скорее уж подозрительно если в ответе только один заголовок. Атрибут actor определяет кому этот заголовок предназначен. При этом с http://smev.gosuslugi.ru/actors/smev это исходный заголовок подписи переданный сервисом, а со http://smev.gosuslugi.ru/actors/recipient или http://smev.gosuslugi.ru/actors/smevXX это заголовки добавляемые узлами СМЭВ 2, по одному заголовку на каждый узел через который прошел вопрос/ответ между пользователем и сервисом. http://smev.gosuslugi.ru/actors/recipient это ближайший к пользователю узел для ответа и ближайший к сервису узел для запроса. У Вас всего один заголовок узла, то есть пользователь и сервис подключены к одному и тому же узлу СМЭВ 2.

Технически любого заголовка wsse:Security в СМЭВ 2 достаточно для проверки сообщения если они содержат подписи с одинаковым значением Reference URI. При этом заголовки по идее независимы. Поэтому можете оставить один из них и выкинуть второй либо не выкидывая указать заголовок с каким значением actor нужно проверять в XPath выражении для поиска заголовка или просто проверять первый.

Отредактировано пользователем 9 июля 2019 г. 10:38:41(UTC)  | Причина: Не указана

Offline bony599  
#3 Оставлено : 10 июля 2019 г. 13:44:12(UTC)
bony599

Статус: Активный участник

Группы: Участники
Зарегистрирован: 15.05.2015(UTC)
Сообщений: 40
Российская Федерация
Откуда: Москва

Сказал(а) «Спасибо»: 2 раз
Ошибся, отличие в том, что во втором блоке wsse:Security стоит атрибут mustUnderstand="1".
Да, у меня возникает исключение при обработке ответа в WCF. Я не могу ничего убрать или оставить, так как обработкой занимается WCF и Sharpei. Я могу только игнорировать это исключение, но хотелось бы, чтобы исключения не было.
В app.config имеются настройки для Sharpei:
Цитата:
<customBinding>
<binding name="PaymentsBindingAsync">
<!--Пример добавления кодировщика сообщений через файл конфигурации.

Атрибуты элемента SMEVTextMessageEncoder:
sender - значение атрибута actor для отправляемого сообщения.
Значение по-умолчанию: http://smev.gosuslugi.ru/actors/smev
recipient - значение атрибута actor для входящего сообщения.
Значение по-умолчанию: http://smev.gosuslugi.ru/actors/recipient
messageVersion - версия SOAP-сообщения.
Значение по-умолчанию: Soap11WSAddressingNone-->
<SMEVTextMessageEncoder />

И все возможные комбинации атрибута recipient для SMEVTextMessageEncoder и сертификата сервера приводят к указанному исключению.
Offline bony599  
#4 Оставлено : 12 июля 2019 г. 18:21:43(UTC)
bony599

Статус: Активный участник

Группы: Участники
Зарегистрирован: 15.05.2015(UTC)
Сообщений: 40
Российская Федерация
Откуда: Москва

Сказал(а) «Спасибо»: 2 раз
Есть идеи?
Offline two_oceans  
#5 Оставлено : 16 июля 2019 г. 7:23:57(UTC)
two_oceans

Статус: Эксперт

Группы: Участники
Зарегистрирован: 05.03.2015(UTC)
Сообщений: 1,602
Российская Федерация
Откуда: Иркутская область

Сказал(а) «Спасибо»: 110 раз
Поблагодарили: 395 раз в 366 постах
Cмотрите сами, mustUnderstand есть и в пространстве имен
Код:
http://schemas.xmlsoap.org/soap/envelope/
(версия соап 1.1) и в
Код:
https://www.w3.org/2003/05/soap-envelope/
(версия soap 1.2).
http://www.codemeit.com/...soap12-wsaddressing.html

https://www.w3schools.com/XML/xml_soap.asp
Цитата:
The SOAP mustUnderstand attribute can be used to indicate whether a header entry is mandatory or optional for the recipient to process.

If you add mustUnderstand="1" to a child element of the Header element it indicates that the receiver processing the Header must recognize the element. If the receiver does not recognize the element it will fail when processing the Header.

То есть все по стандарту и запинаться на заголовке вроде как не должно.
Offline bony599  
#6 Оставлено : 16 июля 2019 г. 13:51:10(UTC)
bony599

Статус: Активный участник

Группы: Участники
Зарегистрирован: 15.05.2015(UTC)
Сообщений: 40
Российская Федерация
Откуда: Москва

Сказал(а) «Спасибо»: 2 раз
Ну дык, поэтому видимо и исключние:
Автор: two_oceans Перейти к цитате
If the receiver does not recognize the element it will fail when processing the Header.
.
Как его устранить?

Offline two_oceans  
#7 Оставлено : 17 июля 2019 г. 8:18:22(UTC)
two_oceans

Статус: Эксперт

Группы: Участники
Зарегистрирован: 05.03.2015(UTC)
Сообщений: 1,602
Российская Федерация
Откуда: Иркутская область

Сказал(а) «Спасибо»: 110 раз
Поблагодарили: 395 раз в 366 постах
Автор: bony599 Перейти к цитате
Ну дык, поэтому видимо и исключние:
Автор: two_oceans Перейти к цитате
If the receiver does not recognize the element it will fail when processing the Header.
.
Как его устранить?
Исключение у Вас по поводу что "не найдено нужное". А в стандарте неустранимое по смыслу по поводу что "найдено неизвестное". Мне кажется это или взаимоисключающие понятия или из серии "Севастьян не узнал своих крестьян".

Либо надо залезать в код и искать где перепутали логику что приравняли понятия.

Отредактировано пользователем 17 июля 2019 г. 8:20:49(UTC)  | Причина: Не указана

RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest (2)
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.