Доброго времени суток.
Хотел бы узнать, как решил свою проблему автор. Аналогичная ситуация.
На странице, которая указана выше, подпись работает не по шаблону, интересует работа подписи именно по шаблону.
Если вставить в эту страницу данные в роде:
<Node Id="nodeID">
<Data>Hello, Node!</Data>
<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="#nodeID">
<Transforms>
<Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
<Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
</Transforms>
<DigestMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gostr3411"/>
<DigestValue/>
</Reference>
</SignedInfo>
<SignatureValue/>
<KeyInfo/>
</Signature>
</Node>
и установить вместо
var CADESCOM_XML_SIGNATURE_TYPE_ENVELOPED = 0; - var CADESCOM_XML_SIGNATURE_TYPE_ENVELOPED = 2;
то будет выскакивать ошибка "Не удалось создать подпись из-за ошибки: Ошибка при обработке цифровой подписи XML. (0x800705BA)".
При этом, если изменить
Id="nodeID" на
xml:id="nodeID", то подпись будет успешно выполнена.
Вся тупость проблемы в том, что засунув xml:id вместо Id подпись сформируется, но сервис, на который уйдет этот запрос, скажет: "до свидания, запрос не соответствует формату".
Почему-то вот они хотят что бы было именно их Id, никак не xml:id. Откуда-то ведь они взяли это и наклепали такие сервисы. В СМЭВ'е таких не 1.
Для Id отлично срабатывает подпись, если ему указать неймспейс
"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd", что-то в роде этого:
<Node wsu:Id="nodeID" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
...
</Node>
Но проблема в том, что, видимо, это единственный неймспейс, который плагин воспринимает, как возможный для Id. Сервис же, который принимает запрос, вновь скажет: "до свидания, запрос не соответствует формату".
Как вот с этим бороться?
На форуме нашел
тему 2-х летней давности. В конце указаны рекомендации. Не совсем понял что именно надо было сделать. Если это действительно работает, то не могли бы Вы тут продемонстрировать что нужно сделать с примером, который указан выше, что бы он успешно подписался?
Отредактировано пользователем 4 сентября 2015 г. 11:41:59(UTC)
| Причина: Не указана