Hi
all
I am new to web
services and security. This is my academic project and your help is highly
appreciated.
I am using Tomcat
5.5, Axis 1.4 and WSS4J 1.5. I am trying to implement XML Encryption. My client doesnot use
wss4j Axis handlers "WSDoAllReceiver" and "WSDoAllSender" and it is not deployed
using deployment descriptors. I implemented XML encryption using WSSecEncrypt
classes. So I create the encrypted SOAP request myself. I created the keys using
the Java keytool and self certified them. My keystore is placed at the client
folder.
My server is a
simple Hello world service which is deployed using the deployment
descriptor.
<deployment
xmlns="http://xml.apache.org/axis/wsdd/"
xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
<service name="HelloWorldService" provider="java:RPC">
<requestFlow>
<handler type="soapmonitor"/>
<handler type="java:org.apache.ws.axis.security.WSDoAllReceiver">
<parameter name="action" value="Encrypt" />
<parameter name="passwordCallbackClass" value="PWCallback" />
<parameter name="decryptionPropFile" value="crypto.properties" />
</handler>
</requestFlow>
<responseFlow>
<handler type="soapmonitor"/>
</responseFlow>
<parameter name="className" value="HelloWorldService"/>
<parameter name="allowedMethods" value="*"/>
<parameter name="scope" value="application"/>
</service>
</deployment>
<service name="HelloWorldService" provider="java:RPC">
<requestFlow>
<handler type="soapmonitor"/>
<handler type="java:org.apache.ws.axis.security.WSDoAllReceiver">
<parameter name="action" value="Encrypt" />
<parameter name="passwordCallbackClass" value="PWCallback" />
<parameter name="decryptionPropFile" value="crypto.properties" />
</handler>
</requestFlow>
<responseFlow>
<handler type="soapmonitor"/>
</responseFlow>
<parameter name="className" value="HelloWorldService"/>
<parameter name="allowedMethods" value="*"/>
<parameter name="scope" value="application"/>
</service>
</deployment>
My PWCallback.java
is same as that of org.apache.ws.axis.oasis.PWCallback, I just changed the
password as that of the one in my keystore. I compiled the PWCallback.java and
placed the class files in TOMCAT_HOME\webapps\axis\WEB-INF\classes
folder.
When I run my client
I am getting this exception:
AxisFault
faultCode: {http://www.w3.org/2003/05/soap-envelope}Server.generalException
faultSubcode:
faultString: WSHandler: no reference in callback property; nested exception is:
faultCode: {http://www.w3.org/2003/05/soap-envelope}Server.generalException
faultSubcode:
faultString: WSHandler: no reference in callback property; nested exception is:
org.apache.ws.security.WSSecurityException: WSHandler: no reference in
c
allback property
faultActor:
faultNode:
faultDetail:
{http://xml.apache.org/axis/}stackTrace:WSHandler: no reference in callb
ack property; nested exception is:
org.apache.ws.security.WSSecurityException: WSHandler: no reference in c
allback property
at org.apache.axis.message.SOAPFaultBuilder.createFault(SOAPFaultBuilder
.java:222)
at org.apache.axis.message.SOAPFaultBuilder.endElement(SOAPFaultBuilder.
java:129)
.....
allback property
faultActor:
faultNode:
faultDetail:
{http://xml.apache.org/axis/}stackTrace:WSHandler: no reference in callb
ack property; nested exception is:
org.apache.ws.security.WSSecurityException: WSHandler: no reference in c
allback property
at org.apache.axis.message.SOAPFaultBuilder.createFault(SOAPFaultBuilder
.java:222)
at org.apache.axis.message.SOAPFaultBuilder.endElement(SOAPFaultBuilder.
java:129)
.....
What am I missing
here? I understand the problem is with setting up the password callback class.
How do I deploy it? Where do I deploy it?
Please
help.
Thanks
Vignesh.
