<?xml version="1.0" encoding="UTF-8"?>

<wsdl:definitions xmlns:wsdl="http://schemas. xmlsoap. org/wsdl/" xmlns:soap="http://schemas. xmlsoap. org/wsdl/soap/" xmlns:http="http://schemas. xmlsoap. org/wsdl/http/" xmlns:xs="http://www. w3.org/2001/XMLSchema" xmlns:soapenc="http://schemas. xmlsoap. org/soap/encoding/" xmlns:mime="http://schemas. xmlsoap. org/wsdl/mime/" xmlns:xsi="http://www. w3.org/2001/XMLSchema-instance" xmlns:tns="urn://x-artefacts-smev-gov-ru/smev/1.0" targetNamespace="urn://x-artefacts-smev-gov-ru/smev/1.0">

       <wsdl:types>

               <xs:schema>

                       <xs:import namespace="urn://x-artefacts-smev-gov-ru/smev/1.0" schemaLocation="PushMessageSchema. xsd"/>

               </xs:schema>

       </wsdl:types>

       <wsdl:message name="PushNotificationRequest">

               <wsdl:part name="parameter" element="tns:PushNotificationRequest"/>

       </wsdl:message>

       <wsdl:message name="PushNotificationResponse">

               <wsdl:part name="parameter" element="tns:PushNotificationResponse"/>

       </wsdl:message>

       <wsdl:message name="PushNotificationException">

               <wsdl:part name="parameter" element="tns:PushNotificationException"/>

       </wsdl:message>

       <wsdl:portType name="PushNotificationType">

               <wsdl:operation name="PushNotification">

                       <wsdl:input name="PushNotificationRequest" message="tns:PushNotificationRequest"/>

                       <wsdl:output name="PushNotificationResponse" message="tns:PushNotificationResponse"/>

                       <wsdl:fault name="PushNotificationException" message="tns:PushNotificationException"/>

               </wsdl:operation>

       </wsdl:portType>

       <wsdl:binding name="PushNotificationBinding" type="tns:PushNotificationType">

               <soap:binding style="document" transport="http://schemas. xmlsoap. org/soap/http"/>

               <wsdl:operation name="PushNotification">

                       <soap:operation soapAction=" PushNotification "/>

                       <wsdl:input name="PushNotificationRequest">

                               <soap:body use="literal"/>

                       </wsdl:input>

                       <wsdl:output name="PushNotificationResponse">

                               <soap:body use="literal"/>

                       </wsdl:output>

                       <wsdl:fault name="PushNotificationException">

                               <soap:fault name="PushNotificationException" use="literal"/>

                       </wsdl:fault>

               </wsdl:operation>

       </wsdl:binding>

       <wsdl:service name="PushNotificationService">

               <wsdl:port name="PushNotificationPort" binding="tns:PushNotificationBinding">

                       <soap:address location="ServiceAdress"/>

               </wsdl:port>

       </wsdl:service>

</wsdl:definitions>

Рисунок 45 – wsdl-описание web-сервиса сервиса приема push-уведомлений

НЕ нашли? Не то? Что вы ищете?

Если СМЭВ вследствие проблем на стороне информационной системы не может осуществить отправку сервису приема push-уведомлений push-нотификаций, то эти push-нотификации СМЭВ помещает в очередь ответов информационной системы. В этом случае для получения push-нотификаций из статусной очереди информационной системе следует вызвать метод GetResponse.


Использование клиентской библиотеки и набора «TOOLSET»

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

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

Набор «toolset» представляет собой набор отдельных приложений, которые предоставляют платформонезависимые интерфейсы взаимодействия с ИС и запускаются на платформе jre. Каждое приложение набора предоставляет готовое решение, инкапсулирующее часть логики процесса информационного взаимодействия со СМЭВ3.х, которое может быть использовано при доработке ИС УВ. При этом дорабатываемая ИС УВ может быть разработана средствами любой программной платформы. Состав набора, требования к необходимому ПО для функционирования набора и порядок его запуска приведены в приложении З.

Приложения АЛГОРИТМ нормализации XML

При подписании XML-фрагментов ЭП в формате XMLDSig, обязательно использование трансформации urn://smev-gov-ru/xmldsig/transform. Ее алгоритм:

XML declaration и processing instructions, если есть, вырезаются:

вход:

<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/css" href="style. css"?>
<qwe xmlns="http://t. e.s. t">
<myns:rty xmlns:myns="http://y. e.s">yes!</myns:rty>
<iop value="yes, yes!"/>
</qwe>

выход:

<qwe xmlns="http://t. e.s. t">
<myns:rty xmlns:myns="http://y. e.s">yes!</myns:rty>
<iop value="yes, yes!"/>
</qwe>

Если текстовый узел содержит только пробельные символы (код символа меньше или равен '\u0020'), этот текстовый узел вырезается.

вход:

<qwe xmlns="http://t. e.s. t">
<myns:rty xmlns:myns="http://y. e.s">yes!</myns:rty>
<iop value="yes, yes!"/>
</qwe>

выход:

<qwe xmlns="http://t. e.s. t"><myns:rty xmlns:myns="http://y. e.s">yes!</myns:rty><iop value="yes, yes!"/>
</qwe>

После применения правил 1 и 2, если даже у элемента нет дочерних узлов, элемент не может быть представлен в виде empty element tag (http://www. w3.org/TR/2008/REC-xml-20081126/#sec-starttags, правило [44]), а должен быть преобразован в пару start-tag + end-tag.

вход:

<qwe xmlns="http://t. e.s. t">
<myns:rty xmlns:myns="http://y. e.s">yes!</myns:rty>
<iop value="yes, yes!"/>
</qwe>

выход:

<qwe xmlns="http://t. e.s. t">
<myns:rty xmlns:myns="http://y. e.s">yes!</myns:rty>
<iop value="yes, yes!"></iop>
</qwe>

Удалить namespace prefix, которые на текущем уровне объявляются, но не используются. Проверить, что namespace текущего элемента объявлен либо выше по дереву, либо в текущем элементе. Если не объявлен, объявить в текущем элементе. Namespace prefix элементов и атрибутов должны быть заменены на автоматически сгенерированные. Сгенерированный префикс состоит из литерала «ns», и порядкового номера сгенерированного префикса в рамках обрабатываемого XML-фрагмента, начиная с единицы. При генерации префиксов должно устраняться их дублирование.

вход:

<qwe xmlns="http://t. e.s. t">
<myns:rty xmlns:myns="http://y. e.s">yes!</myns:rty>
<iop value="yes, yes!"/>
</qwe>

выход:

<ns1:qwe xmlns:ns1="http://t. e.s. t">
<ns2:rty xmlns:ns2="http://y. e.s">yes!</ns2:rty>
<ns1:iop value="yes, yes!"></ns1:iop>
</ns1:qwe>

вход:

<nns:x xmlns:nns="http://a" attrB="value1" attrA="value2">
<y xmlns="http://a">yes!</y>
</nns:x>

выход:

<ns1:x xmlns:ns1="http://a" attrA="value2" attrB="value1">
<ns1:y>yes!</ns1:y>
</ns1:x>

Атрибуты должны быть отсортированы в алфавитном порядке: сначала по namespace URI (если атрибут - в qualified form), затем – по local name. Атрибуты в unqualified form после сортировки идут после атрибутов в qualified form. Объявления namespace prefix должны находиться перед атрибутами. Объявления префиксов должны быть отсортированы в порядке объявления, а именно: Первым объявляется префикс пространства имен элемента, если он не был объявлен выше по дереву. Дальше объявляются префиксы пространств имен атрибутов, если они требуются. Порядок этих объявлений соответствует порядку атрибутов, отсортированных в алфавитном порядке (см. п.5).

Развернутый пример результата трансформации urn://smev-gov-ru/xmldsig/transform представлен в приложении бразцовая реализация алгоритма на Java для Apache Santuario представлена в приложении Г.

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25