ТЕМА: подписание SOAP message

Re: подписание SOAP message 5 года, 8 мес. назад #716

  • Murat Seisenov
  • Модератор
  • Постов: 391
  • Репутация: 19
А причем здесь ошибка "502 connection refused"?
Это к вашему поставщику сервиса надо обращаться, а не к нам.

Вышлите мне на email ваше исходное soap-сообщение (без подписи).
Модератор
Изменено: 5 года, 8 мес. назад от Murat Seisenov.

Re: подписание SOAP message 5 года, 8 мес. назад #717

  • vyarovoy
  • Новый участник
  • Постов: 18
  • Репутация: 0
Мурат, сообщение выслал.

По поводу 502 - да, к вам претензий никаких, это к ГЦВП. Просто мне их разработчик отвечает что это из за того что некорректная подпись.

Баха, скажи мне дату/время твоих последних запросов - я спрошу у него почему тебе отвечает Invalid signature, а мне 502 connection refused.

Re: подписание SOAP message 5 года, 8 мес. назад #718

  • vyarovoy
  • Новый участник
  • Постов: 18
  • Репутация: 0
Мурат,

Дайте знать что получили - а то вижу ответы от вас
Документ Original soap
не доставлено: bossenkoda@kazakhstan-consulting.eu <--- какой то интересный IT Consulting из Европы
по причине: 554 5.7.0 Reject, id=10295-16 - SPAM

Re: подписание SOAP message 5 года, 8 мес. назад #719

  • Murat Seisenov
  • Модератор
  • Постов: 391
  • Репутация: 19
Да, получил.
У вас у тэга Body нет Id. Что вы передаете в Signxml вместо Id?
Модератор

Re: подписание SOAP message 5 года, 8 мес. назад #720

  • vyarovoy
  • Новый участник
  • Постов: 18
  • Репутация: 0
Мурат,

Я вам выслал "голое" сообщения - то, что я отправляю в ГЦВП сгенерив классы по WSDL.

Все Header, Body Id, Signature Id - эти элементы я делаю своими руками. Высылаю вам soap без Signature и Signature Id, но с Body Id.

Re: подписание SOAP message 5 года, 8 мес. назад #721

  • vyarovoy
  • Новый участник
  • Постов: 18
  • Репутация: 0
Коллеги,

Бороздя просторы обнаружил полезный метод как подписывать без помощи сторонних либ - средствами .NET. Попробовал этот метод с сертификатом RSA, с ГОСТ не заработало - из файла грузить не захотело, а проимпортировать его не получилось так как винда не видит поставщика ГОСТ (кстати его можно как то поставить?)

В нашем случае код выглядит следующим образом:
        private static XmlDocument SignXmlDocument(Stream xmlStream, string guid)
        {
            X509Store store = new X509Store("My", StoreLocation.CurrentUser);
            store.Open(OpenFlags.OpenExistingOnly | OpenFlags.ReadOnly);

            // NUC RK (RSA) certificate imported to my PC - Личный сертификаты
            X509Certificate2 foundCertificate = store.Certificates[0];

            // load xml from disk preserving whitespaces
            XmlDocument xmlDocument = new XmlDocument { PreserveWhitespace = true };
            xmlDocument.Load(xmlStream);
            
            // create signed xml with a same-document reference containing an enveloped-signature transform
            SignedXml signedXml = new SignedXml(xmlDocument) { SigningKey = foundCertificate.PrivateKey };
            Reference reference = new Reference();
            XmlDsigEnvelopedSignatureTransform env = new XmlDsigEnvelopedSignatureTransform();
            XmlDsigC14NWithCommentsTransform c14 = new XmlDsigC14NWithCommentsTransform();
            reference.AddTransform(env);
            reference.AddTransform(c14);
            reference.Uri = "#"+guid;
            signedXml.AddReference(reference);

            // embed public key information for signature validation purposes
            KeyInfo keyInfo = new KeyInfo();
            KeyInfoX509Data keyInfoX509Data = new KeyInfoX509Data(foundCertificate, X509IncludeOption.ExcludeRoot);
            keyInfo.AddClause(keyInfoX509Data);
            signedXml.KeyInfo = keyInfo;

            // compute and retreive the signature xml
            signedXml.ComputeSignature();
            XmlElement xmldsigXmlElement = signedXml.GetXml();

            // insert the signature xml into the xml document as first child of the root element
            xmlDocument.GetElementsByTagName("soap:Header").Item(0).PrependChild(xmlDocument.ImportNode(xmldsigXmlElement, true));

            return xmlDocument;
        }


Жду ответа от ГЦВП по поводу своей 502 ошибки....Баха, может всё таки поделишься кодом с которым ты дошел до Invalid Signature? Я уже не знаю что дальше пробовать...
FaLang translation system by Faboba