Ключевое слово в защите информации
КЛЮЧЕВОЕ СЛОВО
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline slava8519  
#1 Оставлено : 14 ноября 2012 г. 12:14:04(UTC)
slava8519

Статус: Новичок

Группы: Участники
Зарегистрирован: 12.11.2012(UTC)
Сообщений: 8

Есть два SOAP запроса. Один контрольный - он проходит нормально и подпись валидируется. Пишем другой запрос, почти один в один - и подпись не валидируется.
Контрольный:
<s:Envelope xmlns:u="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"><s:Header><o:Security s:mustUnderstand="1" xmlns:o="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-
secext-1.0.xsd" s:actor="RSMEVAUTH"><o:BinarySecurityToken u:Id="uuid-5591c4c0-718f-4cbb-8aa1-9b5a6a2107fa-2" ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-
wss-x509-token-profile-1.0#X509v3" EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-
1.0#Base64Binary">MIIFmzCCBUigAwIBAgIKTBRytAAAAAAXaDAKBgYqhQMCAgMFADCBjjEaMBgGCSqGSIb3DQEJARYLY2FAdWMtZW0ucnUxCzAJBgNVBAYTAlJVMQ8wDQYDVQQHEwZNb3Njb3cxHjAcBgNVBAoTFUpTQyBFbGVjd
HJvbmljIE1vc2NvdzEfMB0GA1UECxMWQ2VydGlmaWNhdGlvbiBhdXRvcml0eTERMA8GA1UEAxMIVUMtRU0gQ0EwHhcNMTExMjIxMTAxMTAwWhcNMTIxMjIxMTAxNTAwWjCCAcoxPTA7BgNVBAMeNAQoBDUEMgRLBEAEPgQyACMEHwQw
BDIENQQ7ACMEEgRPBEcENQRBBDsEMAQyBD4EMgQ4BEcxSzBJBgNVBAweQgQXBDAEPAQ1BEEEQgQ4BEIENQQ7BEwAIAQ9BDAERwQwBDsETAQ9BDgEOgQwACAEQwQ/BEAEMAQyBDsENQQ9BDgETzFFMEMGA1UECx48BCMEPwRABDAEMgQ
7BDUEPQQ4BDUAIAQ+BEIEQAQwBEEEOwQ1BDIESwRFACAEPwRABD4ENQQ6BEIEPgQyMWcwZQYDVQQKHl4EFAQ1BD8EMARABEIEMAQ8BDUEPQRCACAEOAQ9BEQEPgRABDwEMARGBDgEPgQ9BD0ESwRFACAEQgQ1BEUEPQQ
+BDsEPgQzBDgEOQAgBDMALgAgBBwEPgRBBDoEMgRLMRUwEwYDVQQHHgwEHAQ
+BEEEOgQyBDAxCzAJBgNVBAYTAlJVMSAwHgYJKoZIhvcNAQkBFhFzaGV2eXJvdnB2QG1vcy5ydTEYMBYGBSqFA2QBEw0xMTA3NzQ2OTQzMzQ3MRgwFgYIKoUDA4EDAQETCjc3MTA4NzgwMDAxEjAQBgkqhkiG9w0BCQITA0lTSTBjMB
wGBiqFAwICEzASBgcqhQMCAiQABgcqhQMCAh4BA0MABEAsX8ynlE2Xmto
+T2/WQjTFWjwY0sZdtyZrIZje06anw05Q75+s00PHjLaGiV//a9L9BZS/S4pHVuTHrUVDw67Co4ICQzCCAj8wDgYDVR0PAQH/BAQDAgTwMB0GA1UdDgQWBBSALm5571vVGrW3OxGeTz7rghBhHzAwBgNVHSUEKTAnBggqhQMFARgCBg
YJKoUDA1gBAQEIBgcqhQMCAiIZBgcqhQMCAiIaMIGjBgcqhQMCAjECBIGXMIGUMIGDFhpodHRwOi8vc212cmEudWMtZW0ucnU6ODA4MAxh0KHQuNGB0YLQtdC80LAg0LzQsNGB0YHQvtCy0L7QuSDQstGL0LTQsNGH0Lgg0YHQtdGA0
YLQuNGE0LjQutCw0YLQvtCyINC60LvRjtGH0LXQuSDQv9C+0LTQv9C40YHQuAMCBeAEDEvXmf
+RNgy7bsEfoTAfBgNVHSMEGDAWgBTrJ7QMURESQKGARIElyFFSYv4NSjCBnQYDVR0fBIGVMIGSMIGPoIGMoIGJhkVodHRwOi8vd3d3LnVjLWVtLnJ1L2NlcnQvZWIyN2I0MGM1MTExMTI0MGExODA0NDgxMjVjODUxNTI2MmZlMGQ0Y
S5jcmyGQGh0dHA6Ly9jcmwudWMtZW0ucnUvZWIyN2I0MGM1MTExMTI0MGExODA0NDgxMjVjODUxNTI2MmZlMGQ0YS5jcmwwdQYIKwYBBQUHAQEEaTBnMDIGCCsGAQUFBzABhiZodHRwOi8vb2NzcC51Yy1lbS5ydS9vY3NwLXNtdi9v
Y3NwLnNyZjAxBggrBgEFBQcwAoYlaHR0cDovL3d3dy51Yy1lbS5ydS9jZXJ0L3VjLWVtX2NhLmNlcjAKBgYqhQMCAgMFAANBANfPFW3Vhf3iRFRKCr3Ft26XFCjs1XDzL5ci26lbnaMiZzMuzYaGqlVyMK4IMUn8UhvhukS8Qaxff1G
PHXHi3iU=</o:BinarySecurityToken><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="#_1"><Transforms><Transform
Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /></Transforms><DigestMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gostr3411"
/><DigestValue>t637pqxhVaA31IjU150TsbejU4p8cBfkvgKXLIGxKEc=</DigestValue></Reference></SignedInfo><SignatureValue>BUeWXarVzgGdT+IFJPCIT7Nya
+3mEgA4BHqFA0o5LlYZtoTOHl04xiMSZQs4/taT2e6UdWI8P/s1ag+vBnE5ew==</SignatureValue><KeyInfo><o:SecurityTokenReference><o:Reference ValueType="http://docs.oasis-
open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3" URI="#uuid-5591c4c0-718f-4cbb-8aa1-9b5a6a2107fa-2"
/></o:SecurityTokenReference></KeyInfo></Signature></o:Security></s:Header><s:Body u:Id="_1" xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:u="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-
wssecurity-utility-1.0.xsd"><DocumentType_SelectAll xmlns="http://asur.mos.ru/isi/declarants/v8"></DocumentType_SelectAll></s:Body></s:Envelope>

А вот тот который не работает:


<?xml version="1.0" encoding="UTF-8"?><S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ds="http://www.w3.org/2000/09/xmldsig#"

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">
<S:Header>
<wsse:Security S:actor="RSMEVAUTH" S:mustUnderstand="1" 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="SenderCertificate">MIIDWDCCAwegAwIBAgIKOml6JwACAALvLzAIBgYqhQMCAgMwZTEgMB4GCSqGSIb3DQEJARYRaW5m
b0BjcnlwdG9wcm8ucnUxCzAJBgNVBAYTAlJVMRMwEQYDVQQKEwpDUllQVE8tUFJPMR8wHQYDVQQD
ExZUZXN0IENlbnRlciBDUllQVE8tUFJPMB4XDTEyMTExMjEzMzcyMloXDTE0MTAwNDA3MDk0MVow
gZYxITAfBgkqhkiG9w0BCQEWEnMudGlraG9ub3ZAcGZsYi5ydTEYMBYGA1UEAwwPU2VyZ2V5IFRp
a2hvbm92MQswCQYDVQQLDAJwdDEYMBYGA1UECgwPUGVyZm9ybWFuY2UgTGFiMRAwDgYDVQQHDAdJ
emhldnNrMREwDwYDVQQIDAhVZG11cnRpYTELMAkGA1UEBhMCUlUwYzAcBgYqhQMCAhMwEgYHKoUD
AgIkAAYHKoUDAgIeAQNDAARAPER4v38TwpnhIF3Ij267uUb4VMEDekh7FJ/5pHCaPXQlaxoKTNj9
hPJ3/AVa1au7lSB2bHK50s7T5WcwgyoVI6OCAWMwggFfMA4GA1UdDwEB/wQEAwIE8DATBgNVHSUE
DDAKBggrBgEFBQcDAjAdBgNVHQ4EFgQUHNTlpciCZLWfTcbDf7J3uMDskQQwHwYDVR0jBBgwFoAU
bY9eBdlfrJEXlB6VmgUwODd6ECowVQYDVR0fBE4wTDBKoEigRoZEaHR0cDovL3d3dy5jcnlwdG9w
cm8ucnUvQ2VydEVucm9sbC9UZXN0JTIwQ2VudGVyJTIwQ1JZUFRPLVBSTygyKS5jcmwwgaAGCCsG
AQUFBwEBBIGTMIGQMDMGCCsGAQUFBzABhidodHRwOi8vd3d3LmNyeXB0b3Byby5ydS9vY3NwbmMv
b2NzcC5zcmYwWQYIKwYBBQUHMAKGTWh0dHA6Ly93d3cuY3J5cHRvcHJvLnJ1L0NlcnRFbnJvbGwv
cGtpLXNpdGVfVGVzdCUyMENlbnRlciUyMENSWVBUTy1QUk8oMikuY3J0MAgGBiqFAwICAwNBAAqB
APw6bOtkGwXNHTFQy7bGjIJhRvEcdsyGX1rAythLrOgkA8Wume+Dw4/Z+BZl+eSiif5qRbVWJ7Sq
bNc6h6M=</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="http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411"/>
<Reference URI="#body">
<Transforms>
<Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
</Transforms>
<DigestMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gostr3411"/>
<DigestValue>wc/UCetBvV3ZZc7M5HjOtrAP7JsiPTDkxGAKS/T/Q0o=</DigestValue>
</Reference>
</SignedInfo>
<SignatureValue>s1aTH1Bx2B2G3UwmiAltovZ/hBxeNJboKuMxZbxw1JG3lOg8PvNxDSTaIg3gbRz0WrloEqGNE+u7
Rek3gJG5EQ==</SignatureValue>
<KeyInfo>
<wsse:SecurityTokenReference>
<wsse:Reference URI="#SenderCertificate" ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3"/>
</wsse:SecurityTokenReference>
</KeyInfo>
</Signature>
</wsse:Security>
</S:Header>
<S:Body wsu:id="body">
<DocumentType_SelectAll xmlns="http://asur.mos.ru/isi/declarants/v8">
</DocumentType_SelectAll>
</S:Body>
</S:Envelope>

Вот текст ошибки:


<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body>
<s:Fault>
<faultcode xmlns:a="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">a:InvalidSecurity</faultcode>
<faultstring xml:lang="ru-RU">An error occurred when verifying security for the message.</faultstring>
</s:Fault>
</s:Body>
</s:Envelope>

P S
Вот WSDL: http://nfstur2.prognoz.r...ficationService.svc?wsdl

Отредактировано пользователем 14 ноября 2012 г. 14:15:02(UTC)  | Причина: Не указана

Вложение(я):
Контрольный запрос.doc (26kb) загружен 5 раз(а).
НовыйЗапрос.txt (4kb) загружен 5 раз(а).

У Вас нет прав для просмотра или загрузки вложений. Попробуйте зарегистрироваться.
Offline Евгений Афанасьев  
#2 Оставлено : 14 ноября 2012 г. 13:39:38(UTC)
Евгений Афанасьев

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 06.12.2008(UTC)
Сообщений: 3,977
Российская Федерация
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 21 раз
Поблагодарили: 708 раз в 669 постах
Я предполагаю, что ошибка где-то в заголовке. Можете приложить документы в виде файлов? (кнопка Attach справа)

Отредактировано пользователем 14 ноября 2012 г. 13:40:25(UTC)  | Причина: Не указана

Offline slava8519  
#3 Оставлено : 14 ноября 2012 г. 14:21:18(UTC)
slava8519

Статус: Новичок

Группы: Участники
Зарегистрирован: 12.11.2012(UTC)
Сообщений: 8

Приложил. Заранее премного благодарен за помощь.
Offline Евгений Афанасьев  
#4 Оставлено : 14 ноября 2012 г. 19:25:13(UTC)
Евгений Афанасьев

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 06.12.2008(UTC)
Сообщений: 3,977
Российская Федерация
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 21 раз
Поблагодарили: 708 раз в 669 постах
Пробовали проверять документ в сервисе СМЭВ http://188.254.16.92:7777/gateway/services/SID0003038 ?
Он возвращает ошибку "Неверная ЭП" на второе вложенное сообщение.
Offline alee  
#5 Оставлено : 14 ноября 2012 г. 19:50:16(UTC)
alee

Статус: Новичок

Группы: Участники
Зарегистрирован: 14.11.2012(UTC)
Сообщений: 6

Проверяю на http://smev.gosuslugi.ru...l/services-tools.jsp.Что подпись не верная понятно, не понятно только что не так.

На входе

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" 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">
<s:Header>
<wsse:Security>
<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="SenderCertificate"></wsse:BinarySecurityToken>
</wsse:Security>
</s:Header>
<s:Body wsu:id="body"> <DocumentType_SelectAll xmlns="http://asur.mos.ru/isi/declarants/v8">123</DocumentType_SelectAll></s:Body>
</s:Envelope>

На выходе

<?xml version="1.0" encoding="UTF-8"?><s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" 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">
<s:Header><wsse:Security s:actor="http://smev.gosuslugi.ru/actors/smev" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"><ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#"><ds:SignedInfo><ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/><ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411"/><ds:Reference URI="#body"><ds:Transforms><ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/><ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/></ds:Transforms><ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gostr3411"/><ds:DigestValue>D2TMl4T8QZ61rQzPf7NnapkNSJN+Wdkwd9vX1T+2C4s=</ds:DigestValue></ds:Reference></ds:SignedInfo><ds:SignatureValue>IG2di7gfXPuX54N6JF/TlDZZjPyjERnyQY5XnvJj+uGsIfZ3asWiY8HTZAKYwyZvSoJVZqmqDumC
Zye3ifaPgg==</ds:SignatureValue><ds:KeyInfo><wsse:SecurityTokenReference><wsse:Reference URI="#SenderCertificate" ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3"/></wsse:SecurityTokenReference></ds:KeyInfo></ds:Signature></wsse:Security>
<wsse:Security>
<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="SenderCertificate">MIIDWDCCAwegAwIBAgIKOml6JwACAALvLzAIBgYqhQMCAgMwZTEgMB4GCSqGSIb3DQEJARYRaW5m
b0BjcnlwdG9wcm8ucnUxCzAJBgNVBAYTAlJVMRMwEQYDVQQKEwpDUllQVE8tUFJPMR8wHQYDVQQD
ExZUZXN0IENlbnRlciBDUllQVE8tUFJPMB4XDTEyMTExMjEzMzcyMloXDTE0MTAwNDA3MDk0MVow
gZYxITAfBgkqhkiG9w0BCQEWEnMudGlraG9ub3ZAcGZsYi5ydTEYMBYGA1UEAwwPU2VyZ2V5IFRp
a2hvbm92MQswCQYDVQQLDAJwdDEYMBYGA1UECgwPUGVyZm9ybWFuY2UgTGFiMRAwDgYDVQQHDAdJ
emhldnNrMREwDwYDVQQIDAhVZG11cnRpYTELMAkGA1UEBhMCUlUwYzAcBgYqhQMCAhMwEgYHKoUD
AgIkAAYHKoUDAgIeAQNDAARAPER4v38TwpnhIF3Ij267uUb4VMEDekh7FJ/5pHCaPXQlaxoKTNj9
hPJ3/AVa1au7lSB2bHK50s7T5WcwgyoVI6OCAWMwggFfMA4GA1UdDwEB/wQEAwIE8DATBgNVHSUE
DDAKBggrBgEFBQcDAjAdBgNVHQ4EFgQUHNTlpciCZLWfTcbDf7J3uMDskQQwHwYDVR0jBBgwFoAU
bY9eBdlfrJEXlB6VmgUwODd6ECowVQYDVR0fBE4wTDBKoEigRoZEaHR0cDovL3d3dy5jcnlwdG9w
cm8ucnUvQ2VydEVucm9sbC9UZXN0JTIwQ2VudGVyJTIwQ1JZUFRPLVBSTygyKS5jcmwwgaAGCCsG
AQUFBwEBBIGTMIGQMDMGCCsGAQUFBzABhidodHRwOi8vd3d3LmNyeXB0b3Byby5ydS9vY3NwbmMv
b2NzcC5zcmYwWQYIKwYBBQUHMAKGTWh0dHA6Ly93d3cuY3J5cHRvcHJvLnJ1L0NlcnRFbnJvbGwv
cGtpLXNpdGVfVGVzdCUyMENlbnRlciUyMENSWVBUTy1QUk8oMikuY3J0MAgGBiqFAwICAwNBAAqB
APw6bOtkGwXNHTFQy7bGjIJhRvEcdsyGX1rAythLrOgkA8Wume+Dw4/Z+BZl+eSiif5qRbVWJ7Sq
bNc6h6M=</wsse:BinarySecurityToken>
</wsse:Security>
</s:Header>
<s:Body wsu:id="body"> <DocumentType_SelectAll xmlns="http://asur.mos.ru/isi/declarants/v8">123</DocumentType_SelectAll></s:Body>
</s:Envelope>


Код стандартный :


com.sun.org.apache.xml.internal.security.Init.init();
org.apache.xml.security.Init.init();


//начинаем обработку MEssage. СОзадем SOAPMessage
MessageFactory mf = MessageFactory.newInstance();
SOAPMessage message = mf.createMessage();
SOAPPart soapPart = message.getSOAPPart();

soapPart.setContent(new StreamSource(new StringReader(soapMSG)));

message.getSOAPPart().getEnvelope().addNamespaceDeclaration("ds", "http://www.w3.org/2000/09/xmldsig#");

Document doc = message.getSOAPPart().getEnvelope().getOwnerDocument();

//формируем заголовок
WSSecHeader header = new WSSecHeader();
header.setActor("http://smev.gosuslugi.ru/actors/smev"/*"RSMEVAUTH"*/);
header.setMustUnderstand(false);

header.insertSecurityHeader(message.getSOAPPart().getEnvelope().getOwnerDocument());
Element token = header.getSecurityHeader();

//говолрим что ID это идентификатор ,а то иначе не понимает
((Element) XPathAPI.selectSingleNode(token, "//*[@wsu:id='"+"body"+"']")).setIdAttribute( "wsu:id", true);


XMLSignatureFactory fac = getSigFactory();

//Преобразования над узлом ds:SignedInfo:
List<Transform> transformList = new ArrayList<Transform>();
Transform transform = fac.newTransform(Transform.ENVELOPED, (XMLStructure) null);
Transform transformC14N = fac.newTransform(Transforms.TRANSFORM_C14N_EXCL_OMIT_COMMENTS, (XMLStructure) null);
transformList.add(transform);
transformList.add(transformC14N);



//Добавляем ссылку на подписываемый узел с идентификатором
Reference refData = fac.newReference("#"+"body", fac.newDigestMethod(getDigestMethod(), null),transformList, null, null);

//Задаём алгоритм подписи:
SignedInfo si = fac.newSignedInfo( fac.newCanonicalizationMethod(CanonicalizationMethod.EXCLUSIVE,
(C14NMethodParameterSpec) null), fac.newSignatureMethod(getSignatureMethod(), null) , Collections.singletonList(refData));

//Создаём узел ds:KeyInfo с информацией о сертификате:
KeyInfoFactory kif = fac.getKeyInfoFactory();
X509Data x509d = kif.newX509Data(Collections.singletonList((X509Certificate) cert));
KeyInfo ki = kif.newKeyInfo(Collections.singletonList(x509d));

//Подписываем данные в элементе token:
javax.xml.crypto.dsig.XMLSignature sig = fac.newXMLSignature(si, ki);
DOMSignContext signContext = new DOMSignContext((Key) getPrivateKey(), token);
signContext.putNamespacePrefix(javax.xml.crypto.dsig.XMLSignature.XMLNS, "ds");
sig.sign(signContext);

logger.info(getResultString(token));

Element sigE = (Element) XPathAPI.selectSingleNode(signContext.getParent(), "//ds:Signature");
Node keyE = XPathAPI.selectSingleNode(sigE, "//ds:KeyInfo", sigE);

Element cerVal = (Element) XPathAPI.selectSingleNode(token, "//*[@wsu:Id='SenderCertificate']");
cerVal.setTextContent(XPathAPI.selectSingleNode(keyE, "//ds:X509Certificate", keyE).getFirstChild().getNodeValue());
keyE.removeChild(XPathAPI.selectSingleNode(keyE, "//ds:X509Data", keyE));

NodeList chl = keyE.getChildNodes();
for (int i = 0; i < chl.getLength(); i++) {
keyE.removeChild(chl.item(i));
}
Node str = keyE.appendChild(doc.createElementNS("http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd", "wsse:SecurityTokenReference"));
Element strRef = (Element)str.appendChild(doc.createElementNS("http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd", "wsse:Reference"));
strRef.setAttribute("ValueType", "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3");
strRef.setAttribute("URI", "#SenderCertificate");
header.getSecurityHeader().appendChild(sigE);


Есть идеи что не так?
Offline alee  
#6 Оставлено : 14 ноября 2012 г. 19:55:46(UTC)
alee

Статус: Новичок

Группы: Участники
Зарегистрирован: 14.11.2012(UTC)
Сообщений: 6

для ГОСТа использую :

setProvider(new ru.CryptoPro.JCPxml.dsig.internal.dom.XMLDSigRI());
setDigestMethod("http://www.w3.org/2001/04/xmldsig-more#gostr3411");
setSignatureMethod("http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411");
setSigFactory( XMLSignatureFactory.getInstance("DOM", getProvider()));

Offline Евгений Афанасьев  
#7 Оставлено : 14 ноября 2012 г. 20:26:22(UTC)
Евгений Афанасьев

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 06.12.2008(UTC)
Сообщений: 3,977
Российская Федерация
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 21 раз
Поблагодарили: 708 раз в 669 постах
В вашем примере убрал
Код:

((Element) XPathAPI.selectSingleNode(token, "//*[@wsu:id='"+"body"+"']")).setIdAttribute( "wsu:id", true);


а в шаблоне вместо wsu:id сделал wsu:Id

СМЭВ вернул ок.

Отредактировано пользователем 14 ноября 2012 г. 20:28:31(UTC)  | Причина: Не указана

Offline alee  
#8 Оставлено : 14 ноября 2012 г. 20:30:53(UTC)
alee

Статус: Новичок

Группы: Участники
Зарегистрирован: 14.11.2012(UTC)
Сообщений: 6

Это просто фантастика!
Премного благодарна Applause
Offline alee  
#9 Оставлено : 20 ноября 2012 г. 18:26:32(UTC)
alee

Статус: Новичок

Группы: Участники
Зарегистрирован: 14.11.2012(UTC)
Сообщений: 6

Такой вопрос, может кто сталкивался...

При формировании подписи генерится структура типа :

<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
<SignedInfo>
...

А сервис требует ,чтоб у элемента <Signature> было другое пространство имен , т.е. в результате должно получиться :

<Signature>
<SignedInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
...

Есть методы, позволяющие установить namespace для <Signature> до генерации подписи? Что-то ничего найти не могу такого
Пробовала создавать <Signature> без ns и копировать туда сформированные дочерние элементы, но подпись ломается.


Максимум какой получился валидный вариант:
<Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<ds:SignedInfo>
...

Но, судя по ответу сервера ,он не равнозначен <Signature><SignedInfo xmlns="http://www.w3.org/2000/09/xmldsig#"> :(

Отредактировано пользователем 21 ноября 2012 г. 14:17:22(UTC)  | Причина: Не указана

RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.