Статус: Новичок
Группы: Участники
Зарегистрирован: 14.06.2020(UTC) Сообщений: 4 Откуда: Москва
|
Не удалось разобраться, как подписать документ XML для отправки в ФСС несколькими подписями через Browser Plugin. Использовал вариант подписи через template. Создаю такой шаблон: Код:
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:end="http://ru/ibs/fss/ln/ws/FileOperationsLn.wsdl" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<SOAP-ENV:Header>
<wsse:Security SOAP-ENV:actor="http://eln.fss.ru/actor/insurer/3103275205" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
<wsse:BinarySecurityToken EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary" ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3" wsu:Id="http://eln.fss.ru/actor/insurer/3103275205">
<Base64 сертификата>
</wsse:BinarySecurityToken>
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
<SignedInfo>
<CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
<SignatureMethod Algorithm="urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-256"/>
<Reference URI="#REGNO_3103275205">
<Transforms>
<Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
</Transforms>
<DigestMethod Algorithm="urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-256"/>
<DigestValue/>
</Reference>
</SignedInfo>
<SignatureValue/>
<KeyInfo>
<wsse:SecurityTokenReference>
<wsse:Reference URI="#http://eln.fss.ru/actor/insurer/3103275205"
ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3"/>
</wsse:SecurityTokenReference>
</KeyInfo>
</Signature>
</wsse:Security>
</SOAP-ENV:Header>
<SOAP-ENV:Body wsu:Id="REGNO_3103275205">
<end:getPrivateLNData>
<regNum>...</regNum>
<lnCode>...</lnCode>
<snils>...</snils>
</end:getPrivateLNData>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Получаю: Код:
<?xml version="1.0"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:end="http://ru/ibs/fss/ln/ws/FileOperationsLn.wsdl" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<SOAP-ENV:Header>
<wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" SOAP-ENV:actor="http://eln.fss.ru/actor/insurer/3103275205">
<wsse:BinarySecurityToken EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary" ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3" wsu:Id="http://eln.fss.ru/actor/insurer/3103275205">
<Base64 сертификата>
</wsse:BinarySecurityToken>
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
<SignedInfo>
<CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
<SignatureMethod Algorithm="urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-256"/>
<Reference URI="#REGNO_3103275205">
<Transforms>
<Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
</Transforms>
<DigestMethod Algorithm="urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-256"/>
<DigestValue>...хэш...</DigestValue>
</Reference>
</SignedInfo>
<SignatureValue>...подпись...</SignatureValue>
<KeyInfo>
<wsse:SecurityTokenReference>
<wsse:Reference URI="#http://eln.fss.ru/actor/insurer/3103275205" ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3"/>
</wsse:SecurityTokenReference>
</KeyInfo>
</Signature>
</wsse:Security>
</SOAP-ENV:Header>
<SOAP-ENV:Body wsu:Id="REGNO_3103275205">
<end:getPrivateLNData>
<regNum>...</regNum>
<lnCode>...</lnCode>
<snils>...</snils>
</end:getPrivateLNData>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Когда пытаюсь ещё раз подписать файл с другим сертификатом, то получаю ошибку. Результат, который требуется - несколько тэгов <wsse:Security>, каждый содержащий свою подпись. Вопрос - как этого добиться? Какой шаблон, или может какой вызов?
|
|
|
|
Статус: Эксперт
Группы: Участники
Зарегистрирован: 05.03.2015(UTC) Сообщений: 1,602 Откуда: Иркутская область Сказал(а) «Спасибо»: 110 раз Поблагодарили: 393 раз в 366 постах
|
Во-первых, нужно определиться с порядком подписей, чтобы последующие не нарушили первые. То есть сначала подписывается самая дальняя от корня, потом постепенно поднимаетесь к корню документа.
Теоретически правильный вариант - надо создать с шаблон с нужным количеством подписей, затем при первом вызове указать какую из них заполнять при первом вызове (фильтр для выборки конкретной Signature), потом второй вызов и указать какую заполнять при втором вызове и т.д. При последнем вызове (осталась только одна Signature с пустыми DigestValue/SignatureValue) можно не указывать какую подпись (обычно всего одна Signature потому и никто не указывает).
Практически - я не смогу точно подсказать, что именно указываться выборки конкретной подписи (все темы на форуме которые я видел обламывались на этом моменте). Более-менее ясно, что уже автоматом выбраны только теги Signature и видимо условие выбора dsig:Signature не надо указывать в фильтр. Поэтому видимо в шаблоне должен быть указан id для тега Signature и фильтровать по нему.
Другой вариант - после первой подписи добавлять шаблон для второй и т.д., тогда указывать фильтр не придется (только одна Signature с пустыми DigestValue/SignatureValue), но выглядит костылем.
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close