Статус: Новичок
Группы: Участники
Зарегистрирован: 05.03.2013(UTC) Сообщений: 2 Откуда: Москва
|
Здравствуйте, Формирую подпись запроса в СМЭВ (опирался на http://www.cryptopro.ru/...lzovaniem-kriptopro-jcp)В простом standalone Java-приложении все работает корректно. При работе web-сервиса же в WebLogic получаю следующую исключительную ситуацию: Цитата: EJB Exception: : java.lang.AssertionError: UNIMPLEMENTED at weblogic.xml.domimpl.DocumentImpl.getElementById(DocumentImpl.java:407) at org.apache.xml.security.utils.resolver.implementations.ResolverFragment.engineResolve(ResolverFragment.java:83) at org.apache.xml.security.utils.resolver.ResourceResolver.resolve(ResourceResolver.java:279) at ru.CryptoPro.JCPxml.dsig.internal.dom.DOMURIDereferencer.dereference(DOMURIDereferencer.java:97) at ru.CryptoPro.JCPxml.dsig.internal.dom.DOMReference.dereference(DOMReference.java:395) at ru.CryptoPro.JCPxml.dsig.internal.dom.DOMReference.digest(DOMReference.java:329) at ru.CryptoPro.JCPxml.dsig.internal.dom.DOMXMLSignature.digestReference(DOMXMLSignature.java:453) at ru.CryptoPro.JCPxml.dsig.internal.dom.DOMXMLSignature.sign(DOMXMLSignature.java:352) ...
Код:
MessageFactory mf = MessageFactory.newInstance();
SOAPMessage message = mf.createMessage();
SOAPPart soapPart = message.getSOAPPart();
WSSecHeader header = new WSSecHeader();
header.setActor("http://smev.gosuslugi.ru/actors/smev");
header.setMustUnderstand(false);
header.insertSecurityHeader(env.getOwnerDocument());
Element token = header.getSecurityHeader();
KeyStore keyStore = KeyStore.getInstance(JCP.HD_STORE_NAME);
keyStore.load(null, null);
PrivateKey privateKey = (PrivateKey)keyStore.getKey(privateKey, privateKeyPass.toCharArray());
X509Certificate cert = (X509Certificate)keyStore.getCertificate(cert);
Document doc = message.getSOAPPart().getEnvelope().getOwnerDocument();
Provider xmlDSigProvider = new ru.CryptoPro.JCPxml.dsig.internal.dom.XMLDSigRI();
final Transforms transforms = new Transforms(doc);
transforms.addTransform(Transforms.TRANSFORM_C14N_EXCL_OMIT_COMMENTS);
XMLSignatureFactory fac = XMLSignatureFactory.getInstance("DOM", xmlDSigProvider);
//преобразования над узлом ds:SignedInfo
List<Transform> transformList = new ArrayList<Transform>();
Transform trasformC14N = fac.newTransform(Transforms.TRANSFORM_C14N_EXCL_OMIT_COMMENTS, (XMLStructure) null);
transformList.add(trasformC14N);
//ссылка на подписываемые данные с алгоритмом хэширования ГОСТ 34.11 (узел body)
Reference ref = fac.newReference("#body", fac.newDigestMethod("http://www.w3.org/2001/04/xmldsig-more#gostr3411", null), transformList, null, null);
//задаем алгоритм подписи
SignedInfo si = fac.newSignedInfo(
fac.newCanonicalizationMethod(CanonicalizationMethod.EXCLUSIVE,(C14NMethodParameterSpec) null),
fac.newSignatureMethod("http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411", null),
Collections.singletonList(ref));
//в качестве алгоритма хэширования был задан алгоритм ГОСТ Р 34.11-94,
//а алгоритма подписи — ГОСТ Р 34.10-2001.
//создаем узел ds:KeyInfo с информацией о сертификате
KeyInfoFactory kif = fac.getKeyInfoFactory();
X509Data x509d = kif.newX509Data(Collections.singletonList((X509Certificate) cert));
KeyInfo ki = kif.newKeyInfo(Collections.singletonList(x509d));
XMLSignature sig = fac.newXMLSignature(si, ki);
DOMSignContext signContext = new DOMSignContext((Key) privateKey, token);
sig.sign(signContext); //ошибка происходит на этой строке
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 01.02.2013(UTC) Сообщений: 2
|
У WLS походу своя недоделанная реализация xml парсера. Обрати внимание на at weblogic.xml.domimpl.DocumentImpl.getElementById(DocumentImpl.java:407) добавь параметр в setDomainEnv.cmd -Djavax.xml.soap.MessageFactory=com.sun.xml.internal.messaging.saaj.soap.ver1_1.SOAPMessageFactory1_1Impl
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close