powered by simpleCommunicator - 2.0.40     © 2025 Programmizd 02
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / Смэв. WCF to Soap. Как опустится на низкий уровень получив WCF объект ?
11 сообщений из 11, страница 1 из 1
Смэв. WCF to Soap. Как опустится на низкий уровень получив WCF объект ?
    #38854640
ProBiotek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет.

Сейчас стою перед довольно интересной задачкой, но не могу понять как ее решить.
Стоит задача подключения к одному из ГОС-Сервисов по протоколу СМЭВ.

Нагуглил оооочень полезный пример кода от Крипто-Про
Подпись сообщений SOAP для СМЭВ с использованием КриптоПро .NET

WCF служба - объектно ориентированная. Но ! Мне то нужно проверять ЭЦП пришедшего сообщения.
Т.е. имея объект (метод же описан в объектно виде, где входной параметр метода - объект), получить само SOAP сообщение, и в нем проверить ЭЦП (по ссылке с сайта КриптоПро).

Я понимаю как написать WCF сервис. Я нашел код, который проверяет ЭЦП.

Теперь нужно понять, как объединить эти два мира квантовую теорию и ньютоновскую физику имея WCF объект проверить Soap сообщение.

Подскажите пожалуйста.
...
Рейтинг: 0 / 0
Смэв. WCF to Soap. Как опустится на низкий уровень получив WCF объект ?
    #38854652
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Смэв. WCF to Soap. Как опустится на низкий уровень получив WCF объект ?
    #38855022
Сергей В.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Используйте HttpWebRequest для отправки подписанного сообщения и HttpWebResponse для получения результта.
Код: c#
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.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
            //Адрес вставляете свой
            string uri = "http://188.254.16.92:7777/gateway/services/123456789";
            string action = "http://188.254.16.92:7777/gateway/services/123456789/UnifoTransferMsg");

            // Создаем новый документ XML.
            XmlDocument doc = new XmlDocument();

            // Читаем xml текст вашего запроса в смэв.
            doc.LoadXml(@"<soapenv:Envelope >Ваше подписанное soap сообщение</soapenv:Envelope>");

            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri);
            request.Credentials = CredentialCache.DefaultCredentials;
            request.Headers.Add("SOAPAction", action);
            request.ContentType = "text/xml;charset=\"utf-8\"";
            request.Method = "POST";
            StreamWriter writer = new StreamWriter(request.GetRequestStream());
            writer.Write(doc.OuterXml);

            writer.Close();
            request.GetRequestStream().Flush();
            int err = 0;
            string errDescription = string.Empty;
            HttpWebResponse response;
            try
            {
                response = (HttpWebResponse)request.GetResponse();
            }
            catch (WebException wex)
            {
                err = 10001;
                errDescription = wex.Message;
                response = (HttpWebResponse)wex.Response;
            }
            XmlDocument respDoc = new XmlDocument();
            respDoc.PreserveWhitespace = true;
            respDoc.Load(response.GetResponseStream());

             if (err > 0)
            {
                Print.Log("Найдены ошибки при передаче сообщения: " + errDescription, MessageBoxIcon.Error);
            }
            else
            {
                Print.Log("Получен ответ от сервера СМЭВ", MessageBoxIcon.None);
               // Проверяете подпись (я испеользую КриптоПро .NET, пример есть у них на сайте)
                VerifyXmlData(respDoc);
               //Обрабатываете результат respDoc.OuterXml
               //можете отправить его, как результат работы вашего wcf сервиса
             }
            response.Close();
...
Рейтинг: 0 / 0
Смэв. WCF to Soap. Как опустится на низкий уровень получив WCF объект ?
    #38855068
ProBiotek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей В.,

Спасибо большое за пример, Очень пригодится !

Насколько я понимаю, стоит задача, чтобы еще можно было получить wsdl с моей службы, для того, чтобы приходили асинхронные ответы на мои запросы - и в них же тоже нужно делать проверку подписи. Это и в описании "методики тестирования, сдачи в эксплуатацию" говорилось кажется. Поэтому вот и думаю, как запилить объектный сервис, но перехватывать еще и Soap.


Lelouch,
Спасибо, наверное это поможет решить задачку, буду изучать :)
...
Рейтинг: 0 / 0
Смэв. WCF to Soap. Как опустится на низкий уровень получив WCF объект ?
    #38855133
Сергей В.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Для работы со смэв никакой wcf и wsdl вам не нужен. Вы готовите soap сообщение, подписываете его отправляете, в синхронном режиме получаете ответ на ваш запрос, проверяете подпись в ответном сообщении, а дальше делайте с этим ответом что хотите.
Все что вам нужно уметь, это правильно формировать запрос (форматы запросов описаны в документации) к сервису и понимать, что пришло к вам в ответ.
...
Рейтинг: 0 / 0
Смэв. WCF to Soap. Как опустится на низкий уровень получив WCF объект ?
    #38855150
ProBiotek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей В.,

В принципе так. да.
Но мне еще ИС для СМЭВ делать нужно будет. А это, как раз и ведет к необходимости проверять подпись + иметь корректную wsdl у службы.
...
Рейтинг: 0 / 0
Смэв. WCF to Soap. Как опустится на низкий уровень получив WCF объект ?
    #38855205
Сергей В.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подпись Вашего клиента проверяете точно так же, как подпись в ответе от смэв, только сертификат ключа соответственно другой. А для ваших клиентов пишите web service SOAP Message Based Web Services with WCF
...
Рейтинг: 0 / 0
Смэв. WCF to Soap. Как опустится на низкий уровень получив WCF объект ?
    #38855436
ProBiotek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей В.Подпись Вашего клиента проверяете точно так же, как подпись в ответе от смэв, только сертификат ключа соответственно другой. А для ваших клиентов пишите web service SOAP Message Based Web Services with WCF

Не вижу какого-то смысла делать Message Based сервис. Хм. Точнее я вообще не уловил смысла статьи. Эммм, WCF же и есть Message Based. Мне потом еще документацию на это писать и объяснять как этим пользоваться клиентам и саппорту СМЭВ? Нет уж, обойдемся без экспериментов :)
...
Рейтинг: 0 / 0
Смэв. WCF to Soap. Как опустится на низкий уровень получив WCF объект ?
    #38894190
smev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем здравствуйте

Вот пытаюсь отослать приготовленный XML SOAP запрос отправить на сервер.
Сервер мне возвращает ошибку 500.
Сделал код по примеру как описано в этом посту.
Не получается ....

Подскажи еще пожалуйста - что за параметр или строка в запросе UnifoTransferMsg ????

Спасибо
...
Рейтинг: 0 / 0
Смэв. WCF to Soap. Как опустится на низкий уровень получив WCF объект ?
    #38955009
ShurikEv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
smevВсем здравствуйте

Вот пытаюсь отослать приготовленный XML SOAP запрос отправить на сервер.
Сервер мне возвращает ошибку 500.
Сделал код по примеру как описано в этом посту.
Не получается ....

Подскажи еще пожалуйста - что за параметр или строка в запросе UnifoTransferMsg ????

СпасибоШлёте на какой адрес? Контур тестовый или боевой?
...
Рейтинг: 0 / 0
Смэв. WCF to Soap. Как опустится на низкий уровень получив WCF объект ?
    #38957221
Demiden
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ShurikEvsmevВсем здравствуйте

Вот пытаюсь отослать приготовленный XML SOAP запрос отправить на сервер.
Сервер мне возвращает ошибку 500.
Сделал код по примеру как описано в этом посту.
Не получается ....

Подскажи еще пожалуйста - что за параметр или строка в запросе UnifoTransferMsg ????

СпасибоШлёте на какой адрес? Контур тестовый или боевой?

Запросю отсылаются на тестовый сервер
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / Смэв. WCF to Soap. Как опустится на низкий уровень получив WCF объект ?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]