Hi Wan,
Please remove :
<optimizeParts>//xenc:EncryptedData/xenc:CipherData/xenc:CipherValue</optimizeParts>
entry from your rampart configuration parameters and try again.
Thanks,
Ruchith
On 7/20/06, Wan Kaveevivitchai <[EMAIL PROTECTED]> wrote:
Dear All,
I have been trying to combine the test about sending file and
securing message.
My environment is Axis2 v1.0, nightly build released 4 June 06 on the
Jetty Servlet.
From other individual test such as sending text file, and security
sample had no problem on this, however with the combination one i got the
following error.
Client code:
/*
* Created on 19.07.2006
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/
package security;
/**
* @author alice3
*
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Style - Code Templates
*/
import org.apache.axiom.om.OMAbstractFactory;
import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.OMFactory;
import org.apache.axiom.om.OMNamespace;
import org.apache.axiom.om.OMText;
import org.apache.axis2.AxisFault;
import org.apache.axis2.Constants;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.Options;
import org.apache.axis2.client.ServiceClient;
import org.apache.axis2.context.ConfigurationContext;
import org.apache.axis2.context.ConfigurationContextFactory;
//import org.apache.axis2.soapmonitor.*;
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.xml.namespace.QName;
import javax.xml.stream.XMLOutputFactory;
import javax.xml.stream.XMLStreamException;
import java.io.File;
import java.io.StringWriter;
public class SecureClient {
private File inputFile = null;
private QName operationName = new QName("fileSecurity");
public static void main(String[] args) {
try {
// Get the repository location from the args
String repo = args[0];
String port = args[1];
OMElement payload =
getEchoElement("/users/alice3/myDoc/Jettty6-Axis2.txt");
ConfigurationContext configContext =
ConfigurationContextFactory.createConfigurationContextFromFileSystem(repo,
null);
ServiceClient serviceClient = new ServiceClient(configContext,
null);
Options options = new Options();
options.setTo(new EndpointReference("http://127.0.0.1:" + port +
"/axis2/services/FileSecurity"));
//options.setTo(new
EndpointReference("http://localhost:8080/axis2_new/services/SecureService"));
options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
options.setProperty(Constants.Configuration.ENABLE_MTOM,
Constants.VALUE_TRUE);
options.setAction("urn:fileSecurity");
serviceClient.setOptions(options);
//Blocking invocation
OMElement result = serviceClient.sendReceive(payload);
StringWriter writer = new StringWriter();
result.serialize(XMLOutputFactory.newInstance()
.createXMLStreamWriter(writer));
writer.flush();
//System.out.println("Response: " + writer.toString());
System.out.println("SecureService Invocation successful :-)");
} catch (AxisFault axisFault) {
axisFault.printStackTrace();
} catch (XMLStreamException e) {
e.printStackTrace();
}
}
private static OMElement getEchoElement(String fileName) {
DataHandler dh;
OMFactory fac = OMAbstractFactory.getOMFactory();
OMNamespace omNs =
fac.createOMNamespace("http://ws.apache.org/axis2/xsd", "example1");
OMElement data = fac.createOMElement("fileSecurity", omNs);
OMElement input = fac.createOMElement("file", omNs);
OMElement pack = fac.createOMElement("pack", omNs);
FileDataSource f1 = new FileDataSource(fileName);
dh = new DataHandler(f1);
OMElement filename = fac.createOMElement("fileName", omNs);
// OMText textName = fac.createOMText(filename, "myFile.txt");
OMText textData = fac.createOMText(dh, true);
input.addChild(textData);
pack.addChild(filename);
pack.addChild(input);
data.addChild(pack);
//System.out.println(data);
return data;
}
}
server code:
public class fileS {
public OMElement fileSecurity(OMElement element) throws Exception
{
//System.out.println(element);
element.build();
element.detach();
Iterator children = element.getChildElements();
OMElement name = (OMElement)children.next(); //get
name of the file,
first element of element
OMElement content = (OMElement)children.next(); //get text
that
contains the file, second element
System.out.println("before creating OMText");
OMText fnode = (OMText)content.getFirstOMChild();
System.out.println("after creating OMText");
// fnode.setOptimize(true);
//String fname = name.getText();
//create data handler to extract the data handler of the OMText
DataHandler dfile;
System.out.println("before getDataHandler from OMText");
//String cid = fnode.getContentID();
//System.out.println(cid);
dfile = (DataHandler)fnode.getDataHandler();
//getDataHandler() and
broken pipe
System.out.println("after create datahandler for OMText");
FileOutputStream outfile = new FileOutputStream(new
File("/users/alice3/myFile"));
System.out.println("after create a fileoutputstream");
dfile.writeTo(outfile);
System.out.println("after writeTo()");
//System.out.println("Successful Operation!");
OMFactory fac = OMAbstractFactory.getOMFactory();
OMNamespace ns = fac.createOMNamespace("urn://fakenamespace", "ns");
OMElement ele = fac.createOMElement("response", ns);
ele.setText("Data Saved");
return ele;
}
}
services.xml:
<service name="FileSecurity" >
<description>
This is my service for sending file over server-client with
security
setting
</description>
<parameter locked="false" name="ServiceClass" >security.fileS</parameter>
<operation name="fileSecurity" >
<messageReceiver
class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
</operation>
<parameter name="InflowSecurity" >
<action>
<items>Timestamp Signature Encrypt</items>
<passwordCallbackClass>security.PWCallback</passwordCallbackClass>
<signaturePropFile>sec.properties</signaturePropFile>
</action>
</parameter>
<parameter name="OutflowSecurity" >
<action>
<items>Timestamp Signature Encrypt</items>
<user>bob</user>
<passwordCallbackClass>security.PWCallback</passwordCallbackClass>
<signaturePropFile>sec.properties</signaturePropFile>
<signatureKeyIdentifier>SKIKeyIdentifier</signatureKeyIdentifier>
<encryptionKeyIdentifier>SKIKeyIdentifier</encryptionKeyIdentifier>
<encryptionUser>alice</encryptionUser>
<optimizeParts>//xenc:EncryptedData/xenc:CipherData/xenc:CipherValue</optimizeParts>
</action>
</parameter>
</service>
and the .aar package is constucted as follow
security/
security/PWCallback.class
security/fileS.class
META-INF/
META-INF/services.xml
sec.jks
sec.properties
and the result i get from the TCPMON is that at the server side
HTTP/1.1 500 INTERNAL%5FSERVER%5FERROR
Expires: Thu, 01 Jan 1970 00:00:00 GMT
Set-Cookie: JSESSIONID=2217shn5dgknb;path=/axis2
Content-Type: multipart/related;
boundary=MIMEBoundaryurn_uuid_18DA9EF1316848D89311533845942031;
type="application/xop+xml";
start="<0.urn:uuid:[EMAIL PROTECTED]>";
start-info="text/xml"; charset=UTF-8
Transfer-Encoding: chunked
Server: Jetty(6.0.x)
2DA
--MIMEBoundaryurn_uuid_18DA9EF1316848D89311533845942031
content-type:application/xop+xml; charset=UTF-8; type="text/xml";
content-transfer-encoding:binary
content-id:<0.urn:uuid:[EMAIL PROTECTED]>
<?xml version='1.0' encoding='UTF-8'?><soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:wsa="http://www.w3.org/2005/08/addressing"><soapenv:Header><wsa:ReplyTo><wsa:Address>http://www.w3.org/2005/08/addressing/anonymous</wsa:Address></wsa:ReplyTo><wsa:MessageID>urn:uuid:EE59E38396186D1F1211533845941701</wsa:MessageID><wsa:Action>http://www.w3.org/2005/08/addressing/fault</wsa:Action></soapenv:Header><soapenv:Body><soapenv:Fault><faultcode>soapenv:Client</faultcode>
35B
--MIMEBoundaryurn_uuid_18DA9EF1316848D89311533845942031----MIMEBoundaryurn_uuid_18DA9EF1316848D89311533845942031
content-type:application/xop+xml; charset=UTF-8; type="text/xml";
content-transfer-encoding:binary
content-id:<0.urn:uuid:[EMAIL PROTECTED]>
<?xml version='1.0' encoding='UTF-8'?><soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:wsa="http://www.w3.org/2005/08/addressing"><soapenv:Header><wsa:ReplyTo><wsa:Address>http://www.w3.org/2005/08/addressing/anonymous</wsa:Address></wsa:ReplyTo><wsa:MessageID>urn:uuid:EE59E38396186D1F1211533845941701</wsa:MessageID><wsa:Action>http://www.w3.org/2005/08/addressing/fault</wsa:Action></soapenv:Header><soapenv:Body><soapenv:Fault><faultcode>soapenv:Client</faultcode><faultstring>WSDoAllReceiver:
security processing failed</faultstring>
1383
--MIMEBoundaryurn_uuid_18DA9EF1316848D89311533845942031----MIMEBoundaryurn_uuid_18DA9EF1316848D89311533845942031
content-type:application/xop+xml; charset=UTF-8; type="text/xml";
content-transfer-encoding:binary
content-id:<0.urn:uuid:[EMAIL PROTECTED]>
<?xml version='1.0' encoding='UTF-8'?><soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:wsa="http://www.w3.org/2005/08/addressing"><soapenv:Header><wsa:ReplyTo><wsa:Address>http://www.w3.org/2005/08/addressing/anonymous</wsa:Address></wsa:ReplyTo><wsa:MessageID>urn:uuid:EE59E38396186D1F1211533845941701</wsa:MessageID><wsa:Action>http://www.w3.org/2005/08/addressing/fault</wsa:Action></soapenv:Header><soapenv:Body><soapenv:Fault><faultcode>soapenv:Client</faultcode><faultstring>WSDoAllReceiver:
security processing
failed</faultstring><detail><Exception>org.apache.axis2.AxisFault:
WSDoAllReceiver: security processing failed; nested exception is:
org.apache.ws.security.WSSecurityException: Cannot encrypt/decrypt data;
nested exception is:
org.apache.xml.security.encryption.XMLEncryptionException: Error while
decoding
Original Exception was
org.apache.xml.security.exceptions.Base64DecodingException: Error while
decoding
at
org.apache.axis2.security.WSDoAllReceiver.processMessage(WSDoAllReceiver.java:183)
at
org.apache.axis2.security.handler.WSDoAllHandler.invoke(WSDoAllHandler.java:82)
at org.apache.axis2.engine.Phase.invoke(Phase.java:380)
at org.apache.axis2.engine.AxisEngine.invoke(AxisEngine.java:499)
at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:469)
at
org.apache.axis2.transport.http.HTTPTransportUtils.processHTTPPostRequest(HTTPTransportUtils.java:284)
at
org.apache.axis2.transport.http.AxisServlet.doPost(AxisServlet.java:144)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:767)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:860)
at
org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:423)
at
org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:355)
at
org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:219)
at
org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:542)
at
org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:145)
at
org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:126)
at
org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:119)
at org.mortbay.jetty.Server.handle(Server.java:245)
at
org.mortbay.jetty.HttpConnection.handlerRequest(HttpConnection.java:365)
at org.mortbay.jetty.HttpConnection.access$1500(HttpConnection.java:38)
at
org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:623)
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:690)
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:196)
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:296)
at
org.mortbay.jetty.nio.SelectChannelConnector$HttpEndPoint.run(SelectChannelConnector.java:740)
at
org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:435)
Caused by: org.apache.ws.security.WSSecurityException: Cannot
encrypt/decrypt data; nested exception is:
org.apache.xml.security.encryption.XMLEncryptionException: Error while
decoding
Original Exception was
org.apache.xml.security.exceptions.Base64DecodingException: Error while
decoding
at
org.apache.ws.security.processor.EncryptedKeyProcessor.decryptDataRef(EncryptedKeyProcessor.java:404)
at
org.apache.ws.security.processor.EncryptedKeyProcessor.handleEncryptedKey(EncryptedKeyProcessor.java:328)
at
org.apache.ws.security.processor.EncryptedKeyProcessor.handleEncryptedKey(EncryptedKeyProcessor.java:84)
at
org.apache.ws.security.processor.EncryptedKeyProcessor.handleToken(EncryptedKeyProcessor.java:76)
at
org.apache.ws.security.WSSecurityEngine.processSecurityHeader(WSSecurityEngine.java:269)
at
org.apache.ws.security.WSSecurityEngine.processSecurityHeader(WSSecurityEngine.java:191)
at
org.apache.axis2.security.WSDoAllReceiver.processMessage(WSDoAllReceiver.java:180)
... 24 more
Caused by: org.apache.xml.security.encryption.XMLEncryptionException: Error
while decoding
Original Exception was
org.apache.xml.security.exceptions.Base64DecodingException: Error while
decoding
at
org.apache.xml.security.encryption.XMLCipherInput.getDecryptBytes(Unknown
Source)
at org.apache.xml.security.encryption.XMLCipherInput.getBytes(Unknown
Source)
at
org.apache.xml.security.encryption.XMLCipher.decryptToByteArray(Unknown
Source)
at org.apache.xml.security.encryption.XMLCipher.decryptElement(Unknown
Source)
at
org.apache.xml.security.encryption.XMLCipher.decryptElementContent(Unknown
Source)
at org.apache.xml.security.encryption.XMLCipher.doFinal(Unknown Source)
at
org.apache.ws.security.processor.EncryptedKeyProcessor.decryptDataRef(EncryptedKeyProcessor.java:402)
... 30 more
</Exception></detail>
13B5
--MIMEBoundaryurn_uuid_18DA9EF1316848D89311533845942031----MIMEBoundaryurn_uuid_18DA9EF1316848D89311533845942031
content-type:application/xop+xml; charset=UTF-8; type="text/xml";
content-transfer-encoding:binary
content-id:<0.urn:uuid:[EMAIL PROTECTED]>
<?xml version='1.0' encoding='UTF-8'?><soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:wsa="http://www.w3.org/2005/08/addressing"><soapenv:Header><wsa:ReplyTo><wsa:Address>http://www.w3.org/2005/08/addressing/anonymous</wsa:Address></wsa:ReplyTo><wsa:MessageID>urn:uuid:EE59E38396186D1F1211533845941701</wsa:MessageID><wsa:Action>http://www.w3.org/2005/08/addressing/fault</wsa:Action></soapenv:Header><soapenv:Body><soapenv:Fault><faultcode>soapenv:Client</faultcode><faultstring>WSDoAllReceiver:
security processing
failed</faultstring><detail><Exception>org.apache.axis2.AxisFault:
WSDoAllReceiver: security processing failed; nested exception is:
org.apache.ws.security.WSSecurityException: Cannot encrypt/decrypt data;
nested exception is:
org.apache.xml.security.encryption.XMLEncryptionException: Error while
decoding
Original Exception was
org.apache.xml.security.exceptions.Base64DecodingException: Error while
decoding
at
org.apache.axis2.security.WSDoAllReceiver.processMessage(WSDoAllReceiver.java:183)
at
org.apache.axis2.security.handler.WSDoAllHandler.invoke(WSDoAllHandler.java:82)
at org.apache.axis2.engine.Phase.invoke(Phase.java:380)
at org.apache.axis2.engine.AxisEngine.invoke(AxisEngine.java:499)
at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:469)
at
org.apache.axis2.transport.http.HTTPTransportUtils.processHTTPPostRequest(HTTPTransportUtils.java:284)
at
org.apache.axis2.transport.http.AxisServlet.doPost(AxisServlet.java:144)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:767)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:860)
at
org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:423)
at
org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:355)
at
org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:219)
at
org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:542)
at
org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:145)
at
org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:126)
at
org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:119)
at org.mortbay.jetty.Server.handle(Server.java:245)
at
org.mortbay.jetty.HttpConnection.handlerRequest(HttpConnection.java:365)
at org.mortbay.jetty.HttpConnection.access$1500(HttpConnection.java:38)
at
org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:623)
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:690)
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:196)
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:296)
at
org.mortbay.jetty.nio.SelectChannelConnector$HttpEndPoint.run(SelectChannelConnector.java:740)
at
org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:435)
Caused by: org.apache.ws.security.WSSecurityException: Cannot
encrypt/decrypt data; nested exception is:
org.apache.xml.security.encryption.XMLEncryptionException: Error while
decoding
Original Exception was
org.apache.xml.security.exceptions.Base64DecodingException: Error while
decoding
at
org.apache.ws.security.processor.EncryptedKeyProcessor.decryptDataRef(EncryptedKeyProcessor.java:404)
at
org.apache.ws.security.processor.EncryptedKeyProcessor.handleEncryptedKey(EncryptedKeyProcessor.java:328)
at
org.apache.ws.security.processor.EncryptedKeyProcessor.handleEncryptedKey(EncryptedKeyProcessor.java:84)
at
org.apache.ws.security.processor.EncryptedKeyProcessor.handleToken(EncryptedKeyProcessor.java:76)
at
org.apache.ws.security.WSSecurityEngine.processSecurityHeader(WSSecurityEngine.java:269)
at
org.apache.ws.security.WSSecurityEngine.processSecurityHeader(WSSecurityEngine.java:191)
at
org.apache.axis2.security.WSDoAllReceiver.processMessage(WSDoAllReceiver.java:180)
... 24 more
Caused by: org.apache.xml.security.encryption.XMLEncryptionException: Error
while decoding
Original Exception was
org.apache.xml.security.exceptions.Base64DecodingException: Error while
decoding
at
org.apache.xml.security.encryption.XMLCipherInput.getDecryptBytes(Unknown
Source)
at org.apache.xml.security.encryption.XMLCipherInput.getBytes(Unknown
Source)
at
org.apache.xml.security.encryption.XMLCipher.decryptToByteArray(Unknown
Source)
at org.apache.xml.security.encryption.XMLCipher.decryptElement(Unknown
Source)
at
org.apache.xml.security.encryption.XMLCipher.decryptElementContent(Unknown
Source)
at org.apache.xml.security.encryption.XMLCipher.doFinal(Unknown Source)
at
org.apache.ws.security.processor.EncryptedKeyProcessor.decryptDataRef(EncryptedKeyProcessor.java:402)
... 30 more
</Exception></detail></soapenv:Fault></soapenv:Body></soapenv:Envelope>
3B
--MIMEBoundaryurn_uuid_18DA9EF1316848D89311533845942031--
0
The client side message seems to be ok, with all the encypted
document.
Is there any idea what can cause the fault? Greatly appreciate,
Wan
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
--
www.ruchith.org
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]