Статус: Эксперт
Группы: Участники
Зарегистрирован: 05.03.2015(UTC) Сообщений: 1,602 Откуда: Иркутская область Сказал(а) «Спасибо»: 110 раз Поблагодарили: 395 раз в 366 постах
|
Цитата:2.3.3 Широковещательные рассылки В случае широковещательных рассылок активной стороной взаимодействия является поставщик, то есть он отправляет запросы. При этом потребители не могут посылать ответы (это контролируется СМЭВ). Подписка на рассылки производится по видам сведений.
Цитата из методических рекомендаций по работе с ЕСМЭВ 3.4.0.3. Написано не очень внятно. Я все же понимаю так, что потребитель в случае рассылки получит запрос в GetRequestRequest, но типом будет указано BROADCAST. Ну, поживем - увидим. Отредактировано пользователем 29 ноября 2018 г. 5:36:25(UTC)
| Причина: Не указана
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 28.06.2018(UTC) Сообщений: 11
Сказал(а) «Спасибо»: 1 раз
|
Автор: two_oceans Цитата:2.3.3 Широковещательные рассылки В случае широковещательных рассылок активной стороной взаимодействия является поставщик, то есть он отправляет запросы. При этом потребители не могут посылать ответы (это контролируется СМЭВ). Подписка на рассылки производится по видам сведений.
Цитата из методических рекомендаций по работе с ЕСМЭВ 3.4.0.3. Написано не очень внятно. Я все же понимаю так, что потребитель в случае рассылки получит запрос в GetRequestRequest, но типом будет указано BROADCAST. Ну, поживем - увидим. В методических рекомендациях 3.4.0.3. на стр.81 есть рисунок "Последовательность обращений к веб-сервису СМЭВ при передаче сообщений с запросами и ответами", по нему очередь GetRequestRequest опрашивает поставщик, если он в неё же будет класть ответы по подписке, то сам по итогу и вычитает их. И с другой стороны, если потребитель будет получать с GetRequestRequest сообщения, то возможно заберет сообщение предназначавшееся поставщику, а не рассылочное. В общем, в рекомендациях ничего вразумительного по подписке не сказано, пока одни догадки приходится строить..
|
|
|
|
Статус: Эксперт
Группы: Участники
Зарегистрирован: 05.03.2015(UTC) Сообщений: 1,602 Откуда: Иркутская область Сказал(а) «Спасибо»: 110 раз Поблагодарили: 395 раз в 366 постах
|
Ну так там схема для обычного запроса, а для рассылки просто абзац, что "задом наперед и все наоборот". Цитата:И с другой стороны, если потребитель будет получать с GetRequestRequest сообщения, то возможно заберет сообщение предназначавшееся поставщику, а не рассылочное. Так точно не будет, так как у поставщика и потребителя разные очереди. Точнее в том же документе сказано, что все очереди входящие, исходящей очереди потребителя просто нет, поэтому для обычного вида сведений GetRequestRequest потребителю просто вернет ошибку, что очереди не существует. Ну и не забывайте, что по рассылке нельзя отправить ответ, то есть в конкретном виде сведений - рассылке сообщения идут только в одну сторону. Максимум можно вызвать Ack что сообщение получено. И для каждого вида сведений также своя отдельная очередь. При чтении можно указать фильтр из какой очереди читать. Получается, что поставщик складывает в одну очередь, а читает из другой, вычитать свой ответ тоже не получится. За исключением тестирования, когда поставщик сам себе отправляет данные, поэтому читает оттуда же куда записал. Но это уже более сложный вопрос о реализации табличной маршрутизации. Отредактировано пользователем 30 ноября 2018 г. 4:40:10(UTC)
| Причина: Не указана
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 05.08.2014(UTC) Сообщений: 12
Поблагодарили: 2 раз в 2 постах
|
Автор: Bpar Братцы, может надо как-то регистрировать подписи?
Таки да, техподдержка ответила, что моя подпись не зарегистрирована в СМЭВ-3. Такой подписи у меня пока нет, но поскольку страница проверки подписей сообщает, что всё хорошо, думаю, что код рабочий. SMEV3sign.zip (6kb) загружен 66 раз(а).Технология такая: Поскольку сериализация туда-назад возможно нарушает целостность подписи (экспериментально установлено, что с CallerInformationSystemSignature это действительно так, а с PersonalSignature - нет), то пакет подписывается непосредественно перед отправкой внутри службы SMEVMessageExchangePortTypeClient. Для этого в службе заменяется конструктор, в котором создаётся экземпляр класса от IEndpointBehavior, в свою очередь в котором экземпляр класса от IClientMessageInspector. И в нём в методе-событии BeforeSendRequest всё и происходит. Также "доработан" SMEVTextMessageEncoder, который теперь обрезает оригинальную подпись в Header. Но это не принципиально. Надеюсь, кому-то поможет. П.С. спасибо мистеру two_oceans за помощь с проверками подписей. Отредактировано пользователем 5 декабря 2018 г. 9:57:21(UTC)
| Причина: Не указана
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 19.10.2017(UTC) Сообщений: 1 Поблагодарили: 1 раз в 1 постах
|
После пары дней танцев с бубном вокруг подписи, удалось получить от тестового СМЭВ3 ответ 'Отправитель сообщения не зарегистрирован.'Работаю через WCF-сервис и основная проблема была не в алгоритме подписи (он тут уже несколько раз выложен), а в том, что при сериализации отдельных кусков пакета (например, SendRequestRequest или SenderProvidedRequestData) им не проставлялся Namespace. А т.к. я сначала подписывал SenderProvidedRequestData а потом создавал через конструктор новый SendRequestRequest, получалось что подписываю я один XML, а в СМЭВ3 в итоге улетает другой. Решается это добавлением атрибута [XmlRoot] с указанием нужного неймспейса для SenderProvidedRequestData (можно задать аналогичный атрибут для SendRequestRequest и сначала создавать новый реквест без подписи, сериализовать его, подписывать и добавлять в него подпись, но это не удобно). Сервис создает partial-классы, поэтому сделать это можно в отдельном файле и при обновлении сервиса ничего не слетит: Код:
[XmlRoot(Namespace = "urn://x-artefacts-smev-gov-ru/services/message-exchange/types/1.2")]
public partial class SenderProvidedRequestData
{
}
Надеюсь кому-нибудь это поможет. Автор: Max Zimin Я столкнулся со следующей проблемой - я получаю ошибку при сериализации XML SendRequestRequest. Прошу помочь с данным вопросом или дать наводку. Если я правильно понял, это связано с ошибкой генерации WSDL, к сожалению починить это не меняя сгенерированный код у меня не получилось. Я пока заменил массивы на списки: Код:
private AttachmentHeaderList attachmentHeaderListField;
private RefAttachmentHeaderList refAttachmentHeaderListField;
private AttachmentContentList attachmentContentListField;
и дальше по коду Если кто-то придумал, как это сделать не трогая автоматически-генерируемый код, буду рад подсказке.
|
1 пользователь поблагодарил Lunatic за этот пост.
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 26.12.2018(UTC) Сообщений: 4 Сказал(а) «Спасибо»: 3 раз
|
Коллеги! С наступающим Новым годом! Как я понял, чтобы подписывать сообщения в тестовой СМЭВ3 нужно: либо зарегистрировать в https://sc.minsvyaz.ru/ рабочий, выданный аккредитованным УЦ сертификат. либо "При необходимости, может быть выдан или использоваться сертификат тестового УЦ Оператора эксплуатации ИЭП." Подскажите пожалуйста, кто нибудь получал такой тестовый сертификат? Как это сделать? Самоподписанный или выданный тестовым УЦ Криптопро не подходят?
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 26.02.2014(UTC) Сообщений: 26 Откуда: Москва Поблагодарили: 4 раз в 4 постах
|
Автор: NikolayOkhlopkov11 Подскажите пожалуйста, кто нибудь получал такой тестовый сертификат? Как это сделать? Напишите в СЦ заявку с просьбой выпустить тестовый сертификат для взаимодействия со СМЭВ3. В ответ Вам дадут форму заявки (на техпортале её нет). Заполните эту заявку, в ответ получите сертификат + контейнер с закрытым ключом в формате Крипто-Про.
|
1 пользователь поблагодарил archimed7592 за этот пост.
|
|
|
Статус: Эксперт
Группы: Участники
Зарегистрирован: 05.03.2015(UTC) Сообщений: 1,602 Откуда: Иркутская область Сказал(а) «Спасибо»: 110 раз Поблагодарили: 395 раз в 366 постах
|
Да, можно заявкой в СЦ. Самоподписанный не подходит, от тестового УЦ Криптопро думаю тоже не подойдет. Если уже есть сертификат ЭП-ОВ использующийся в рабочей смэв 2, он как правило подходит и для всех сред смэв 3 и можно не заморачиваться получением новых сертификатов в каждую среду. Сертификаты аккредитованных УЦ аналогично подходят всем средам смэв 3. Сертификат тестового УЦ Оператора эксплуатации ИЭП, как я понимаю, не подходит для рабочей среды и все равно потребуется получать сертификат в аккредитованном УЦ после тестирования. Короче получать тестовый сертификат имеет смысл либо если разработчик - иная организация (отдавать сертификат аккредитованного УЦ на сторону - плохая идея) или если разработка ИС/ВС займет более полугода (чтобы не терять оплаченное время действия сертификата аккредитованного УЦ).
Вообще при регистрации участника в смэв 3 у нас запросили по новой (ранее заполняли в 2013 году) заполнить форму присоединения к регламенту предоставления госуслуг в электронном виде (она на техпортале есть) и один из пунктов действующей формы как раз спрашивает: требуются ли услуги удостоверяющего центра. Предполагаю, если отметить пункт с услугами УЦ, то при регистрации участника без информационной системы пришлют форму заявки на сертификат без дополнительного запроса, но так потребуется еще 2 заявки в СЦ (на сертификат и на регистрацию первой ИС).
Наша организация заранее получила сертификат ЭП-ОВ в аккредитованном УЦ и поэтому смогли одной заявкой зарегистрировать и участника и первую информационную систему. Итого: есть разные пути, мы выбрали путь, при котором надо сделать минимум заявок в СЦ, так как у нас большая разница по времени с Москвой и каждая заявка может провисеть почти сутки на "уточнении данных".
|
1 пользователь поблагодарил two_oceans за этот пост.
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 26.12.2018(UTC) Сообщений: 4 Сказал(а) «Спасибо»: 3 раз
|
Благодарю! , вроде что-то начало проясняться
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 29.12.2014(UTC) Сообщений: 4 Откуда: Москва Поблагодарили: 1 раз в 1 постах
|
Никак не получается сформировать корректный xml-пакет (отправка начисления). При проверке на портале https://smev3.gosuslugi....portal/checkxmlform.jsp, результат: ЭЦП не подтверждена: #I_54a59db2-3845-4915-8770-dd95394aadb1 Ошибка проверки ЭП: Нарушена целостность ЭП MS .Net версии 3.5. Подписываю так: Код:
static void SignXmlFile3(string FileName, string SignedFileName, X509Certificate2 Certificate)
{
string[] references = new string[2];
references[0] = "I_54a59db2-3845-4915-8770-dd95394aadb1";
references[1] = "SIGNED_BY_CALLER";
XmlDocument doc = new XmlDocument();
doc.Load(new XmlTextReader(FileName));
doc.PreserveWhitespace = true;
var signedXml = new SignedXml(doc) { SigningKey = Certificate.PrivateKey };
//signedXml.SafeCanonicalizationMethods.Add("urn://smev-gov-ru/xmldsig/transform");
foreach (var referenceUri in references)
{
var reference = new Reference();
reference.Uri = "#" + referenceUri;
#pragma warning disable 612
reference.DigestMethod = CryptoPro.Sharpei.Xml.CPSignedXml.XmlDsigGost3411UrlObsolete;
#pragma warning restore 612
var c14 = new XmlDsigExcC14NTransform();
reference.AddTransform(c14);
var env = new XmlDsigEnvelopedSignatureTransform();
reference.AddTransform(env);
var smev = new CryptoPro.Sharpei.Xml.XmlDsigSmevTransform();
reference.AddTransform(smev);
signedXml.AddReference(reference);
}
var keyInfo = new KeyInfo();
keyInfo.AddClause(new KeyInfoX509Data(Certificate));
signedXml.KeyInfo = keyInfo;
signedXml.SignedInfo.CanonicalizationMethod = SignedXml.XmlDsigExcC14NTransformUrl;
#pragma warning disable 612
signedXml.SignedInfo.SignatureMethod = CryptoPro.Sharpei.Xml.CPSignedXml.XmlDsigGost3410UrlObsolete;
#pragma warning restore 612
signedXml.ComputeSignature();
var xmlDigitalSignature = signedXml.GetXml();
string sNUrl = "urn://x-artefacts-smev-gov-ru/services/message-exchange/types/1.1";
doc.GetElementsByTagName("SendRequestRequest", sNUrl)[0].AppendChild(
doc.CreateNode(XmlNodeType.Element, "tns", "CallerInformationSystemSignature", sNUrl));
doc.GetElementsByTagName("CallerInformationSystemSignature", sNUrl)[0].AppendChild(doc.ImportNode(xmlDigitalSignature, true));
//return xmlDigitalSignature;
// Сохраняем подписанный документ в файл.
using (XmlTextWriter xmltw = new XmlTextWriter(SignedFileName, new UTF8Encoding(false)))
{
doc.WriteTo(xmltw);
}
}
Оригинал сообщения: Код:
<?xml version="1.0" encoding="UTF-8"?><S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/" xmlns:basic="urn://x-artefacts-smev-gov-ru/services/message-exchange/types/basic/1.1" xmlns:tns="urn://x-artefacts-smev-gov-ru/services/message-exchange/types/1.1">
<S:Body>
<tns:SendRequestRequest>
<tns:SenderProvidedRequestData Id="SIGNED_BY_CALLER">
<tns:MessageID>3784f060-d777-11e8-b0d0-941882013a1a</tns:MessageID>
<basic:MessagePrimaryContent>
<req:ImportChargesRequest xmlns:org="http://roskazna.ru/gisgmp/xsd/Organization/2.1.0" xmlns:com="http://roskazna.ru/gisgmp/xsd/Common/2.1.0" xmlns:chg="http://roskazna.ru/gisgmp/xsd/Charge/2.1.0" xmlns:pkg="http://roskazna.ru/gisgmp/xsd/Package/2.1.0" xmlns:req="urn://roskazna.ru/gisgmp/xsd/services/import-charges/2.1.0" xmlns:rfd="http://roskazna.ru/gisgmp/xsd/Refund/2.1.0" xmlns:pmnt="http://roskazna.ru/gisgmp/xsd/Payment/2.1.0" Id="G_fce0c544-b08d-44bc-83d8-738f10e9d069" timestamp="2019-03-12T15:27:53.045+03:00" senderIdentifier="002648" senderRole="1">
<pkg:ChargesPackage>
<pkg:ImportedCharge Id="I_54a59db2-3845-4915-8770-dd95394aadb1" originatorId="002648" supplierBillID="0000980011923591101042012" billDate="2019-03-12T14:06:30.313+03:00" totalAmount="500000" purpose="Oplata" kbk="32111301031016000130" oktmo="45348000">
<org:Payee name="FGBU" inn="6639001506" kpp="668301001" ogrn="1026601982220">
<com:OrgAccount accountNumber="40101810045250010041">
<com:Bank name="GU Bank" bik="044525000"/>
</com:OrgAccount>
</org:Payee>
<chg:Payer payerIdentifier="1220000000007712579832" payerName="Test payer"/>
<chg:BudgetIndex status="01" paytReason="0" taxPeriod="0" taxDocNumber="0" taxDocDate="0"/>
</pkg:ImportedCharge>
</pkg:ChargesPackage>
</req:ImportChargesRequest>
</basic:MessagePrimaryContent>
<tns:TestMessage/>
</tns:SenderProvidedRequestData>
</tns:SendRequestRequest>
</S:Body>
</S:Envelope>
Подписанное сообщение: Код:<?xml version="1.0" encoding="UTF-8"?><S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/" xmlns:basic="urn://x-artefacts-smev-gov-ru/services/message-exchange/types/basic/1.1" xmlns:tns="urn://x-artefacts-smev-gov-ru/services/message-exchange/types/1.1"><S:Body><tns:SendRequestRequest><tns:SenderProvidedRequestData Id="SIGNED_BY_CALLER"><tns:MessageID>3784f060-d777-11e8-b0d0-941882013a1a</tns:MessageID><basic:MessagePrimaryContent><req:ImportChargesRequest xmlns:org="http://roskazna.ru/gisgmp/xsd/Organization/2.1.0" xmlns:com="http://roskazna.ru/gisgmp/xsd/Common/2.1.0" xmlns:chg="http://roskazna.ru/gisgmp/xsd/Charge/2.1.0" xmlns:pkg="http://roskazna.ru/gisgmp/xsd/Package/2.1.0" xmlns:req="urn://roskazna.ru/gisgmp/xsd/services/import-charges/2.1.0" xmlns:rfd="http://roskazna.ru/gisgmp/xsd/Refund/2.1.0" xmlns:pmnt="http://roskazna.ru/gisgmp/xsd/Payment/2.1.0" Id="G_fce0c544-b08d-44bc-83d8-738f10e9d069" timestamp="2019-03-12T15:27:53.045+03:00" senderIdentifier="002648" senderRole="1"><pkg:ChargesPackage><pkg:ImportedCharge Id="I_54a59db2-3845-4915-8770-dd95394aadb1" originatorId="002648" supplierBillID="0000980011923591101042012" billDate="2019-03-12T14:06:30.313+03:00" totalAmount="500000" purpose="Oplata" kbk="32111301031016000130" oktmo="45348000"><org:Payee name="FGBU" inn="6639001506" kpp="668301001" ogrn="1026601982220"><com:OrgAccount accountNumber="40101810045250010041"><com:Bank name="GU Bank" bik="044525000" /></com:OrgAccount></org:Payee><chg:Payer payerIdentifier="1220000000007712579832" payerName="Test payer" /><chg:BudgetIndex status="01" paytReason="0" taxPeriod="0" taxDocNumber="0" taxDocDate="0" /></pkg:ImportedCharge></pkg:ChargesPackage></req:ImportChargesRequest></basic:MessagePrimaryContent><tns:TestMessage /></tns:SenderProvidedRequestData><tns:CallerInformationSystemSignature><Signature xmlns="http://www.w3.org/2000/09/xmldsig#"><SignedInfo><CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /><SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411" /><Reference URI="#I_54a59db2-3845-4915-8770-dd95394aadb1"><Transforms><Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /><Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" /><Transform Algorithm="urn://smev-gov-ru/xmldsig/transform" /></Transforms><DigestMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gostr3411" /><DigestValue>M9V0P2X/OzfdAg50nAPmwis2biPC6SYQg5LXzJmqcvA=</DigestValue></Reference><Reference URI="#SIGNED_BY_CALLER"><Transforms><Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /><Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" /><Transform Algorithm="urn://smev-gov-ru/xmldsig/transform" /></Transforms><DigestMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gostr3411" /><DigestValue>pC1dbY64eP8UP/JJ1U3D9g8vzzg7014b4JsCPyXpIK4=</DigestValue></Reference></SignedInfo><SignatureValue>gcMjIN8F3rEfsE8TKTnk+V7vSwxDNGN6p0g6LKGDObtsyK7h1LWIFsGJNMj4kR72RLsRMrNhRmFT7xxtG556zg==</SignatureValue><KeyInfo><X509Data><X509Certificate></X509Certificate></X509Data></KeyInfo></Signature></tns:CallerInformationSystemSignature></tns:SendRequestRequest></S:Body></S:Envelope>
Отредактировано пользователем 5 апреля 2019 г. 12:44:48(UTC)
| Причина: Не указана
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close