Форум КриптоПро
»
Средства криптографической защиты информации
»
КриптоПро .NET
»
Security processor was unable to find a security header in the message
Статус: Активный участник
Группы: Участники
Зарегистрирован: 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)
| Причина: Не указана
|
|
|
|
Статус: Эксперт
Группы: Участники
Зарегистрирован: 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)
| Причина: Не указана
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 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 и сертификата сервера приводят к указанному исключению.
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 15.05.2015(UTC) Сообщений: 40 Откуда: Москва Сказал(а) «Спасибо»: 2 раз
|
|
|
|
|
Статус: Эксперт
Группы: Участники
Зарегистрирован: 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.htmlhttps://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. То есть все по стандарту и запинаться на заголовке вроде как не должно.
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 15.05.2015(UTC) Сообщений: 40 Откуда: Москва Сказал(а) «Спасибо»: 2 раз
|
Ну дык, поэтому видимо и исключние: Автор: two_oceans If the receiver does not recognize the element it will fail when processing the Header. . Как его устранить?
|
|
|
|
Статус: Эксперт
Группы: Участники
Зарегистрирован: 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)
| Причина: Не указана
|
|
|
|
Форум КриптоПро
»
Средства криптографической защиты информации
»
КриптоПро .NET
»
Security processor was unable to find a security header in the message
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close