wss4j を使用して SOAP ヘッダーで X509 に署名すると、例外が発生します。私のコードはここにあります:
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setNamespaceAware(true);
Document document = msg.getSOAPPart().getEnvelope().getOwnerDocument();
Crypto crypto = CryptoFactory.getInstance();
WSSecSignature signature = new WSSecSignature();
WSSecHeader secuHeader = new WSSecHeader("",false);
secuHeader.insertSecurityHeader(document);
String user = "16c73ab6-b892-458f-abf5-2f875f74882e";
String password ="security";
signature.setUserInfo(user, password);
signature.setKeyIdentifierType(WSConstants.X509_KEY_IDENTIFIER);
signature.build(document, crypto, secuHeader);
wss4j でデフォルトの crypto.properties を使用するだけです。ただし、例外が存在します。
Exception in thread "main" java.lang.AssertionError: UNIMPLEMENTED
at weblogic.xml.domimpl.ElementBase.setIdAttributeNS(ElementBase.java:327)
at org.jcp.xml.dsig.internal.dom.DOMUtils.setAttributeID(Unknown Source)
at org.jcp.xml.dsig.internal.dom.DOMKeyInfo.marshal(Unknown Source)
at org.jcp.xml.dsig.internal.dom.DOMKeyInfo.marshal(Unknown Source)
at org.jcp.xml.dsig.internal.dom.DOMXMLSignature.marshal(Unknown Source)
at org.jcp.xml.dsig.internal.dom.DOMXMLSignature.sign(Unknown Source)
at org.apache.ws.security.message.WSSecSignature.computeSignature(WSSecSignature.java:554)
at org.apache.ws.security.message.WSSecSignature.computeSignature(WSSecSignature.java:479)
at org.apache.ws.security.message.WSSecSignature.build(WSSecSignature.java:385)
この例外を解決する方法を知りたいです。ご協力いただきありがとうございます!