подписание SOAP message
(1 чел.) (1) гость
  • Страница:
  • 1
  • ...
  • 5
  • 6
  • 7
  • 8
  • 9
  • ...
  • 11

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

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

  • vyarovoy
  • Новый участник
  • Постов: 18
  • Репутация: 0
Мурат, понял....хм, спасибо. То есть мне перед подписыванием нужно добавить к Body GUID? Вопрос риторический - я уже попробовал не указать GUID, тот же exception.

Баха, подкинешь ты как добавляешь атрибут? SoapExtension используешь или по другому как то? Кодом поделишься или хочешь чтоб я потрудился?

Если SoapExtension то наверное stream в XmlDocument, добавить атрибут, потом обратно в стрим и на подпись...как то так.

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

  • vyarovoy
  • Новый участник
  • Постов: 18
  • Репутация: 0
Мурат, я добавил Id к Body, теперь SignXML работает четко...но ds:Signature по прежнему не в Header. Описываю ниже всё детально, надеюсь на ваш совет.

Как я добавляю Id:
            XDocument doc = XDocument.Load(newStream);
            XElement body = doc.Element("{http://schemas.xmlsoap.org/soap/envelope/}Envelope").
                                            Element("{http://schemas.xmlsoap.org/soap/envelope/}Body");
            string bodyId = Guid.NewGuid().ToString();
            body.SetAttributeValue("Id", bodyId);
            string idValue = doc.Element("{http://schemas.xmlsoap.org/soap/envelope/}Envelope").
                                            Element("{http://schemas.xmlsoap.org/soap/envelope/}Body").
                                            Attribute("Id").Value;
            newStream.SetLength(0);
            doc.Save(newStream);
            newStream.Position = 0;


После этого я выгнал stream в строку и удостоверился что там только 1 XML документ и в нем Body имеет Id.
            // посмотрел что Id появился там где надо
            string soapAfterBodyID = new StreamReader(newStream).ReadToEnd();
            newStream.Position = 0;

            IIolaCOM2 iolaCrypt = new IolaCOM2();
            iolaCrypt.KeyType = iolaCrypt.CertType =  (int)IOLACOM_STORETYPE.ST_IOLA_PKCS12;
            iolaCrypt.KeyPath = iolaCrypt.CertPath = "c:\\dev\\Projects\\PF_direct\\";
            iolaCrypt.SetPIN("123456");
            string keyUIDs = iolaCrypt.GetKeyUids();
            string[] keyIds = keyUIDs.Split(new String[] { "\r\n" }, StringSplitOptions.None);

            int flag = (int)IOLACOM_OPERFLAGS.SF_DETACHED_DATA;
            string signedXML = iolaCrypt.SignXML(keyIds[0], flag, "utf-16", new StreamReader(newStream).ReadToEnd(), "Header http://schemas.xmlsoap.org/soap/envelope/ " + bodyId);
            newStream.SetLength(0);
            StreamWriter signedWriter = new StreamWriter(newStream);
            signedWriter.Write(signedXML);
            signedWriter.Flush();
            newStream.Position = 0;


В результате вот что уходит в ГЦВП:
<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body Id="0b94d452-6402-4174-9f79-eed8273f3f59"><findInfo xmlns="http://ws.gcvp.idsoftware.kz/"><arg0 xmlns=""><birthdate>кк-кк</birthdate><fatherName>кк</fatherName><firstName>кк</firstName><iin>вв</iin><lastName>кк</lastName><period>6</period><requestNumber>55a27e93-ca85-4bdf-b239-6dfabe2a6a44</requestNumber></arg0></findInfo></soap:Body><ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#" Id="1"><ds:SignedInfo><ds:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/><ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gost34310-gost34311"/><ds:Reference URI="#0b94d452-6402-4174-9f79-eed8273f3f59"><ds:Transforms><ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/><ds:Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments"/></ds:Transforms><ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gost34311"/><ds:DigestValue>DqyG4v1npFsXJBfiJ8RmeDegv7M/cKUo5ufuNmZaAAg=</ds:DigestValue></ds:Reference></ds:SignedInfo><ds:SignatureValue>XJmiCD+HB+y8dogTfivxNXXkrEBbD8ewdh9PqmMdqA6IRx8M4AUxIH6zY5pC1+QXZ3MqKpJIWIfZFgscEMPphw==</ds:SignatureValue><ds:KeyInfo><ds:X509Data><ds:X509Certificate>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</ds:X509Certificate></ds:X509Data></ds:KeyInfo></ds:Signature></soap:Envelope>

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

  • Murat Seisenov
  • Модератор
  • Постов: 391
  • Репутация: 19
А в исходном SOAP у Вас есть тэг Header?
Модератор

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

  • Murat Seisenov
  • Модератор
  • Постов: 391
  • Репутация: 19
В Вашем примере добавьте http:// как указано ниже.
Тогда успешно проходит проверку на java.

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
...
<findInfo xmlns="http://ws.gcvp.idsoftware.kz/">
Модератор

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

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

Но не понял про http - он у меня везде есть...вот мой актуальный xml:
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope [b]xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"[/b] xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <soap:Body Id="2eb93956-6b62-41d5-951a-d02cdcf664fc">
    <findInfo [b]xmlns="http://ws.gcvp.idsoftware.kz/"[/b]>
      <arg0 xmlns="">
        <birthdate>dd-dd-dd</birthdate>
        <fatherName>dd</fatherName>
        <firstName>dd</firstName>
        <iin>dd</iin>
        <lastName>dd</lastName>
        <period>6</period>
        <requestNumber>fc58e352-378d-4ffa-ada1-6901d33bba93</requestNumber>
      </arg0>
    </findInfo>
  </soap:Body>
  <soap:Header>
    <ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#" Id="1">
      <ds:SignedInfo>
        <ds:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
        <ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gost34310-gost34311"/>
        <ds:Reference URI="#2eb93956-6b62-41d5-951a-d02cdcf664fc">
          <ds:Transforms>
            <ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
            <ds:Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments"/>
          </ds:Transforms>
          <ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gost34311"/>
          <ds:DigestValue>BwtgcN+6KPrwLtlP0wxMcfem/Rr9Cg1esbIwiDlSyNI=</ds:DigestValue>
        </ds:Reference>
      </ds:SignedInfo>
      <ds:SignatureValue>uXv97VgZ8hoIt3UET/joEOfZe6VJHR7HC2v75ENjom7gus6QkG7fHk+tm6g38f1V//qlzJ7HHcP1uYfUl+abpA==</ds:SignatureValue>
      <ds:KeyInfo>
        <ds:X509Data>
          <ds:X509Certificate>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</ds:X509Certificate>
        </ds:X509Data>
      </ds:KeyInfo>
    </ds:Signature>
  </soap:Header>
</soap:Envelope>

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

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

Также заметил расхождении в Id атрибуте тэга Signature. Допилил чтоб у меня тоже был bank:
<ds:Signature xmlns:ds=\"http://www.w3.org/2000/09/xmldsig#\" Id=\"bank\">


Но по прежнему получаю 502 connection refused. Плз поясните ещё раз насчёт http!
  • Страница:
  • 1
  • ...
  • 5
  • 6
  • 7
  • 8
  • 9
  • ...
  • 11
FaLang translation system by Faboba