SAPфорум.RU
https://www.sapboard.ru/forum/

Добавить цифровую подпись в XML строку на выходе WEB Proxy
https://www.sapboard.ru/forum/viewtopic.php?f=13&t=95011
Страница 1 из 1

Автор:  Timon&Pumba [ Вт, июн 20 2017, 09:09 ]
Заголовок сообщения:  Добавить цифровую подпись в XML строку на выходе WEB Proxy

Привет всем!

На основе WSDL файла WEB сервиса создан WEB Proxy через который формируется XML документ.
Необходимо выходную строку XML подписать квалифицированной цифровой подписью и добавить эту подпись в XML.
Как получить выходную строку XML до ее отправки на WEB сервис?
Есть какой-нибудь класс/метод ?

Автор:  trop [ Ср, июн 21 2017, 22:50 ]
Заголовок сообщения:  Re: Добавить цифровую подпись в XML строку на выходе WEB Proxy

если правильно понял,
в xi в мэппинге можно получить сообщение бинарном виде
и что-нибудь в java сделать

Автор:  Kengur [ Чт, июн 22 2017, 13:13 ]
Заголовок сообщения:  Re: Добавить цифровую подпись в XML строку на выходе WEB Proxy

Чем вы собираетесь подписывать? Проще всего складывать заранее сформированный файл и потом забирать его в канал.

Автор:  Timon&Pumba [ Чт, июн 22 2017, 13:53 ]
Заголовок сообщения:  Re: Добавить цифровую подпись в XML строку на выходе WEB Proxy

trop написал(а):
если правильно понял,
в xi в мэппинге можно получить сообщение бинарном виде
и что-нибудь в java сделать

XI/PI у нас нет.

Автор:  Timon&Pumba [ Чт, июн 22 2017, 13:55 ]
Заголовок сообщения:  Re: Добавить цифровую подпись в XML строку на выходе WEB Proxy

Kengur написал(а):
Чем вы собираетесь подписывать? Проще всего складывать заранее сформированный файл и потом забирать его в канал.

А какими средствами создать XML файл?

Автор:  Kengur [ Чт, июн 22 2017, 15:53 ]
Заголовок сообщения:  Re: Добавить цифровую подпись в XML строку на выходе WEB Proxy

Если нет PI то зачем вам этот гемор? XML можно сделать трансформацией, выгрузить, подписать сторонней софтиной. Если говорим про EDI то у софтины уже обычно есть механизм отправки файла в провайдера.

Автор:  Timon&Pumba [ Пт, июн 23 2017, 09:16 ]
Заголовок сообщения:  Re: Добавить цифровую подпись в XML строку на выходе WEB Proxy

Kengur написал(а):
Если нет PI то зачем вам этот гемор? XML можно сделать трансформацией, выгрузить, подписать сторонней софтиной. Если говорим про EDI то у софтины уже обычно есть механизм отправки файла в провайдера.

Заманчиво было использовать Service Consumer, который создается на основе WSDL файла.
Сгенерил - и пользуйся на здоровье. Однако непонятно можно ли увидеть, изменить и подписать строку XML до ее отправки.

Если нет, то придется искать другие варианты.
Работа с файлами это на крайний случай (их будет около 1000 в день).

Вручную собирать XML тоже нет большого желания.
Кроме генерации Service Consumer как можно использовать файлы WSDL и XSD?

Вообще с XML никогда не работал, это для меня темный лес, поэтому буду рад любым подсказкам.

Автор:  Cathody [ Вс, июн 25 2017, 00:43 ]
Заголовок сообщения:  Re: Добавить цифровую подпись в XML строку на выходе WEB Proxy

XML из ABAP-структуры можно получить, например, вот так:

1) Воспользоваться методом ABAP_TO_XML_XSTRING класса CL_PROXY_XML_TRANSFORM. На вход подаётся структура с данными, которая является входным параметром для нужного Proxy Consumer-а, на выходе получается XSTRING, который достаточно тривиально превращается в STRING.

2) Сделать Simple transformation на основе XSD, потом вызывать CALL TRANSFORMATION для получения XML

3) Использовать редактор иерархий J3RTAXREP для XML-генерации на основе имеющегося у вас XSD.

Совет дан в предположении, что криптографическое ПО для подписи и его использование в ERP сертифицированы для РФ - а иначе не стоит даже и пытаться использовать ЭЦП для XML-документов.

Автор:  Timon&Pumba [ Пн, июн 26 2017, 14:19 ]
Заголовок сообщения:  Re: Добавить цифровую подпись в XML строку на выходе WEB Proxy

Спасибо! Получилось создать XML по 1 пункту.

Теперь вопрос чем заслать полученную строку XML на WEB сервис?

Автор:  Удав [ Пн, июн 26 2017, 15:47 ]
Заголовок сообщения:  Re: Добавить цифровую подпись в XML строку на выходе WEB Proxy

CL_HTTP_CLIENT=>CREATE_BY_URL и интерфейс IF_HTTP_CLIENT.

Автор:  Timon&Pumba [ Чт, июл 06 2017, 12:37 ]
Заголовок сообщения:  Re: Добавить цифровую подпись в XML строку на выходе WEB Proxy

Удав написал(а):
CL_HTTP_CLIENT=>CREATE_BY_URL и интерфейс IF_HTTP_CLIENT.

Что-то не получилось с CL_HTTP_CLIENT.
Все отрабатывает без ошибок, но и не возвращает никакого результата.

Пошел другим путем. На основе consumer proxy создал generic consumer proxy.

Code:
  CALL METHOD cl_proxy_gen_clnt_factory=>create_proxy_for_class
    EXPORTING
      class_name        = 'Z_WEB_SERVICE'
      logical_port_name = 'Z_WEB_SERVICE_PORT'
    RECEIVING
      proxy             =  web_proxy.

  CALL METHOD web_proxy->execute_xml_xstring
    EXPORTING
      request  = request
    RECEIVING
      response = response.

Автор:  Timon&Pumba [ Ср, май 23 2018, 15:09 ]
Заголовок сообщения:  Re: Добавить цифровую подпись в XML строку на выходе WEB Proxy

Возвращаемся к нашим баранам...
Получатель XML требует наличия тэгов <soapenv:Envelope>, <soapenv:Header>, <soapenv:Body>.
Однако, WEB прокси создает XML без них.
Каким образом эти тэги должны быть добавлены к XML?
Должны ли они изначально прописаны в WSDL файле?

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/