Hi there,
I am using Geronimo and have a JAXRPC Web service running. Now I am
trying to get it secured...
I am new to WSS4J and I am trying to get the WSSignEnvelope and
WSEncryptEnvelope running. I am following the API description and
through some googling I found out that one has to instantiate the
WSSecurityEngine and use the .setUserInfo() method on the above Objects
to get it going. It took quite a while until I got that far since this
was unfortunately not included in the code examples at
http://ws.apache.org/wss4j/api.html.
Now I am getting the following exception: "Invocation arguments were
modified".
What am I doing wrong here?
Any help would be greatly appreciated!
Thanks in advance.
Stefan
Here are the error and implementation details:
AxisFault
faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
faultSubcode:
faultString: java.lang.RuntimeException: Invocation arguments were modified
faultActor:
faultNode:
faultDetail:
{http://xml.apache.org/axis/}stackTrace:java.lang.RuntimeException:
Invocation arguments were modified
at
org.apache.axis.handlers.HandlerChainImpl.postInvoke(HandlerChainImpl.java:203)
at
org.apache.axis.handlers.HandlerChainImpl.handleResponse(HandlerChainImpl.java:173)
at
org.apache.axis.handlers.soap.SOAPService.invoke(SOAPService.java:466)
....
java.lang.RuntimeException: Invocation arguments were modified
at org.apache.axis.AxisFault.makeFault(AxisFault.java:101)
at
org.apache.axis.handlers.soap.SOAPService.invoke(SOAPService.java:479)
The code:
public class SecurityHandler extends GenericHandler {
QName qn[] = null;
static final WSSecurityEngine wsse = new
WSSecurityEngine().getInstance(WSSConfig.getDefaultWSConfig());
public void init(HandlerInfo info) {
qn = info.getHeaders();
}
public QName[] getHeaders() {
return qn;
}
public boolean handleResponse(MessageContext msgContext) {
try {
SOAPMessageContext smc = (SOAPMessageContext) msgContext;
SOAPMessage msg = smc.getMessage();
SOAPPart sp = msg.getSOAPPart();
// wsse.setPrecisionInMilliSeconds(true);
Document envelope = sp.getEnvelope().getOwnerDocument();
SOAPConstants soapConstants =
WSSecurityUtil.getSOAPConstants(envelope.getDocumentElement());
WSSignEnvelope signer = new WSSignEnvelope();
Crypto crypto = CryptoFactory.getInstance("crypto.properties");
//
//
signer.setUserInfo("16c73ab6-b892-458f-abf5-2f875f74882e","security");
// Vector parts = new Vector();
// WSEncryptionPart part = new
// WSEncryptionPart(soapConstants.getBodyQName().getLocalPart(),
// soapConstants.getEnvelopeURI(),
// "Content");
// parts.add(part);
// signer.setParts(parts); // this is optional since the body is
// signed by default
// envelope = signer.build(envelope, crypto);
//
WSEncryptBody encryptor = new WSEncryptBody();
encryptor.setUserInfo("16c73ab6-b892-458f-abf5-2f875f74882e", "security");
envelope = encryptor.build(envelope, crypto);
} catch (Exception e) {
e.printStackTrace();
}
return true;
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]